@tanstack/table-core 8.16.0 → 9.0.0-alpha.0

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 (261) hide show
  1. package/dist/cjs/aggregationFns.cjs +98 -0
  2. package/dist/cjs/aggregationFns.cjs.map +1 -0
  3. package/dist/cjs/aggregationFns.d.cts +14 -0
  4. package/dist/cjs/columnHelper.cjs +19 -0
  5. package/dist/cjs/columnHelper.cjs.map +1 -0
  6. package/dist/cjs/columnHelper.d.cts +9 -0
  7. package/dist/cjs/core/cell.cjs +38 -0
  8. package/dist/cjs/core/cell.cjs.map +1 -0
  9. package/dist/cjs/core/cell.d.cts +50 -0
  10. package/dist/cjs/core/column.cjs +81 -0
  11. package/dist/cjs/core/column.cjs.map +1 -0
  12. package/dist/cjs/core/column.d.cts +56 -0
  13. package/dist/cjs/core/headers.cjs +310 -0
  14. package/dist/cjs/core/headers.cjs.map +1 -0
  15. package/dist/cjs/core/headers.d.cts +195 -0
  16. package/dist/cjs/core/row.cjs +93 -0
  17. package/dist/cjs/core/row.cjs.map +1 -0
  18. package/dist/cjs/core/row.d.cts +92 -0
  19. package/dist/cjs/core/table.cjs +228 -0
  20. package/dist/cjs/core/table.cjs.map +1 -0
  21. package/dist/cjs/core/table.d.cts +221 -0
  22. package/dist/cjs/features/ColumnFaceting.cjs +29 -0
  23. package/dist/cjs/features/ColumnFaceting.cjs.map +1 -0
  24. package/dist/cjs/features/ColumnFaceting.d.cts +35 -0
  25. package/dist/cjs/features/ColumnFiltering.cjs +137 -0
  26. package/dist/cjs/features/ColumnFiltering.cjs.map +1 -0
  27. package/dist/cjs/features/ColumnFiltering.d.cts +195 -0
  28. package/dist/cjs/features/ColumnGrouping.cjs +134 -0
  29. package/dist/cjs/features/ColumnGrouping.cjs.map +1 -0
  30. package/dist/cjs/features/ColumnGrouping.d.cts +202 -0
  31. package/dist/cjs/features/ColumnOrdering.cjs +76 -0
  32. package/dist/cjs/features/ColumnOrdering.cjs.map +1 -0
  33. package/dist/cjs/features/ColumnOrdering.d.cts +54 -0
  34. package/dist/cjs/features/ColumnPinning.cjs +145 -0
  35. package/dist/cjs/features/ColumnPinning.cjs.map +1 -0
  36. package/dist/cjs/features/ColumnPinning.d.cts +127 -0
  37. package/dist/cjs/features/ColumnSizing.cjs +308 -0
  38. package/dist/cjs/features/ColumnSizing.cjs.map +1 -0
  39. package/dist/cjs/features/ColumnSizing.d.cts +194 -0
  40. package/dist/cjs/features/ColumnVisibility.cjs +144 -0
  41. package/dist/cjs/features/ColumnVisibility.cjs.map +1 -0
  42. package/dist/cjs/features/ColumnVisibility.d.cts +130 -0
  43. package/dist/cjs/features/GlobalFaceting.cjs +29 -0
  44. package/dist/cjs/features/GlobalFaceting.cjs.map +1 -0
  45. package/dist/cjs/features/GlobalFaceting.d.cts +27 -0
  46. package/dist/cjs/features/GlobalFiltering.cjs +50 -0
  47. package/dist/cjs/features/GlobalFiltering.cjs.map +1 -0
  48. package/dist/cjs/features/GlobalFiltering.d.cts +80 -0
  49. package/dist/cjs/features/RowExpanding.cjs +154 -0
  50. package/dist/cjs/features/RowExpanding.cjs.map +1 -0
  51. package/dist/cjs/features/RowExpanding.d.cts +155 -0
  52. package/dist/cjs/features/RowPagination.cjs +162 -0
  53. package/dist/cjs/features/RowPagination.cjs.map +1 -0
  54. package/dist/cjs/features/RowPagination.d.cts +166 -0
  55. package/dist/cjs/features/RowPinning.cjs +133 -0
  56. package/dist/cjs/features/RowPinning.cjs.map +1 -0
  57. package/dist/cjs/features/RowPinning.d.cts +99 -0
  58. package/dist/cjs/features/RowSelection.cjs +298 -0
  59. package/dist/cjs/features/RowSelection.cjs.map +1 -0
  60. package/dist/cjs/features/RowSelection.d.cts +177 -0
  61. package/dist/cjs/features/RowSorting.cjs +201 -0
  62. package/dist/cjs/features/RowSorting.cjs.map +1 -0
  63. package/dist/cjs/features/RowSorting.d.cts +238 -0
  64. package/dist/cjs/filterFns.cjs +88 -0
  65. package/dist/cjs/filterFns.cjs.map +1 -0
  66. package/dist/cjs/filterFns.d.cts +14 -0
  67. package/{build/lib/index.js → dist/cjs/index.cjs} +36 -49
  68. package/dist/cjs/index.cjs.map +1 -0
  69. package/dist/cjs/index.d.cts +34 -0
  70. package/{build/lib/sortingFns.js → dist/cjs/sortingFns.cjs} +23 -52
  71. package/dist/cjs/sortingFns.cjs.map +1 -0
  72. package/dist/cjs/sortingFns.d.cts +12 -0
  73. package/dist/cjs/types.d.cts +120 -0
  74. package/{build/lib/utils/filterRowsUtils.js → dist/cjs/utils/filterRowsUtils.cjs} +34 -46
  75. package/dist/cjs/utils/filterRowsUtils.cjs.map +1 -0
  76. package/dist/cjs/utils/filterRowsUtils.d.cts +3 -0
  77. package/dist/cjs/utils/getCoreRowModel.cjs +54 -0
  78. package/dist/cjs/utils/getCoreRowModel.cjs.map +1 -0
  79. package/dist/cjs/utils/getCoreRowModel.d.cts +3 -0
  80. package/dist/cjs/utils/getExpandedRowModel.cjs +41 -0
  81. package/dist/cjs/utils/getExpandedRowModel.cjs.map +1 -0
  82. package/dist/cjs/utils/getExpandedRowModel.d.cts +8 -0
  83. package/dist/cjs/utils/getFacetedMinMaxValues.cjs +36 -0
  84. package/dist/cjs/utils/getFacetedMinMaxValues.cjs.map +1 -0
  85. package/dist/cjs/utils/getFacetedMinMaxValues.d.cts +3 -0
  86. package/dist/cjs/utils/getFacetedRowModel.cjs +35 -0
  87. package/dist/cjs/utils/getFacetedRowModel.cjs.map +1 -0
  88. package/dist/cjs/utils/getFacetedRowModel.d.cts +3 -0
  89. package/dist/cjs/utils/getFacetedUniqueValues.cjs +38 -0
  90. package/dist/cjs/utils/getFacetedUniqueValues.cjs.map +1 -0
  91. package/dist/cjs/utils/getFacetedUniqueValues.d.cts +3 -0
  92. package/dist/cjs/utils/getFilteredRowModel.cjs +116 -0
  93. package/dist/cjs/utils/getFilteredRowModel.cjs.map +1 -0
  94. package/dist/cjs/utils/getFilteredRowModel.d.cts +3 -0
  95. package/dist/cjs/utils/getGroupedRowModel.cjs +118 -0
  96. package/dist/cjs/utils/getGroupedRowModel.cjs.map +1 -0
  97. package/dist/cjs/utils/getGroupedRowModel.d.cts +3 -0
  98. package/dist/cjs/utils/getPaginationRowModel.cjs +49 -0
  99. package/dist/cjs/utils/getPaginationRowModel.cjs.map +1 -0
  100. package/dist/cjs/utils/getPaginationRowModel.d.cts +5 -0
  101. package/dist/cjs/utils/getSortedRowModel.cjs +91 -0
  102. package/dist/cjs/utils/getSortedRowModel.cjs.map +1 -0
  103. package/dist/cjs/utils/getSortedRowModel.d.cts +3 -0
  104. package/{build/lib/utils.js → dist/cjs/utils.cjs} +30 -41
  105. package/dist/cjs/utils.cjs.map +1 -0
  106. package/dist/cjs/utils.d.cts +39 -0
  107. package/{build/lib → dist/esm}/aggregationFns.d.ts +2 -1
  108. package/dist/esm/aggregationFns.js +98 -0
  109. package/dist/esm/aggregationFns.js.map +1 -0
  110. package/{build/lib → dist/esm}/columnHelper.d.ts +3 -2
  111. package/dist/esm/columnHelper.js +19 -0
  112. package/{build/lib → dist/esm}/columnHelper.js.map +1 -1
  113. package/{build/lib → dist/esm}/core/cell.d.ts +1 -0
  114. package/dist/esm/core/cell.js +38 -0
  115. package/{build/lib → dist/esm}/core/cell.js.map +1 -1
  116. package/{build/lib → dist/esm}/core/column.d.ts +1 -0
  117. package/dist/esm/core/column.js +81 -0
  118. package/{build/lib → dist/esm}/core/column.js.map +1 -1
  119. package/{build/lib → dist/esm}/core/headers.d.ts +1 -0
  120. package/dist/esm/core/headers.js +310 -0
  121. package/{build/lib → dist/esm}/core/headers.js.map +1 -1
  122. package/{build/lib → dist/esm}/core/row.d.ts +1 -0
  123. package/dist/esm/core/row.js +93 -0
  124. package/{build/lib → dist/esm}/core/row.js.map +1 -1
  125. package/{build/lib → dist/esm}/core/table.d.ts +1 -0
  126. package/dist/esm/core/table.js +228 -0
  127. package/{build/lib → dist/esm}/core/table.js.map +1 -1
  128. package/{build/lib → dist/esm}/features/ColumnFaceting.d.ts +1 -0
  129. package/{build/lib → dist/esm}/features/ColumnFaceting.js +5 -18
  130. package/{build/lib → dist/esm}/features/ColumnFaceting.js.map +1 -1
  131. package/{build/lib → dist/esm}/features/ColumnFiltering.d.ts +1 -0
  132. package/dist/esm/features/ColumnFiltering.js +137 -0
  133. package/{build/lib → dist/esm}/features/ColumnFiltering.js.map +1 -1
  134. package/{build/lib → dist/esm}/features/ColumnGrouping.d.ts +1 -0
  135. package/dist/esm/features/ColumnGrouping.js +134 -0
  136. package/{build/lib → dist/esm}/features/ColumnGrouping.js.map +1 -1
  137. package/{build/lib → dist/esm}/features/ColumnOrdering.d.ts +1 -0
  138. package/dist/esm/features/ColumnOrdering.js +76 -0
  139. package/{build/lib → dist/esm}/features/ColumnOrdering.js.map +1 -1
  140. package/{build/lib → dist/esm}/features/ColumnPinning.d.ts +1 -0
  141. package/dist/esm/features/ColumnPinning.js +145 -0
  142. package/{build/lib → dist/esm}/features/ColumnPinning.js.map +1 -1
  143. package/{build/lib → dist/esm}/features/ColumnSizing.d.ts +2 -1
  144. package/dist/esm/features/ColumnSizing.js +308 -0
  145. package/{build/lib → dist/esm}/features/ColumnSizing.js.map +1 -1
  146. package/{build/lib → dist/esm}/features/ColumnVisibility.d.ts +1 -0
  147. package/dist/esm/features/ColumnVisibility.js +144 -0
  148. package/{build/lib → dist/esm}/features/ColumnVisibility.js.map +1 -1
  149. package/{build/lib → dist/esm}/features/GlobalFaceting.d.ts +1 -0
  150. package/{build/lib → dist/esm}/features/GlobalFaceting.js +8 -21
  151. package/{build/lib → dist/esm}/features/GlobalFaceting.js.map +1 -1
  152. package/{build/lib → dist/esm}/features/GlobalFiltering.d.ts +1 -0
  153. package/dist/esm/features/GlobalFiltering.js +50 -0
  154. package/{build/lib → dist/esm}/features/GlobalFiltering.js.map +1 -1
  155. package/{build/lib → dist/esm}/features/RowExpanding.d.ts +1 -0
  156. package/{build/lib → dist/esm}/features/RowExpanding.js +40 -59
  157. package/{build/lib → dist/esm}/features/RowExpanding.js.map +1 -1
  158. package/{build/lib → dist/esm}/features/RowPagination.d.ts +1 -0
  159. package/dist/esm/features/RowPagination.js +162 -0
  160. package/{build/lib → dist/esm}/features/RowPagination.js.map +1 -1
  161. package/{build/lib → dist/esm}/features/RowPinning.d.ts +1 -0
  162. package/dist/esm/features/RowPinning.js +133 -0
  163. package/{build/lib → dist/esm}/features/RowPinning.js.map +1 -1
  164. package/{build/lib → dist/esm}/features/RowSelection.d.ts +1 -0
  165. package/dist/esm/features/RowSelection.js +298 -0
  166. package/{build/lib → dist/esm}/features/RowSelection.js.map +1 -1
  167. package/{build/lib → dist/esm}/features/RowSorting.d.ts +1 -0
  168. package/dist/esm/features/RowSorting.js +201 -0
  169. package/{build/lib → dist/esm}/features/RowSorting.js.map +1 -1
  170. package/{build/lib → dist/esm}/filterFns.d.ts +2 -1
  171. package/dist/esm/filterFns.js +88 -0
  172. package/dist/esm/filterFns.js.map +1 -0
  173. package/dist/esm/index.d.ts +34 -0
  174. package/dist/esm/index.js +87 -0
  175. package/dist/esm/index.js.map +1 -0
  176. package/{build/lib → dist/esm}/sortingFns.d.ts +2 -1
  177. package/dist/esm/sortingFns.js +91 -0
  178. package/dist/esm/sortingFns.js.map +1 -0
  179. package/{build/lib → dist/esm}/types.d.ts +21 -20
  180. package/{build/lib → dist/esm}/utils/filterRowsUtils.d.ts +1 -0
  181. package/dist/esm/utils/filterRowsUtils.js +99 -0
  182. package/dist/esm/utils/filterRowsUtils.js.map +1 -0
  183. package/{build/lib → dist/esm}/utils/getCoreRowModel.d.ts +1 -0
  184. package/dist/esm/utils/getCoreRowModel.js +54 -0
  185. package/{build/lib → dist/esm}/utils/getCoreRowModel.js.map +1 -1
  186. package/{build/lib → dist/esm}/utils/getExpandedRowModel.d.ts +1 -0
  187. package/dist/esm/utils/getExpandedRowModel.js +41 -0
  188. package/dist/esm/utils/getExpandedRowModel.js.map +1 -0
  189. package/{build/lib → dist/esm}/utils/getFacetedMinMaxValues.d.ts +1 -0
  190. package/dist/esm/utils/getFacetedMinMaxValues.js +36 -0
  191. package/dist/esm/utils/getFacetedMinMaxValues.js.map +1 -0
  192. package/{build/lib → dist/esm}/utils/getFacetedRowModel.d.ts +1 -0
  193. package/dist/esm/utils/getFacetedRowModel.js +35 -0
  194. package/{build/lib → dist/esm}/utils/getFacetedRowModel.js.map +1 -1
  195. package/{build/lib → dist/esm}/utils/getFacetedUniqueValues.d.ts +1 -0
  196. package/dist/esm/utils/getFacetedUniqueValues.js +38 -0
  197. package/dist/esm/utils/getFacetedUniqueValues.js.map +1 -0
  198. package/{build/lib → dist/esm}/utils/getFilteredRowModel.d.ts +1 -0
  199. package/dist/esm/utils/getFilteredRowModel.js +116 -0
  200. package/dist/esm/utils/getFilteredRowModel.js.map +1 -0
  201. package/{build/lib → dist/esm}/utils/getGroupedRowModel.d.ts +1 -0
  202. package/dist/esm/utils/getGroupedRowModel.js +118 -0
  203. package/{build/lib → dist/esm}/utils/getGroupedRowModel.js.map +1 -1
  204. package/{build/lib → dist/esm}/utils/getPaginationRowModel.d.ts +1 -0
  205. package/dist/esm/utils/getPaginationRowModel.js +49 -0
  206. package/dist/esm/utils/getPaginationRowModel.js.map +1 -0
  207. package/{build/lib → dist/esm}/utils/getSortedRowModel.d.ts +1 -0
  208. package/dist/esm/utils/getSortedRowModel.js +91 -0
  209. package/{build/lib → dist/esm}/utils/getSortedRowModel.js.map +1 -1
  210. package/{build/lib → dist/esm}/utils.d.ts +2 -1
  211. package/dist/esm/utils.js +100 -0
  212. package/{build/lib → dist/esm}/utils.js.map +1 -1
  213. package/package.json +15 -19
  214. package/src/utils/getFilteredRowModel.ts +1 -1
  215. package/build/lib/aggregationFns.js +0 -108
  216. package/build/lib/aggregationFns.js.map +0 -1
  217. package/build/lib/columnHelper.js +0 -71
  218. package/build/lib/core/cell.js +0 -42
  219. package/build/lib/core/column.js +0 -80
  220. package/build/lib/core/headers.js +0 -270
  221. package/build/lib/core/row.js +0 -89
  222. package/build/lib/core/table.js +0 -212
  223. package/build/lib/features/ColumnFiltering.js +0 -151
  224. package/build/lib/features/ColumnGrouping.js +0 -142
  225. package/build/lib/features/ColumnOrdering.js +0 -84
  226. package/build/lib/features/ColumnPinning.js +0 -130
  227. package/build/lib/features/ColumnSizing.js +0 -270
  228. package/build/lib/features/ColumnVisibility.js +0 -99
  229. package/build/lib/features/GlobalFiltering.js +0 -63
  230. package/build/lib/features/RowPagination.js +0 -169
  231. package/build/lib/features/RowPinning.js +0 -145
  232. package/build/lib/features/RowSelection.js +0 -391
  233. package/build/lib/features/RowSorting.js +0 -226
  234. package/build/lib/filterFns.js +0 -96
  235. package/build/lib/filterFns.js.map +0 -1
  236. package/build/lib/index.d.ts +0 -34
  237. package/build/lib/index.esm.js +0 -3522
  238. package/build/lib/index.esm.js.map +0 -1
  239. package/build/lib/index.js.map +0 -1
  240. package/build/lib/index.mjs +0 -3522
  241. package/build/lib/index.mjs.map +0 -1
  242. package/build/lib/sortingFns.js.map +0 -1
  243. package/build/lib/utils/filterRowsUtils.js.map +0 -1
  244. package/build/lib/utils/getCoreRowModel.js +0 -65
  245. package/build/lib/utils/getExpandedRowModel.js +0 -46
  246. package/build/lib/utils/getExpandedRowModel.js.map +0 -1
  247. package/build/lib/utils/getFacetedMinMaxValues.js +0 -43
  248. package/build/lib/utils/getFacetedMinMaxValues.js.map +0 -1
  249. package/build/lib/utils/getFacetedRowModel.js +0 -36
  250. package/build/lib/utils/getFacetedUniqueValues.js +0 -39
  251. package/build/lib/utils/getFacetedUniqueValues.js.map +0 -1
  252. package/build/lib/utils/getFilteredRowModel.js +0 -111
  253. package/build/lib/utils/getFilteredRowModel.js.map +0 -1
  254. package/build/lib/utils/getGroupedRowModel.js +0 -150
  255. package/build/lib/utils/getPaginationRowModel.js +0 -60
  256. package/build/lib/utils/getPaginationRowModel.js.map +0 -1
  257. package/build/lib/utils/getSortedRowModel.js +0 -102
  258. package/build/umd/index.development.js +0 -3578
  259. package/build/umd/index.development.js.map +0 -1
  260. package/build/umd/index.production.js +0 -12
  261. package/build/umd/index.production.js.map +0 -1
@@ -0,0 +1,35 @@
1
+ import { memo, getMemoOptions } from "../utils.js";
2
+ import { filterRows } from "./filterRowsUtils.js";
3
+ function getFacetedRowModel() {
4
+ return (table, columnId) => memo(
5
+ () => [
6
+ table.getPreFilteredRowModel(),
7
+ table.getState().columnFilters,
8
+ table.getState().globalFilter,
9
+ table.getFilteredRowModel()
10
+ ],
11
+ (preRowModel, columnFilters, globalFilter) => {
12
+ if (!preRowModel.rows.length || !(columnFilters == null ? void 0 : columnFilters.length) && !globalFilter) {
13
+ return preRowModel;
14
+ }
15
+ const filterableIds = [
16
+ ...columnFilters.map((d) => d.id).filter((d) => d !== columnId),
17
+ globalFilter ? "__global__" : void 0
18
+ ].filter(Boolean);
19
+ const filterRowsImpl = (row) => {
20
+ for (let i = 0; i < filterableIds.length; i++) {
21
+ if (row.columnFilters[filterableIds[i]] === false) {
22
+ return false;
23
+ }
24
+ }
25
+ return true;
26
+ };
27
+ return filterRows(preRowModel.rows, filterRowsImpl, table);
28
+ },
29
+ getMemoOptions(table.options, "debugTable", "getFacetedRowModel")
30
+ );
31
+ }
32
+ export {
33
+ getFacetedRowModel
34
+ };
35
+ //# sourceMappingURL=getFacetedRowModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFacetedRowModel.js","sources":["../../../src/utils/getFacetedRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n"],"names":["getFacetedRowModel","table","columnId","memo","getPreFilteredRowModel","getState","columnFilters","globalFilter","getFilteredRowModel","preRowModel","rows","length","filterableIds","map","d","id","filter","undefined","Boolean","filterRowsImpl","row","i","filterRows","getMemoOptions","options"],"mappings":";;;;;;;;;;;;;;;AAIO,SAASA,kBAAkBA,GAGP;EACzB,OAAO,CAACC,KAAK,EAAEC,QAAQ,KACrBC,UAAI,CACF,MAAM,CACJF,KAAK,CAACG,sBAAsB,EAAE,EAC9BH,KAAK,CAACI,QAAQ,EAAE,CAACC,aAAa,EAC9BL,KAAK,CAACI,QAAQ,EAAE,CAACE,YAAY,EAC7BN,KAAK,CAACO,mBAAmB,EAAE,CAC5B,EACD,CAACC,WAAW,EAAEH,aAAa,EAAEC,YAAY,KAAK;AAC5C,IAAA,IACE,CAACE,WAAW,CAACC,IAAI,CAACC,MAAM,IACvB,EAACL,aAAa,IAAA,IAAA,IAAbA,aAAa,CAAEK,MAAM,CAAI,IAAA,CAACJ,YAAa,EACzC;AACA,MAAA,OAAOE,WAAW,CAAA;AACpB,KAAA;AAEA,IAAA,MAAMG,aAAa,GAAG,CACpB,GAAGN,aAAa,CAACO,GAAG,CAACC,CAAC,IAAIA,CAAC,CAACC,EAAE,CAAC,CAACC,MAAM,CAACF,CAAC,IAAIA,CAAC,KAAKZ,QAAQ,CAAC,EAC3DK,YAAY,GAAG,YAAY,GAAGU,SAAS,CACxC,CAACD,MAAM,CAACE,OAAO,CAAa,CAAA;IAE7B,MAAMC,cAAc,GAAIC,GAAe,IAAK;AAC1C;AACA,MAAA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGT,aAAa,CAACD,MAAM,EAAEU,CAAC,EAAE,EAAE;QAC7C,IAAID,GAAG,CAACd,aAAa,CAACM,aAAa,CAACS,CAAC,CAAC,CAAE,KAAK,KAAK,EAAE;AAClD,UAAA,OAAO,KAAK,CAAA;AACd,SAAA;AACF,OAAA;AACA,MAAA,OAAO,IAAI,CAAA;KACZ,CAAA;IAED,OAAOC,0BAAU,CAACb,WAAW,CAACC,IAAI,EAAES,cAAc,EAAElB,KAAK,CAAC,CAAA;GAC3D,EACDsB,oBAAc,CAACtB,KAAK,CAACuB,OAAO,EAAE,YAAY,EAAE,oBAAoB,CAClE,CAAC,CAAA;AACL;;;;"}
1
+ {"version":3,"file":"getFacetedRowModel.js","sources":["../../../src/utils/getFacetedRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFacetedRowModel<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => RowModel<TData> {\n return (table, columnId) =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n table.getFilteredRowModel(),\n ],\n (preRowModel, columnFilters, globalFilter) => {\n if (\n !preRowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n return preRowModel\n }\n\n const filterableIds = [\n ...columnFilters.map(d => d.id).filter(d => d !== columnId),\n globalFilter ? '__global__' : undefined,\n ].filter(Boolean) as string[]\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n return filterRows(preRowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFacetedRowModel')\n )\n}\n"],"names":[],"mappings":";;AAIO,SAAS,qBAGW;AAClB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAM;AAAA,MACJ,MAAM,uBAAuB;AAAA,MAC7B,MAAM,WAAW;AAAA,MACjB,MAAM,WAAW;AAAA,MACjB,MAAM,oBAAoB;AAAA,IAC5B;AAAA,IACA,CAAC,aAAa,eAAe,iBAAiB;AAE1C,UAAA,CAAC,YAAY,KAAK,UACjB,EAAC,+CAAe,WAAU,CAAC,cAC5B;AACO,eAAA;AAAA,MACT;AAEA,YAAM,gBAAgB;AAAA,QACpB,GAAG,cAAc,IAAI,CAAK,MAAA,EAAE,EAAE,EAAE,OAAO,CAAK,MAAA,MAAM,QAAQ;AAAA,QAC1D,eAAe,eAAe;AAAA,MAAA,EAC9B,OAAO,OAAO;AAEV,YAAA,iBAAiB,CAAC,QAAoB;AAE1C,iBAAS,IAAI,GAAG,IAAI,cAAc,QAAQ,KAAK;AAC7C,cAAI,IAAI,cAAc,cAAc,CAAC,CAAE,MAAM,OAAO;AAC3C,mBAAA;AAAA,UACT;AAAA,QACF;AACO,eAAA;AAAA,MAAA;AAGT,aAAO,WAAW,YAAY,MAAM,gBAAgB,KAAK;AAAA,IAC3D;AAAA,IACA,eAAe,MAAM,SAAS,cAAc,oBAAoB;AAAA,EAAA;AAEtE;"}
@@ -1,2 +1,3 @@
1
1
  import { Table, RowData } from '../types';
2
+
2
3
  export declare function getFacetedUniqueValues<TData extends RowData>(): (table: Table<TData>, columnId: string) => () => Map<any, number>;
@@ -0,0 +1,38 @@
1
+ import { memo, getMemoOptions } from "../utils.js";
2
+ function getFacetedUniqueValues() {
3
+ return (table, columnId) => memo(
4
+ () => {
5
+ var _a;
6
+ return [(_a = table.getColumn(columnId)) == null ? void 0 : _a.getFacetedRowModel()];
7
+ },
8
+ (facetedRowModel) => {
9
+ if (!facetedRowModel)
10
+ return /* @__PURE__ */ new Map();
11
+ let facetedUniqueValues = /* @__PURE__ */ new Map();
12
+ for (let i = 0; i < facetedRowModel.flatRows.length; i++) {
13
+ const values = facetedRowModel.flatRows[i].getUniqueValues(columnId);
14
+ for (let j = 0; j < values.length; j++) {
15
+ const value = values[j];
16
+ if (facetedUniqueValues.has(value)) {
17
+ facetedUniqueValues.set(
18
+ value,
19
+ (facetedUniqueValues.get(value) ?? 0) + 1
20
+ );
21
+ } else {
22
+ facetedUniqueValues.set(value, 1);
23
+ }
24
+ }
25
+ }
26
+ return facetedUniqueValues;
27
+ },
28
+ getMemoOptions(
29
+ table.options,
30
+ "debugTable",
31
+ `getFacetedUniqueValues_${columnId}`
32
+ )
33
+ );
34
+ }
35
+ export {
36
+ getFacetedUniqueValues
37
+ };
38
+ //# sourceMappingURL=getFacetedUniqueValues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFacetedUniqueValues.js","sources":["../../../src/utils/getFacetedUniqueValues.ts"],"sourcesContent":["import { Table, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getFacetedUniqueValues<TData extends RowData>(): (\n table: Table<TData>,\n columnId: string\n) => () => Map<any, number> {\n return (table, columnId) =>\n memo(\n () => [table.getColumn(columnId)?.getFacetedRowModel()],\n facetedRowModel => {\n if (!facetedRowModel) return new Map()\n\n let facetedUniqueValues = new Map<any, number>()\n\n for (let i = 0; i < facetedRowModel.flatRows.length; i++) {\n const values =\n facetedRowModel.flatRows[i]!.getUniqueValues<number>(columnId)\n\n for (let j = 0; j < values.length; j++) {\n const value = values[j]!\n\n if (facetedUniqueValues.has(value)) {\n facetedUniqueValues.set(\n value,\n (facetedUniqueValues.get(value) ?? 0) + 1\n )\n } else {\n facetedUniqueValues.set(value, 1)\n }\n }\n }\n\n return facetedUniqueValues\n },\n getMemoOptions(\n table.options,\n 'debugTable',\n `getFacetedUniqueValues_${columnId}`\n )\n )\n}\n"],"names":[],"mappings":";AAGO,SAAS,yBAGY;AACnB,SAAA,CAAC,OAAO,aACb;AAAA,IACE,MAAA;;AAAM,eAAC,WAAM,UAAU,QAAQ,MAAxB,mBAA2B,oBAAoB;AAAA;AAAA,IACtD,CAAmB,oBAAA;AACjB,UAAI,CAAC;AAAiB,mCAAW,IAAI;AAEjC,UAAA,0CAA0B;AAE9B,eAAS,IAAI,GAAG,IAAI,gBAAgB,SAAS,QAAQ,KAAK;AACxD,cAAM,SACJ,gBAAgB,SAAS,CAAC,EAAG,gBAAwB,QAAQ;AAE/D,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AAChC,gBAAA,QAAQ,OAAO,CAAC;AAElB,cAAA,oBAAoB,IAAI,KAAK,GAAG;AACd,gCAAA;AAAA,cAClB;AAAA,eACC,oBAAoB,IAAI,KAAK,KAAK,KAAK;AAAA,YAAA;AAAA,UAC1C,OACK;AACe,gCAAA,IAAI,OAAO,CAAC;AAAA,UAClC;AAAA,QACF;AAAA,MACF;AAEO,aAAA;AAAA,IACT;AAAA,IACA;AAAA,MACE,MAAM;AAAA,MACN;AAAA,MACA,0BAA0B,QAAQ;AAAA,IACpC;AAAA,EAAA;AAEN;"}
@@ -1,2 +1,3 @@
1
1
  import { Table, RowModel, RowData } from '../types';
2
+
2
3
  export declare function getFilteredRowModel<TData extends RowData>(): (table: Table<TData>) => () => RowModel<TData>;
@@ -0,0 +1,116 @@
1
+ import { memo, getMemoOptions } from "../utils.js";
2
+ import { filterRows } from "./filterRowsUtils.js";
3
+ function getFilteredRowModel() {
4
+ return (table) => memo(
5
+ () => [
6
+ table.getPreFilteredRowModel(),
7
+ table.getState().columnFilters,
8
+ table.getState().globalFilter
9
+ ],
10
+ (rowModel, columnFilters, globalFilter) => {
11
+ if (!rowModel.rows.length || !(columnFilters == null ? void 0 : columnFilters.length) && !globalFilter) {
12
+ for (let i = 0; i < rowModel.flatRows.length; i++) {
13
+ rowModel.flatRows[i].columnFilters = {};
14
+ rowModel.flatRows[i].columnFiltersMeta = {};
15
+ }
16
+ return rowModel;
17
+ }
18
+ const resolvedColumnFilters = [];
19
+ const resolvedGlobalFilters = [];
20
+ (columnFilters ?? []).forEach((d) => {
21
+ var _a;
22
+ const column = table.getColumn(d.id);
23
+ if (!column) {
24
+ return;
25
+ }
26
+ const filterFn = column.getFilterFn();
27
+ if (!filterFn) {
28
+ if (process.env.NODE_ENV !== "production") {
29
+ console.warn(
30
+ `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`
31
+ );
32
+ }
33
+ return;
34
+ }
35
+ resolvedColumnFilters.push({
36
+ id: d.id,
37
+ filterFn,
38
+ resolvedValue: ((_a = filterFn.resolveFilterValue) == null ? void 0 : _a.call(filterFn, d.value)) ?? d.value
39
+ });
40
+ });
41
+ const filterableIds = (columnFilters ?? []).map((d) => d.id);
42
+ const globalFilterFn = table.getGlobalFilterFn();
43
+ const globallyFilterableColumns = table.getAllLeafColumns().filter((column) => column.getCanGlobalFilter());
44
+ if (globalFilter && globalFilterFn && globallyFilterableColumns.length) {
45
+ filterableIds.push("__global__");
46
+ globallyFilterableColumns.forEach((column) => {
47
+ var _a;
48
+ resolvedGlobalFilters.push({
49
+ id: column.id,
50
+ filterFn: globalFilterFn,
51
+ resolvedValue: ((_a = globalFilterFn.resolveFilterValue) == null ? void 0 : _a.call(globalFilterFn, globalFilter)) ?? globalFilter
52
+ });
53
+ });
54
+ }
55
+ let currentColumnFilter;
56
+ let currentGlobalFilter;
57
+ for (let j = 0; j < rowModel.flatRows.length; j++) {
58
+ const row = rowModel.flatRows[j];
59
+ row.columnFilters = {};
60
+ if (resolvedColumnFilters.length) {
61
+ for (let i = 0; i < resolvedColumnFilters.length; i++) {
62
+ currentColumnFilter = resolvedColumnFilters[i];
63
+ const id = currentColumnFilter.id;
64
+ row.columnFilters[id] = currentColumnFilter.filterFn(
65
+ row,
66
+ id,
67
+ currentColumnFilter.resolvedValue,
68
+ (filterMeta) => {
69
+ row.columnFiltersMeta[id] = filterMeta;
70
+ }
71
+ );
72
+ }
73
+ }
74
+ if (resolvedGlobalFilters.length) {
75
+ for (let i = 0; i < resolvedGlobalFilters.length; i++) {
76
+ currentGlobalFilter = resolvedGlobalFilters[i];
77
+ const id = currentGlobalFilter.id;
78
+ if (currentGlobalFilter.filterFn(
79
+ row,
80
+ id,
81
+ currentGlobalFilter.resolvedValue,
82
+ (filterMeta) => {
83
+ row.columnFiltersMeta[id] = filterMeta;
84
+ }
85
+ )) {
86
+ row.columnFilters.__global__ = true;
87
+ break;
88
+ }
89
+ }
90
+ if (row.columnFilters.__global__ !== true) {
91
+ row.columnFilters.__global__ = false;
92
+ }
93
+ }
94
+ }
95
+ const filterRowsImpl = (row) => {
96
+ for (let i = 0; i < filterableIds.length; i++) {
97
+ if (row.columnFilters[filterableIds[i]] === false) {
98
+ return false;
99
+ }
100
+ }
101
+ return true;
102
+ };
103
+ return filterRows(rowModel.rows, filterRowsImpl, table);
104
+ },
105
+ getMemoOptions(
106
+ table.options,
107
+ "debugTable",
108
+ "getFilteredRowModel",
109
+ () => table._autoResetPageIndex()
110
+ )
111
+ );
112
+ }
113
+ export {
114
+ getFilteredRowModel
115
+ };
116
+ //# sourceMappingURL=getFilteredRowModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getFilteredRowModel.js","sources":["../../../src/utils/getFilteredRowModel.ts"],"sourcesContent":["import { ResolvedColumnFilter } from '../features/ColumnFiltering'\nimport { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { filterRows } from './filterRowsUtils'\n\nexport function getFilteredRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getPreFilteredRowModel(),\n table.getState().columnFilters,\n table.getState().globalFilter,\n ],\n (rowModel, columnFilters, globalFilter) => {\n if (\n !rowModel.rows.length ||\n (!columnFilters?.length && !globalFilter)\n ) {\n for (let i = 0; i < rowModel.flatRows.length; i++) {\n rowModel.flatRows[i]!.columnFilters = {}\n rowModel.flatRows[i]!.columnFiltersMeta = {}\n }\n return rowModel\n }\n\n const resolvedColumnFilters: ResolvedColumnFilter<TData>[] = []\n const resolvedGlobalFilters: ResolvedColumnFilter<TData>[] = []\n\n ;(columnFilters ?? []).forEach(d => {\n const column = table.getColumn(d.id)\n\n if (!column) {\n return\n }\n\n const filterFn = column.getFilterFn()\n\n if (!filterFn) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(\n `Could not find a valid 'column.filterFn' for column with the ID: ${column.id}.`\n )\n }\n return\n }\n\n resolvedColumnFilters.push({\n id: d.id,\n filterFn,\n resolvedValue: filterFn.resolveFilterValue?.(d.value) ?? d.value,\n })\n })\n\n const filterableIds = (columnFilters ?? []).map(d => d.id)\n\n const globalFilterFn = table.getGlobalFilterFn()\n\n const globallyFilterableColumns = table\n .getAllLeafColumns()\n .filter(column => column.getCanGlobalFilter())\n\n if (\n globalFilter &&\n globalFilterFn &&\n globallyFilterableColumns.length\n ) {\n filterableIds.push('__global__')\n\n globallyFilterableColumns.forEach(column => {\n resolvedGlobalFilters.push({\n id: column.id,\n filterFn: globalFilterFn,\n resolvedValue:\n globalFilterFn.resolveFilterValue?.(globalFilter) ??\n globalFilter,\n })\n })\n }\n\n let currentColumnFilter\n let currentGlobalFilter\n\n // Flag the prefiltered row model with each filter state\n for (let j = 0; j < rowModel.flatRows.length; j++) {\n const row = rowModel.flatRows[j]!\n\n row.columnFilters = {}\n\n if (resolvedColumnFilters.length) {\n for (let i = 0; i < resolvedColumnFilters.length; i++) {\n currentColumnFilter = resolvedColumnFilters[i]!\n const id = currentColumnFilter.id\n\n // Tag the row with the column filter state\n row.columnFilters[id] = currentColumnFilter.filterFn(\n row,\n id,\n currentColumnFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n }\n }\n\n if (resolvedGlobalFilters.length) {\n for (let i = 0; i < resolvedGlobalFilters.length; i++) {\n currentGlobalFilter = resolvedGlobalFilters[i]!\n const id = currentGlobalFilter.id\n // Tag the row with the first truthy global filter state\n if (\n currentGlobalFilter.filterFn(\n row,\n id,\n currentGlobalFilter.resolvedValue,\n filterMeta => {\n row.columnFiltersMeta[id] = filterMeta\n }\n )\n ) {\n row.columnFilters.__global__ = true\n break\n }\n }\n\n if (row.columnFilters.__global__ !== true) {\n row.columnFilters.__global__ = false\n }\n }\n }\n\n const filterRowsImpl = (row: Row<TData>) => {\n // Horizontally filter rows through each column\n for (let i = 0; i < filterableIds.length; i++) {\n if (row.columnFilters[filterableIds[i]!] === false) {\n return false\n }\n }\n return true\n }\n\n // Filter final rows using all of the active filters\n return filterRows(rowModel.rows, filterRowsImpl, table)\n },\n getMemoOptions(table.options, 'debugTable', 'getFilteredRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { Table, RowModel, RowData } from '../types';
2
+
2
3
  export declare function getGroupedRowModel<TData extends RowData>(): (table: Table<TData>) => () => RowModel<TData>;
@@ -0,0 +1,118 @@
1
+ import { createRow } from "../core/row.js";
2
+ import { memo, getMemoOptions, flattenBy } from "../utils.js";
3
+ function getGroupedRowModel() {
4
+ return (table) => memo(
5
+ () => [table.getState().grouping, table.getPreGroupedRowModel()],
6
+ (grouping, rowModel) => {
7
+ if (!rowModel.rows.length || !grouping.length) {
8
+ return rowModel;
9
+ }
10
+ const existingGrouping = grouping.filter(
11
+ (columnId) => table.getColumn(columnId)
12
+ );
13
+ const groupedFlatRows = [];
14
+ const groupedRowsById = {};
15
+ const groupUpRecursively = (rows, depth = 0, parentId) => {
16
+ if (depth >= existingGrouping.length) {
17
+ return rows.map((row) => {
18
+ row.depth = depth;
19
+ groupedFlatRows.push(row);
20
+ groupedRowsById[row.id] = row;
21
+ if (row.subRows) {
22
+ row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id);
23
+ }
24
+ return row;
25
+ });
26
+ }
27
+ const columnId = existingGrouping[depth];
28
+ const rowGroupsMap = groupBy(rows, columnId);
29
+ const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(
30
+ ([groupingValue, groupedRows2], index) => {
31
+ let id = `${columnId}:${groupingValue}`;
32
+ id = parentId ? `${parentId}>${id}` : id;
33
+ const subRows = groupUpRecursively(groupedRows2, depth + 1, id);
34
+ const leafRows = depth ? flattenBy(groupedRows2, (row2) => row2.subRows) : groupedRows2;
35
+ const row = createRow(
36
+ table,
37
+ id,
38
+ leafRows[0].original,
39
+ index,
40
+ depth,
41
+ void 0,
42
+ parentId
43
+ );
44
+ Object.assign(row, {
45
+ groupingColumnId: columnId,
46
+ groupingValue,
47
+ subRows,
48
+ leafRows,
49
+ getValue: (columnId2) => {
50
+ if (existingGrouping.includes(columnId2)) {
51
+ if (row._valuesCache.hasOwnProperty(columnId2)) {
52
+ return row._valuesCache[columnId2];
53
+ }
54
+ if (groupedRows2[0]) {
55
+ row._valuesCache[columnId2] = groupedRows2[0].getValue(columnId2) ?? void 0;
56
+ }
57
+ return row._valuesCache[columnId2];
58
+ }
59
+ if (row._groupingValuesCache.hasOwnProperty(columnId2)) {
60
+ return row._groupingValuesCache[columnId2];
61
+ }
62
+ const column = table.getColumn(columnId2);
63
+ const aggregateFn = column == null ? void 0 : column.getAggregationFn();
64
+ if (aggregateFn) {
65
+ row._groupingValuesCache[columnId2] = aggregateFn(
66
+ columnId2,
67
+ leafRows,
68
+ groupedRows2
69
+ );
70
+ return row._groupingValuesCache[columnId2];
71
+ }
72
+ }
73
+ });
74
+ subRows.forEach((subRow) => {
75
+ groupedFlatRows.push(subRow);
76
+ groupedRowsById[subRow.id] = subRow;
77
+ });
78
+ return row;
79
+ }
80
+ );
81
+ return aggregatedGroupedRows;
82
+ };
83
+ const groupedRows = groupUpRecursively(rowModel.rows, 0);
84
+ groupedRows.forEach((subRow) => {
85
+ groupedFlatRows.push(subRow);
86
+ groupedRowsById[subRow.id] = subRow;
87
+ });
88
+ return {
89
+ rows: groupedRows,
90
+ flatRows: groupedFlatRows,
91
+ rowsById: groupedRowsById
92
+ };
93
+ },
94
+ getMemoOptions(table.options, "debugTable", "getGroupedRowModel", () => {
95
+ table._queue(() => {
96
+ table._autoResetExpanded();
97
+ table._autoResetPageIndex();
98
+ });
99
+ })
100
+ );
101
+ }
102
+ function groupBy(rows, columnId) {
103
+ const groupMap = /* @__PURE__ */ new Map();
104
+ return rows.reduce((map, row) => {
105
+ const resKey = `${row.getGroupingValue(columnId)}`;
106
+ const previous = map.get(resKey);
107
+ if (!previous) {
108
+ map.set(resKey, [row]);
109
+ } else {
110
+ previous.push(row);
111
+ }
112
+ return map;
113
+ }, groupMap);
114
+ }
115
+ export {
116
+ getGroupedRowModel
117
+ };
118
+ //# sourceMappingURL=getGroupedRowModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["getGroupedRowModel","table","memo","getState","grouping","getPreGroupedRowModel","rowModel","rows","length","existingGrouping","filter","columnId","getColumn","groupedFlatRows","groupedRowsById","groupUpRecursively","depth","parentId","map","row","push","id","subRows","rowGroupsMap","groupBy","aggregatedGroupedRows","Array","from","entries","_ref","index","groupingValue","groupedRows","leafRows","flattenBy","createRow","original","undefined","Object","assign","groupingColumnId","getValue","includes","_valuesCache","hasOwnProperty","_groupedRows$0$getVal","_groupingValuesCache","column","aggregateFn","getAggregationFn","forEach","subRow","flatRows","rowsById","getMemoOptions","options","_queue","_autoResetExpanded","_autoResetPageIndex","groupMap","Map","reduce","resKey","getGroupingValue","previous","get","set"],"mappings":"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"}
1
+ {"version":3,"file":"getGroupedRowModel.js","sources":["../../../src/utils/getGroupedRowModel.ts"],"sourcesContent":["import { createRow } from '../core/row'\nimport { Table, Row, RowModel, RowData } from '../types'\nimport { flattenBy, getMemoOptions, memo } from '../utils'\n\nexport function getGroupedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().grouping, table.getPreGroupedRowModel()],\n (grouping, rowModel) => {\n if (!rowModel.rows.length || !grouping.length) {\n return rowModel\n }\n\n // Filter the grouping list down to columns that exist\n const existingGrouping = grouping.filter(columnId =>\n table.getColumn(columnId)\n )\n\n const groupedFlatRows: Row<TData>[] = []\n const groupedRowsById: Record<string, Row<TData>> = {}\n // const onlyGroupedFlatRows: Row[] = [];\n // const onlyGroupedRowsById: Record<RowId, Row> = {};\n // const nonGroupedFlatRows: Row[] = [];\n // const nonGroupedRowsById: Record<RowId, Row> = {};\n\n // Recursively group the data\n const groupUpRecursively = (\n rows: Row<TData>[],\n depth = 0,\n parentId?: string\n ) => {\n // Grouping depth has been been met\n // Stop grouping and simply rewrite thd depth and row relationships\n if (depth >= existingGrouping.length) {\n return rows.map(row => {\n row.depth = depth\n\n groupedFlatRows.push(row)\n groupedRowsById[row.id] = row\n\n if (row.subRows) {\n row.subRows = groupUpRecursively(row.subRows, depth + 1, row.id)\n }\n\n return row\n })\n }\n\n const columnId: string = existingGrouping[depth]!\n\n // Group the rows together for this level\n const rowGroupsMap = groupBy(rows, columnId)\n\n // Peform aggregations for each group\n const aggregatedGroupedRows = Array.from(rowGroupsMap.entries()).map(\n ([groupingValue, groupedRows], index) => {\n let id = `${columnId}:${groupingValue}`\n id = parentId ? `${parentId}>${id}` : id\n\n // First, Recurse to group sub rows before aggregation\n const subRows = groupUpRecursively(groupedRows, depth + 1, id)\n\n // Flatten the leaf rows of the rows in this group\n const leafRows = depth\n ? flattenBy(groupedRows, row => row.subRows)\n : groupedRows\n\n const row = createRow(\n table,\n id,\n leafRows[0]!.original,\n index,\n depth,\n undefined,\n parentId\n )\n\n Object.assign(row, {\n groupingColumnId: columnId,\n groupingValue,\n subRows,\n leafRows,\n getValue: (columnId: string) => {\n // Don't aggregate columns that are in the grouping\n if (existingGrouping.includes(columnId)) {\n if (row._valuesCache.hasOwnProperty(columnId)) {\n return row._valuesCache[columnId]\n }\n\n if (groupedRows[0]) {\n row._valuesCache[columnId] =\n groupedRows[0].getValue(columnId) ?? undefined\n }\n\n return row._valuesCache[columnId]\n }\n\n if (row._groupingValuesCache.hasOwnProperty(columnId)) {\n return row._groupingValuesCache[columnId]\n }\n\n // Aggregate the values\n const column = table.getColumn(columnId)\n const aggregateFn = column?.getAggregationFn()\n\n if (aggregateFn) {\n row._groupingValuesCache[columnId] = aggregateFn(\n columnId,\n leafRows,\n groupedRows\n )\n\n return row._groupingValuesCache[columnId]\n }\n },\n })\n\n subRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return row\n }\n )\n\n return aggregatedGroupedRows\n }\n\n const groupedRows = groupUpRecursively(rowModel.rows, 0)\n\n groupedRows.forEach(subRow => {\n groupedFlatRows.push(subRow)\n groupedRowsById[subRow.id] = subRow\n // if (subRow.getIsGrouped?.()) {\n // onlyGroupedFlatRows.push(subRow);\n // onlyGroupedRowsById[subRow.id] = subRow;\n // } else {\n // nonGroupedFlatRows.push(subRow);\n // nonGroupedRowsById[subRow.id] = subRow;\n // }\n })\n\n return {\n rows: groupedRows,\n flatRows: groupedFlatRows,\n rowsById: groupedRowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getGroupedRowModel', () => {\n table._queue(() => {\n table._autoResetExpanded()\n table._autoResetPageIndex()\n })\n })\n )\n}\n\nfunction groupBy<TData extends RowData>(rows: Row<TData>[], columnId: string) {\n const groupMap = new Map<any, Row<TData>[]>()\n\n return rows.reduce((map, row) => {\n const resKey = `${row.getGroupingValue(columnId)}`\n const previous = map.get(resKey)\n if (!previous) {\n map.set(resKey, [row])\n } else {\n previous.push(row)\n }\n return map\n }, groupMap)\n}\n"],"names":["groupedRows","row","columnId"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Table, RowModel, RowData } from '../types';
2
+
2
3
  export declare function getPaginationRowModel<TData extends RowData>(opts?: {
3
4
  initialSync: boolean;
4
5
  }): (table: Table<TData>) => () => RowModel<TData>;
@@ -0,0 +1,49 @@
1
+ import { memo, getMemoOptions } from "../utils.js";
2
+ import { expandRows } from "./getExpandedRowModel.js";
3
+ function getPaginationRowModel(opts) {
4
+ return (table) => memo(
5
+ () => [
6
+ table.getState().pagination,
7
+ table.getPrePaginationRowModel(),
8
+ table.options.paginateExpandedRows ? void 0 : table.getState().expanded
9
+ ],
10
+ (pagination, rowModel) => {
11
+ if (!rowModel.rows.length) {
12
+ return rowModel;
13
+ }
14
+ const { pageSize, pageIndex } = pagination;
15
+ let { rows, flatRows, rowsById } = rowModel;
16
+ const pageStart = pageSize * pageIndex;
17
+ const pageEnd = pageStart + pageSize;
18
+ rows = rows.slice(pageStart, pageEnd);
19
+ let paginatedRowModel;
20
+ if (!table.options.paginateExpandedRows) {
21
+ paginatedRowModel = expandRows({
22
+ rows,
23
+ flatRows,
24
+ rowsById
25
+ });
26
+ } else {
27
+ paginatedRowModel = {
28
+ rows,
29
+ flatRows,
30
+ rowsById
31
+ };
32
+ }
33
+ paginatedRowModel.flatRows = [];
34
+ const handleRow = (row) => {
35
+ paginatedRowModel.flatRows.push(row);
36
+ if (row.subRows.length) {
37
+ row.subRows.forEach(handleRow);
38
+ }
39
+ };
40
+ paginatedRowModel.rows.forEach(handleRow);
41
+ return paginatedRowModel;
42
+ },
43
+ getMemoOptions(table.options, "debugTable", "getPaginationRowModel")
44
+ );
45
+ }
46
+ export {
47
+ getPaginationRowModel
48
+ };
49
+ //# sourceMappingURL=getPaginationRowModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getPaginationRowModel.js","sources":["../../../src/utils/getPaginationRowModel.ts"],"sourcesContent":["import { Table, RowModel, Row, RowData } from '../types'\nimport { getMemoOptions, memo } from '../utils'\nimport { expandRows } from './getExpandedRowModel'\n\nexport function getPaginationRowModel<TData extends RowData>(opts?: {\n initialSync: boolean\n}): (table: Table<TData>) => () => RowModel<TData> {\n return table =>\n memo(\n () => [\n table.getState().pagination,\n table.getPrePaginationRowModel(),\n table.options.paginateExpandedRows\n ? undefined\n : table.getState().expanded,\n ],\n (pagination, rowModel) => {\n if (!rowModel.rows.length) {\n return rowModel\n }\n\n const { pageSize, pageIndex } = pagination\n let { rows, flatRows, rowsById } = rowModel\n const pageStart = pageSize * pageIndex\n const pageEnd = pageStart + pageSize\n\n rows = rows.slice(pageStart, pageEnd)\n\n let paginatedRowModel: RowModel<TData>\n\n if (!table.options.paginateExpandedRows) {\n paginatedRowModel = expandRows({\n rows,\n flatRows,\n rowsById,\n })\n } else {\n paginatedRowModel = {\n rows,\n flatRows,\n rowsById,\n }\n }\n\n paginatedRowModel.flatRows = []\n\n const handleRow = (row: Row<TData>) => {\n paginatedRowModel.flatRows.push(row)\n if (row.subRows.length) {\n row.subRows.forEach(handleRow)\n }\n }\n\n paginatedRowModel.rows.forEach(handleRow)\n\n return paginatedRowModel\n },\n getMemoOptions(table.options, 'debugTable', 'getPaginationRowModel')\n )\n}\n"],"names":[],"mappings":";;AAIO,SAAS,sBAA6C,MAEV;AACjD,SAAO,CACL,UAAA;AAAA,IACE,MAAM;AAAA,MACJ,MAAM,WAAW;AAAA,MACjB,MAAM,yBAAyB;AAAA,MAC/B,MAAM,QAAQ,uBACV,SACA,MAAM,WAAW;AAAA,IACvB;AAAA,IACA,CAAC,YAAY,aAAa;AACpB,UAAA,CAAC,SAAS,KAAK,QAAQ;AAClB,eAAA;AAAA,MACT;AAEM,YAAA,EAAE,UAAU,UAAc,IAAA;AAChC,UAAI,EAAE,MAAM,UAAU,SAAA,IAAa;AACnC,YAAM,YAAY,WAAW;AAC7B,YAAM,UAAU,YAAY;AAErB,aAAA,KAAK,MAAM,WAAW,OAAO;AAEhC,UAAA;AAEA,UAAA,CAAC,MAAM,QAAQ,sBAAsB;AACvC,4BAAoB,WAAW;AAAA,UAC7B;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA,OACI;AACe,4BAAA;AAAA,UAClB;AAAA,UACA;AAAA,UACA;AAAA,QAAA;AAAA,MAEJ;AAEA,wBAAkB,WAAW;AAEvB,YAAA,YAAY,CAAC,QAAoB;AACnB,0BAAA,SAAS,KAAK,GAAG;AAC/B,YAAA,IAAI,QAAQ,QAAQ;AAClB,cAAA,QAAQ,QAAQ,SAAS;AAAA,QAC/B;AAAA,MAAA;AAGgB,wBAAA,KAAK,QAAQ,SAAS;AAEjC,aAAA;AAAA,IACT;AAAA,IACA,eAAe,MAAM,SAAS,cAAc,uBAAuB;AAAA,EAAA;AAEzE;"}
@@ -1,2 +1,3 @@
1
1
  import { Table, RowModel, RowData } from '../types';
2
+
2
3
  export declare function getSortedRowModel<TData extends RowData>(): (table: Table<TData>) => () => RowModel<TData>;
@@ -0,0 +1,91 @@
1
+ import { memo, getMemoOptions } from "../utils.js";
2
+ function getSortedRowModel() {
3
+ return (table) => memo(
4
+ () => [table.getState().sorting, table.getPreSortedRowModel()],
5
+ (sorting, rowModel) => {
6
+ if (!rowModel.rows.length || !(sorting == null ? void 0 : sorting.length)) {
7
+ return rowModel;
8
+ }
9
+ const sortingState = table.getState().sorting;
10
+ const sortedFlatRows = [];
11
+ const availableSorting = sortingState.filter(
12
+ (sort) => {
13
+ var _a;
14
+ return (_a = table.getColumn(sort.id)) == null ? void 0 : _a.getCanSort();
15
+ }
16
+ );
17
+ const columnInfoById = {};
18
+ availableSorting.forEach((sortEntry) => {
19
+ const column = table.getColumn(sortEntry.id);
20
+ if (!column)
21
+ return;
22
+ columnInfoById[sortEntry.id] = {
23
+ sortUndefined: column.columnDef.sortUndefined,
24
+ invertSorting: column.columnDef.invertSorting,
25
+ sortingFn: column.getSortingFn()
26
+ };
27
+ });
28
+ const sortData = (rows) => {
29
+ const sortedData = rows.map((row) => ({ ...row }));
30
+ sortedData.sort((rowA, rowB) => {
31
+ for (let i = 0; i < availableSorting.length; i += 1) {
32
+ const sortEntry = availableSorting[i];
33
+ const columnInfo = columnInfoById[sortEntry.id];
34
+ const sortUndefined = columnInfo.sortUndefined;
35
+ const isDesc = (sortEntry == null ? void 0 : sortEntry.desc) ?? false;
36
+ let sortInt = 0;
37
+ if (sortUndefined) {
38
+ const aValue = rowA.getValue(sortEntry.id);
39
+ const bValue = rowB.getValue(sortEntry.id);
40
+ const aUndefined = aValue === void 0;
41
+ const bUndefined = bValue === void 0;
42
+ if (aUndefined || bUndefined) {
43
+ if (sortUndefined === "first")
44
+ return aUndefined ? -1 : 1;
45
+ if (sortUndefined === "last")
46
+ return aUndefined ? 1 : -1;
47
+ sortInt = aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
48
+ }
49
+ }
50
+ if (sortInt === 0) {
51
+ sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id);
52
+ }
53
+ if (sortInt !== 0) {
54
+ if (isDesc) {
55
+ sortInt *= -1;
56
+ }
57
+ if (columnInfo.invertSorting) {
58
+ sortInt *= -1;
59
+ }
60
+ return sortInt;
61
+ }
62
+ }
63
+ return rowA.index - rowB.index;
64
+ });
65
+ sortedData.forEach((row) => {
66
+ var _a;
67
+ sortedFlatRows.push(row);
68
+ if ((_a = row.subRows) == null ? void 0 : _a.length) {
69
+ row.subRows = sortData(row.subRows);
70
+ }
71
+ });
72
+ return sortedData;
73
+ };
74
+ return {
75
+ rows: sortData(rowModel.rows),
76
+ flatRows: sortedFlatRows,
77
+ rowsById: rowModel.rowsById
78
+ };
79
+ },
80
+ getMemoOptions(
81
+ table.options,
82
+ "debugTable",
83
+ "getSortedRowModel",
84
+ () => table._autoResetPageIndex()
85
+ )
86
+ );
87
+ }
88
+ export {
89
+ getSortedRowModel
90
+ };
91
+ //# sourceMappingURL=getSortedRowModel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(\n sort => table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":["getSortedRowModel","table","memo","getState","sorting","getPreSortedRowModel","rowModel","rows","length","sortingState","sortedFlatRows","availableSorting","filter","sort","_table$getColumn","getColumn","id","getCanSort","columnInfoById","forEach","sortEntry","column","sortUndefined","columnDef","invertSorting","sortingFn","getSortingFn","sortData","sortedData","map","row","rowA","rowB","i","_sortEntry$desc","columnInfo","isDesc","desc","sortInt","aValue","getValue","bValue","aUndefined","undefined","bUndefined","index","_row$subRows","push","subRows","flatRows","rowsById","getMemoOptions","options","_autoResetPageIndex"],"mappings":"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"}
1
+ {"version":3,"file":"getSortedRowModel.js","sources":["../../../src/utils/getSortedRowModel.ts"],"sourcesContent":["import { Table, Row, RowModel, RowData } from '../types'\nimport { SortingFn } from '../features/RowSorting'\nimport { getMemoOptions, memo } from '../utils'\n\nexport function getSortedRowModel<TData extends RowData>(): (\n table: Table<TData>\n) => () => RowModel<TData> {\n return table =>\n memo(\n () => [table.getState().sorting, table.getPreSortedRowModel()],\n (sorting, rowModel) => {\n if (!rowModel.rows.length || !sorting?.length) {\n return rowModel\n }\n\n const sortingState = table.getState().sorting\n\n const sortedFlatRows: Row<TData>[] = []\n\n // Filter out sortings that correspond to non existing columns\n const availableSorting = sortingState.filter(\n sort => table.getColumn(sort.id)?.getCanSort()\n )\n\n const columnInfoById: Record<\n string,\n {\n sortUndefined?: false | -1 | 1 | 'first' | 'last'\n invertSorting?: boolean\n sortingFn: SortingFn<TData>\n }\n > = {}\n\n availableSorting.forEach(sortEntry => {\n const column = table.getColumn(sortEntry.id)\n if (!column) return\n\n columnInfoById[sortEntry.id] = {\n sortUndefined: column.columnDef.sortUndefined,\n invertSorting: column.columnDef.invertSorting,\n sortingFn: column.getSortingFn(),\n }\n })\n\n const sortData = (rows: Row<TData>[]) => {\n // This will also perform a stable sorting using the row index\n // if needed.\n const sortedData = rows.map(row => ({ ...row }))\n\n sortedData.sort((rowA, rowB) => {\n for (let i = 0; i < availableSorting.length; i += 1) {\n const sortEntry = availableSorting[i]!\n const columnInfo = columnInfoById[sortEntry.id]!\n const sortUndefined = columnInfo.sortUndefined\n const isDesc = sortEntry?.desc ?? false\n\n let sortInt = 0\n\n // All sorting ints should always return in ascending order\n if (sortUndefined) {\n const aValue = rowA.getValue(sortEntry.id)\n const bValue = rowB.getValue(sortEntry.id)\n\n const aUndefined = aValue === undefined\n const bUndefined = bValue === undefined\n\n if (aUndefined || bUndefined) {\n if (sortUndefined === 'first') return aUndefined ? -1 : 1\n if (sortUndefined === 'last') return aUndefined ? 1 : -1\n sortInt =\n aUndefined && bUndefined\n ? 0\n : aUndefined\n ? sortUndefined\n : -sortUndefined\n }\n }\n\n if (sortInt === 0) {\n sortInt = columnInfo.sortingFn(rowA, rowB, sortEntry.id)\n }\n\n // If sorting is non-zero, take care of desc and inversion\n if (sortInt !== 0) {\n if (isDesc) {\n sortInt *= -1\n }\n\n if (columnInfo.invertSorting) {\n sortInt *= -1\n }\n\n return sortInt\n }\n }\n\n return rowA.index - rowB.index\n })\n\n // If there are sub-rows, sort them\n sortedData.forEach(row => {\n sortedFlatRows.push(row)\n if (row.subRows?.length) {\n row.subRows = sortData(row.subRows)\n }\n })\n\n return sortedData\n }\n\n return {\n rows: sortData(rowModel.rows),\n flatRows: sortedFlatRows,\n rowsById: rowModel.rowsById,\n }\n },\n getMemoOptions(table.options, 'debugTable', 'getSortedRowModel', () =>\n table._autoResetPageIndex()\n )\n )\n}\n"],"names":[],"mappings":";AAIO,SAAS,oBAEW;AACzB,SAAO,CACL,UAAA;AAAA,IACE,MAAM,CAAC,MAAM,SAAA,EAAW,SAAS,MAAM,sBAAsB;AAAA,IAC7D,CAAC,SAAS,aAAa;AACrB,UAAI,CAAC,SAAS,KAAK,UAAU,EAAC,mCAAS,SAAQ;AACtC,eAAA;AAAA,MACT;AAEM,YAAA,eAAe,MAAM,SAAA,EAAW;AAEtC,YAAM,iBAA+B,CAAA;AAGrC,YAAM,mBAAmB,aAAa;AAAA,QACpC,UAAQ;;AAAA,6BAAM,UAAU,KAAK,EAAE,MAAvB,mBAA0B;AAAA;AAAA,MAAW;AAG/C,YAAM,iBAOF,CAAA;AAEJ,uBAAiB,QAAQ,CAAa,cAAA;AACpC,cAAM,SAAS,MAAM,UAAU,UAAU,EAAE;AAC3C,YAAI,CAAC;AAAQ;AAEE,uBAAA,UAAU,EAAE,IAAI;AAAA,UAC7B,eAAe,OAAO,UAAU;AAAA,UAChC,eAAe,OAAO,UAAU;AAAA,UAChC,WAAW,OAAO,aAAa;AAAA,QAAA;AAAA,MACjC,CACD;AAEK,YAAA,WAAW,CAAC,SAAuB;AAGvC,cAAM,aAAa,KAAK,IAAI,UAAQ,EAAE,GAAG,IAAM,EAAA;AAEpC,mBAAA,KAAK,CAAC,MAAM,SAAS;AAC9B,mBAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AAC7C,kBAAA,YAAY,iBAAiB,CAAC;AAC9B,kBAAA,aAAa,eAAe,UAAU,EAAE;AAC9C,kBAAM,gBAAgB,WAAW;AAC3B,kBAAA,UAAS,uCAAW,SAAQ;AAElC,gBAAI,UAAU;AAGd,gBAAI,eAAe;AACjB,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AACzC,oBAAM,SAAS,KAAK,SAAS,UAAU,EAAE;AAEzC,oBAAM,aAAa,WAAW;AAC9B,oBAAM,aAAa,WAAW;AAE9B,kBAAI,cAAc,YAAY;AAC5B,oBAAI,kBAAkB;AAAS,yBAAO,aAAa,KAAK;AACxD,oBAAI,kBAAkB;AAAQ,yBAAO,aAAa,IAAI;AACtD,0BACE,cAAc,aACV,IACA,aACE,gBACA,CAAC;AAAA,cACX;AAAA,YACF;AAEA,gBAAI,YAAY,GAAG;AACjB,wBAAU,WAAW,UAAU,MAAM,MAAM,UAAU,EAAE;AAAA,YACzD;AAGA,gBAAI,YAAY,GAAG;AACjB,kBAAI,QAAQ;AACC,2BAAA;AAAA,cACb;AAEA,kBAAI,WAAW,eAAe;AACjB,2BAAA;AAAA,cACb;AAEO,qBAAA;AAAA,YACT;AAAA,UACF;AAEO,iBAAA,KAAK,QAAQ,KAAK;AAAA,QAAA,CAC1B;AAGD,mBAAW,QAAQ,CAAO,QAAA;;AACxB,yBAAe,KAAK,GAAG;AACnB,eAAA,SAAI,YAAJ,mBAAa,QAAQ;AACnB,gBAAA,UAAU,SAAS,IAAI,OAAO;AAAA,UACpC;AAAA,QAAA,CACD;AAEM,eAAA;AAAA,MAAA;AAGF,aAAA;AAAA,QACL,MAAM,SAAS,SAAS,IAAI;AAAA,QAC5B,UAAU;AAAA,QACV,UAAU,SAAS;AAAA,MAAA;AAAA,IAEvB;AAAA,IACA;AAAA,MAAe,MAAM;AAAA,MAAS;AAAA,MAAc;AAAA,MAAqB,MAC/D,MAAM,oBAAoB;AAAA,IAC5B;AAAA,EAAA;AAEN;"}
@@ -1,4 +1,5 @@
1
- import { TableOptionsResolved, TableState, Updater } from './types';
1
+ import { TableOptionsResolved, TableState, Updater } from './types.js';
2
+
2
3
  export type PartialKeys<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
3
4
  export type RequiredKeys<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
4
5
  export type Overwrite<T, U extends {