@tanstack/table-core 9.0.0-alpha.47 → 9.0.0-alpha.49

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 (246) hide show
  1. package/README.md +10 -0
  2. package/dist/core/cells/coreCellsFeature.utils.cjs +11 -8
  3. package/dist/core/cells/coreCellsFeature.utils.cjs.map +1 -1
  4. package/dist/core/cells/coreCellsFeature.utils.d.cts +11 -8
  5. package/dist/core/cells/coreCellsFeature.utils.d.ts +11 -8
  6. package/dist/core/cells/coreCellsFeature.utils.js +11 -8
  7. package/dist/core/cells/coreCellsFeature.utils.js.map +1 -1
  8. package/dist/core/columns/coreColumnsFeature.types.d.cts +7 -6
  9. package/dist/core/columns/coreColumnsFeature.types.d.ts +7 -6
  10. package/dist/core/columns/coreColumnsFeature.utils.cjs +37 -27
  11. package/dist/core/columns/coreColumnsFeature.utils.cjs.map +1 -1
  12. package/dist/core/columns/coreColumnsFeature.utils.d.cts +37 -27
  13. package/dist/core/columns/coreColumnsFeature.utils.d.ts +37 -27
  14. package/dist/core/columns/coreColumnsFeature.utils.js +37 -27
  15. package/dist/core/columns/coreColumnsFeature.utils.js.map +1 -1
  16. package/dist/core/headers/coreHeadersFeature.types.d.cts +6 -4
  17. package/dist/core/headers/coreHeadersFeature.types.d.ts +6 -4
  18. package/dist/core/headers/coreHeadersFeature.utils.cjs +23 -18
  19. package/dist/core/headers/coreHeadersFeature.utils.cjs.map +1 -1
  20. package/dist/core/headers/coreHeadersFeature.utils.d.cts +23 -18
  21. package/dist/core/headers/coreHeadersFeature.utils.d.ts +23 -18
  22. package/dist/core/headers/coreHeadersFeature.utils.js +23 -18
  23. package/dist/core/headers/coreHeadersFeature.utils.js.map +1 -1
  24. package/dist/core/row-models/coreRowModelsFeature.utils.cjs +48 -36
  25. package/dist/core/row-models/coreRowModelsFeature.utils.cjs.map +1 -1
  26. package/dist/core/row-models/coreRowModelsFeature.utils.d.cts +48 -36
  27. package/dist/core/row-models/coreRowModelsFeature.utils.d.ts +48 -36
  28. package/dist/core/row-models/coreRowModelsFeature.utils.js +48 -36
  29. package/dist/core/row-models/coreRowModelsFeature.utils.js.map +1 -1
  30. package/dist/core/rows/coreRowsFeature.types.d.cts +4 -4
  31. package/dist/core/rows/coreRowsFeature.types.d.ts +4 -4
  32. package/dist/core/rows/coreRowsFeature.utils.cjs +34 -28
  33. package/dist/core/rows/coreRowsFeature.utils.cjs.map +1 -1
  34. package/dist/core/rows/coreRowsFeature.utils.d.cts +34 -28
  35. package/dist/core/rows/coreRowsFeature.utils.d.ts +34 -28
  36. package/dist/core/rows/coreRowsFeature.utils.js +34 -28
  37. package/dist/core/rows/coreRowsFeature.utils.js.map +1 -1
  38. package/dist/core/table/coreTablesFeature.types.d.cts +6 -2
  39. package/dist/core/table/coreTablesFeature.types.d.ts +6 -2
  40. package/dist/core/table/coreTablesFeature.utils.cjs +2 -2
  41. package/dist/core/table/coreTablesFeature.utils.cjs.map +1 -1
  42. package/dist/core/table/coreTablesFeature.utils.d.cts +2 -2
  43. package/dist/core/table/coreTablesFeature.utils.d.ts +2 -2
  44. package/dist/core/table/coreTablesFeature.utils.js +2 -2
  45. package/dist/core/table/coreTablesFeature.utils.js.map +1 -1
  46. package/dist/features/column-faceting/columnFacetingFeature.types.d.cts +16 -10
  47. package/dist/features/column-faceting/columnFacetingFeature.types.d.ts +16 -10
  48. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs +26 -18
  49. package/dist/features/column-faceting/columnFacetingFeature.utils.cjs.map +1 -1
  50. package/dist/features/column-faceting/columnFacetingFeature.utils.d.cts +26 -18
  51. package/dist/features/column-faceting/columnFacetingFeature.utils.d.ts +26 -18
  52. package/dist/features/column-faceting/columnFacetingFeature.utils.js +26 -18
  53. package/dist/features/column-faceting/columnFacetingFeature.utils.js.map +1 -1
  54. package/dist/features/column-filtering/columnFilteringFeature.types.d.cts +21 -11
  55. package/dist/features/column-filtering/columnFilteringFeature.types.d.ts +21 -11
  56. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs +39 -28
  57. package/dist/features/column-filtering/columnFilteringFeature.utils.cjs.map +1 -1
  58. package/dist/features/column-filtering/columnFilteringFeature.utils.d.cts +39 -28
  59. package/dist/features/column-filtering/columnFilteringFeature.utils.d.ts +39 -28
  60. package/dist/features/column-filtering/columnFilteringFeature.utils.js +39 -28
  61. package/dist/features/column-filtering/columnFilteringFeature.utils.js.map +1 -1
  62. package/dist/features/column-grouping/columnGroupingFeature.types.d.cts +18 -14
  63. package/dist/features/column-grouping/columnGroupingFeature.types.d.ts +18 -14
  64. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs +55 -43
  65. package/dist/features/column-grouping/columnGroupingFeature.utils.cjs.map +1 -1
  66. package/dist/features/column-grouping/columnGroupingFeature.utils.d.cts +55 -43
  67. package/dist/features/column-grouping/columnGroupingFeature.utils.d.ts +55 -43
  68. package/dist/features/column-grouping/columnGroupingFeature.utils.js +55 -43
  69. package/dist/features/column-grouping/columnGroupingFeature.utils.js.map +1 -1
  70. package/dist/features/column-ordering/columnOrderingFeature.types.d.cts +14 -5
  71. package/dist/features/column-ordering/columnOrderingFeature.types.d.ts +14 -5
  72. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs +30 -23
  73. package/dist/features/column-ordering/columnOrderingFeature.utils.cjs.map +1 -1
  74. package/dist/features/column-ordering/columnOrderingFeature.utils.d.cts +30 -23
  75. package/dist/features/column-ordering/columnOrderingFeature.utils.d.ts +30 -23
  76. package/dist/features/column-ordering/columnOrderingFeature.utils.js +30 -23
  77. package/dist/features/column-ordering/columnOrderingFeature.utils.js.map +1 -1
  78. package/dist/features/column-pinning/columnPinningFeature.types.d.cts +43 -31
  79. package/dist/features/column-pinning/columnPinningFeature.types.d.ts +43 -31
  80. package/dist/features/column-pinning/columnPinningFeature.utils.cjs +111 -91
  81. package/dist/features/column-pinning/columnPinningFeature.utils.cjs.map +1 -1
  82. package/dist/features/column-pinning/columnPinningFeature.utils.d.cts +111 -91
  83. package/dist/features/column-pinning/columnPinningFeature.utils.d.ts +111 -91
  84. package/dist/features/column-pinning/columnPinningFeature.utils.js +111 -91
  85. package/dist/features/column-pinning/columnPinningFeature.utils.js.map +1 -1
  86. package/dist/features/column-resizing/columnResizingFeature.types.d.cts +9 -9
  87. package/dist/features/column-resizing/columnResizingFeature.types.d.ts +9 -9
  88. package/dist/features/column-resizing/columnResizingFeature.utils.cjs +29 -20
  89. package/dist/features/column-resizing/columnResizingFeature.utils.cjs.map +1 -1
  90. package/dist/features/column-resizing/columnResizingFeature.utils.d.cts +28 -19
  91. package/dist/features/column-resizing/columnResizingFeature.utils.d.ts +28 -19
  92. package/dist/features/column-resizing/columnResizingFeature.utils.js +29 -20
  93. package/dist/features/column-resizing/columnResizingFeature.utils.js.map +1 -1
  94. package/dist/features/column-sizing/columnSizingFeature.types.d.cts +19 -12
  95. package/dist/features/column-sizing/columnSizingFeature.types.d.ts +19 -12
  96. package/dist/features/column-sizing/columnSizingFeature.utils.cjs +52 -41
  97. package/dist/features/column-sizing/columnSizingFeature.utils.cjs.map +1 -1
  98. package/dist/features/column-sizing/columnSizingFeature.utils.d.cts +52 -41
  99. package/dist/features/column-sizing/columnSizingFeature.utils.d.ts +52 -41
  100. package/dist/features/column-sizing/columnSizingFeature.utils.js +52 -41
  101. package/dist/features/column-sizing/columnSizingFeature.utils.js.map +1 -1
  102. package/dist/features/column-visibility/columnVisibilityFeature.types.d.cts +16 -13
  103. package/dist/features/column-visibility/columnVisibilityFeature.types.d.ts +16 -13
  104. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs +54 -42
  105. package/dist/features/column-visibility/columnVisibilityFeature.utils.cjs.map +1 -1
  106. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.cts +54 -42
  107. package/dist/features/column-visibility/columnVisibilityFeature.utils.d.ts +54 -42
  108. package/dist/features/column-visibility/columnVisibilityFeature.utils.js +54 -42
  109. package/dist/features/column-visibility/columnVisibilityFeature.utils.js.map +1 -1
  110. package/dist/features/global-filtering/globalFilteringFeature.types.d.cts +10 -5
  111. package/dist/features/global-filtering/globalFilteringFeature.types.d.ts +10 -5
  112. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs +20 -14
  113. package/dist/features/global-filtering/globalFilteringFeature.utils.cjs.map +1 -1
  114. package/dist/features/global-filtering/globalFilteringFeature.utils.d.cts +20 -14
  115. package/dist/features/global-filtering/globalFilteringFeature.utils.d.ts +20 -14
  116. package/dist/features/global-filtering/globalFilteringFeature.utils.js +20 -14
  117. package/dist/features/global-filtering/globalFilteringFeature.utils.js.map +1 -1
  118. package/dist/features/row-expanding/rowExpandingFeature.types.d.cts +16 -15
  119. package/dist/features/row-expanding/rowExpandingFeature.types.d.ts +16 -15
  120. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs +56 -41
  121. package/dist/features/row-expanding/rowExpandingFeature.utils.cjs.map +1 -1
  122. package/dist/features/row-expanding/rowExpandingFeature.utils.d.cts +56 -41
  123. package/dist/features/row-expanding/rowExpandingFeature.utils.d.ts +56 -41
  124. package/dist/features/row-expanding/rowExpandingFeature.utils.js +56 -41
  125. package/dist/features/row-expanding/rowExpandingFeature.utils.js.map +1 -1
  126. package/dist/features/row-pagination/rowPaginationFeature.types.d.cts +19 -12
  127. package/dist/features/row-pagination/rowPaginationFeature.types.d.ts +19 -12
  128. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs +49 -32
  129. package/dist/features/row-pagination/rowPaginationFeature.utils.cjs.map +1 -1
  130. package/dist/features/row-pagination/rowPaginationFeature.utils.d.cts +49 -32
  131. package/dist/features/row-pagination/rowPaginationFeature.utils.d.ts +49 -32
  132. package/dist/features/row-pagination/rowPaginationFeature.utils.js +49 -32
  133. package/dist/features/row-pagination/rowPaginationFeature.utils.js.map +1 -1
  134. package/dist/features/row-pinning/rowPinningFeature.types.d.cts +12 -8
  135. package/dist/features/row-pinning/rowPinningFeature.types.d.ts +12 -8
  136. package/dist/features/row-pinning/rowPinningFeature.utils.cjs +39 -29
  137. package/dist/features/row-pinning/rowPinningFeature.utils.cjs.map +1 -1
  138. package/dist/features/row-pinning/rowPinningFeature.utils.d.cts +39 -29
  139. package/dist/features/row-pinning/rowPinningFeature.utils.d.ts +39 -29
  140. package/dist/features/row-pinning/rowPinningFeature.utils.js +39 -29
  141. package/dist/features/row-pinning/rowPinningFeature.utils.js.map +1 -1
  142. package/dist/features/row-selection/rowSelectionFeature.types.d.cts +30 -24
  143. package/dist/features/row-selection/rowSelectionFeature.types.d.ts +30 -24
  144. package/dist/features/row-selection/rowSelectionFeature.utils.cjs +89 -69
  145. package/dist/features/row-selection/rowSelectionFeature.utils.cjs.map +1 -1
  146. package/dist/features/row-selection/rowSelectionFeature.utils.d.cts +89 -69
  147. package/dist/features/row-selection/rowSelectionFeature.utils.d.ts +89 -69
  148. package/dist/features/row-selection/rowSelectionFeature.utils.js +89 -69
  149. package/dist/features/row-selection/rowSelectionFeature.utils.js.map +1 -1
  150. package/dist/features/row-sorting/rowSortingFeature.types.d.cts +10 -8
  151. package/dist/features/row-sorting/rowSortingFeature.types.d.ts +10 -8
  152. package/dist/features/row-sorting/rowSortingFeature.utils.cjs +62 -45
  153. package/dist/features/row-sorting/rowSortingFeature.utils.cjs.map +1 -1
  154. package/dist/features/row-sorting/rowSortingFeature.utils.d.cts +61 -44
  155. package/dist/features/row-sorting/rowSortingFeature.utils.d.ts +61 -44
  156. package/dist/features/row-sorting/rowSortingFeature.utils.js +62 -45
  157. package/dist/features/row-sorting/rowSortingFeature.utils.js.map +1 -1
  158. package/dist/fns/aggregationFns.cjs +33 -9
  159. package/dist/fns/aggregationFns.cjs.map +1 -1
  160. package/dist/fns/aggregationFns.d.cts +33 -9
  161. package/dist/fns/aggregationFns.d.ts +33 -9
  162. package/dist/fns/aggregationFns.js +33 -9
  163. package/dist/fns/aggregationFns.js.map +1 -1
  164. package/dist/fns/filterFns.cjs +48 -17
  165. package/dist/fns/filterFns.cjs.map +1 -1
  166. package/dist/fns/filterFns.d.cts +42 -15
  167. package/dist/fns/filterFns.d.ts +42 -15
  168. package/dist/fns/filterFns.js +48 -17
  169. package/dist/fns/filterFns.js.map +1 -1
  170. package/dist/helpers/columnHelper.cjs +9 -4
  171. package/dist/helpers/columnHelper.cjs.map +1 -1
  172. package/dist/helpers/columnHelper.d.cts +9 -4
  173. package/dist/helpers/columnHelper.d.ts +9 -4
  174. package/dist/helpers/columnHelper.js +9 -4
  175. package/dist/helpers/columnHelper.js.map +1 -1
  176. package/dist/helpers/tableOptions.cjs.map +1 -1
  177. package/dist/helpers/tableOptions.d.cts +12 -9
  178. package/dist/helpers/tableOptions.d.ts +12 -9
  179. package/dist/helpers/tableOptions.js.map +1 -1
  180. package/dist/types/ColumnDef.d.cts +38 -0
  181. package/dist/types/ColumnDef.d.ts +38 -0
  182. package/dist/types/TableOptions.d.cts +15 -0
  183. package/dist/types/TableOptions.d.ts +15 -0
  184. package/dist/types/TableState.d.cts +12 -0
  185. package/dist/types/TableState.d.ts +12 -0
  186. package/package.json +5 -3
  187. package/skills/column-definitions/SKILL.md +333 -0
  188. package/skills/column-layout/SKILL.md +328 -0
  189. package/skills/column-layout/references/subsystems.md +220 -0
  190. package/skills/customizing-feature-behavior/SKILL.md +416 -0
  191. package/skills/filtering/SKILL.md +357 -0
  192. package/skills/filtering/references/faceting-and-fuzzy.md +191 -0
  193. package/skills/grouping/SKILL.md +448 -0
  194. package/skills/migrate-v8-to-v9/SKILL.md +495 -0
  195. package/skills/pagination/SKILL.md +385 -0
  196. package/skills/row-expanding/SKILL.md +348 -0
  197. package/skills/row-pinning/SKILL.md +269 -0
  198. package/skills/row-selection/SKILL.md +391 -0
  199. package/skills/setup/SKILL.md +400 -0
  200. package/skills/sorting/SKILL.md +344 -0
  201. package/skills/state-management/SKILL.md +388 -0
  202. package/src/core/cells/coreCellsFeature.utils.ts +11 -8
  203. package/src/core/columns/coreColumnsFeature.types.ts +7 -6
  204. package/src/core/columns/coreColumnsFeature.utils.ts +37 -27
  205. package/src/core/headers/coreHeadersFeature.types.ts +6 -4
  206. package/src/core/headers/coreHeadersFeature.utils.ts +23 -18
  207. package/src/core/row-models/coreRowModelsFeature.utils.ts +48 -36
  208. package/src/core/rows/coreRowsFeature.types.ts +4 -4
  209. package/src/core/rows/coreRowsFeature.utils.ts +34 -28
  210. package/src/core/table/coreTablesFeature.types.ts +6 -2
  211. package/src/core/table/coreTablesFeature.utils.ts +2 -2
  212. package/src/features/column-faceting/columnFacetingFeature.types.ts +16 -10
  213. package/src/features/column-faceting/columnFacetingFeature.utils.ts +26 -18
  214. package/src/features/column-filtering/columnFilteringFeature.types.ts +21 -11
  215. package/src/features/column-filtering/columnFilteringFeature.utils.ts +39 -28
  216. package/src/features/column-grouping/columnGroupingFeature.types.ts +18 -14
  217. package/src/features/column-grouping/columnGroupingFeature.utils.ts +55 -43
  218. package/src/features/column-ordering/columnOrderingFeature.types.ts +14 -5
  219. package/src/features/column-ordering/columnOrderingFeature.utils.ts +30 -23
  220. package/src/features/column-pinning/columnPinningFeature.types.ts +43 -31
  221. package/src/features/column-pinning/columnPinningFeature.utils.ts +111 -91
  222. package/src/features/column-resizing/columnResizingFeature.types.ts +9 -9
  223. package/src/features/column-resizing/columnResizingFeature.utils.ts +29 -21
  224. package/src/features/column-sizing/columnSizingFeature.types.ts +19 -12
  225. package/src/features/column-sizing/columnSizingFeature.utils.ts +52 -41
  226. package/src/features/column-visibility/columnVisibilityFeature.types.ts +16 -13
  227. package/src/features/column-visibility/columnVisibilityFeature.utils.ts +54 -42
  228. package/src/features/global-filtering/globalFilteringFeature.types.ts +10 -5
  229. package/src/features/global-filtering/globalFilteringFeature.utils.ts +20 -14
  230. package/src/features/row-expanding/rowExpandingFeature.types.ts +16 -15
  231. package/src/features/row-expanding/rowExpandingFeature.utils.ts +56 -41
  232. package/src/features/row-pagination/rowPaginationFeature.types.ts +19 -12
  233. package/src/features/row-pagination/rowPaginationFeature.utils.ts +49 -32
  234. package/src/features/row-pinning/rowPinningFeature.types.ts +12 -8
  235. package/src/features/row-pinning/rowPinningFeature.utils.ts +39 -29
  236. package/src/features/row-selection/rowSelectionFeature.types.ts +30 -24
  237. package/src/features/row-selection/rowSelectionFeature.utils.ts +89 -69
  238. package/src/features/row-sorting/rowSortingFeature.types.ts +10 -8
  239. package/src/features/row-sorting/rowSortingFeature.utils.ts +62 -45
  240. package/src/fns/aggregationFns.ts +33 -9
  241. package/src/fns/filterFns.ts +48 -17
  242. package/src/helpers/columnHelper.ts +9 -4
  243. package/src/helpers/tableOptions.ts +12 -9
  244. package/src/types/ColumnDef.ts +38 -0
  245. package/src/types/TableOptions.ts +15 -0
  246. package/src/types/TableState.ts +12 -0
@@ -3,13 +3,14 @@ const require_rowExpandingFeature_utils = require('../row-expanding/rowExpanding
3
3
 
4
4
  //#region src/features/row-pinning/rowPinningFeature.utils.ts
5
5
  /**
6
- * Returns the default row pinning state.
6
+ * Creates the default row pinning state.
7
7
  *
8
- * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
8
+ * Both pinning regions start empty. Reset APIs use this value when
9
+ * `defaultState` is `true`.
9
10
  *
10
11
  * @example
11
12
  * ```ts
12
- * const initialValue = getDefaultRowPinningState()
13
+ * const pinning = getDefaultRowPinningState()
13
14
  * ```
14
15
  */
15
16
  function getDefaultRowPinningState() {
@@ -19,13 +20,14 @@ function getDefaultRowPinningState() {
19
20
  };
20
21
  }
21
22
  /**
22
- * Updates the table's row pinning state slice.
23
+ * Routes a row pinning updater through the table's row-pinning change handler.
23
24
  *
24
- * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
25
+ * The updater may be a next `{ top, bottom }` state or a function of the
26
+ * previous state, matching the instance `table.setRowPinning` behavior.
25
27
  *
26
28
  * @example
27
29
  * ```ts
28
- * table_setRowPinning(table, (old) => old)
30
+ * table_setRowPinning(table, (old) => ({ ...old, top: [rowId] }))
29
31
  * ```
30
32
  */
31
33
  function table_setRowPinning(table, updater) {
@@ -33,9 +35,11 @@ function table_setRowPinning(table, updater) {
33
35
  (_table$options$onRowP = (_table$options = table.options).onRowPinningChange) === null || _table$options$onRowP === void 0 || _table$options$onRowP.call(_table$options, updater);
34
36
  }
35
37
  /**
36
- * Resets the table's row pinning state slice.
38
+ * Resets `rowPinning` to the configured initial state or feature default.
37
39
  *
38
- * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
40
+ * With no argument, the reset clones `table.initialState.rowPinning` when it
41
+ * exists. Passing `true` ignores initial state and resets to empty top/bottom
42
+ * arrays.
39
43
  *
40
44
  * @example
41
45
  * ```ts
@@ -47,13 +51,14 @@ function table_resetRowPinning(table, defaultState) {
47
51
  table_setRowPinning(table, defaultState ? getDefaultRowPinningState() : require_utils.cloneState(table.initialState.rowPinning ?? getDefaultRowPinningState()));
48
52
  }
49
53
  /**
50
- * Returns is some rows pinned for the table.
54
+ * Checks whether any rows are pinned.
51
55
  *
52
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
56
+ * Omit `position` to check both regions, or pass `'top'`/`'bottom'` to inspect
57
+ * one region.
53
58
  *
54
59
  * @example
55
60
  * ```ts
56
- * const value = table_getIsSomeRowsPinned(table)
61
+ * const hasPinnedRows = table_getIsSomeRowsPinned(table)
57
62
  * ```
58
63
  */
59
64
  function table_getIsSomeRowsPinned(table, position) {
@@ -82,39 +87,42 @@ function table_getPinnedRows(table, position) {
82
87
  return result;
83
88
  }
84
89
  /**
85
- * Returns top rows for the table.
90
+ * Resolves the visible rows pinned to the top region.
86
91
  *
87
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
92
+ * The result follows `state.rowPinning.top` order and marks each row with
93
+ * `position = 'top'`.
88
94
  *
89
95
  * @example
90
96
  * ```ts
91
- * const value = table_getTopRows(table)
97
+ * const rows = table_getTopRows(table)
92
98
  * ```
93
99
  */
94
100
  function table_getTopRows(table) {
95
101
  return table_getPinnedRows(table, "top");
96
102
  }
97
103
  /**
98
- * Returns bottom rows for the table.
104
+ * Resolves the visible rows pinned to the bottom region.
99
105
  *
100
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
106
+ * The result follows `state.rowPinning.bottom` order and marks each row with
107
+ * `position = 'bottom'`.
101
108
  *
102
109
  * @example
103
110
  * ```ts
104
- * const value = table_getBottomRows(table)
111
+ * const rows = table_getBottomRows(table)
105
112
  * ```
106
113
  */
107
114
  function table_getBottomRows(table) {
108
115
  return table_getPinnedRows(table, "bottom");
109
116
  }
110
117
  /**
111
- * Returns center rows for the table.
118
+ * Resolves rows that are not pinned to top or bottom.
112
119
  *
113
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
120
+ * The current row model is filtered by `state.rowPinning.top` and
121
+ * `state.rowPinning.bottom`.
114
122
  *
115
123
  * @example
116
124
  * ```ts
117
- * const value = table_getCenterRows(table)
125
+ * const rows = table_getCenterRows(table)
118
126
  * ```
119
127
  */
120
128
  function table_getCenterRows(table) {
@@ -125,13 +133,14 @@ function table_getCenterRows(table) {
125
133
  return allRows.filter((d) => !topAndBottom.has(d.id));
126
134
  }
127
135
  /**
128
- * Returns whether a row can use pin.
136
+ * Checks whether this row can be pinned.
129
137
  *
130
- * This evaluates row data, table options, and feature-specific enablement rules.
138
+ * `options.enableRowPinning` may be a boolean or a row predicate; it defaults
139
+ * to `true`.
131
140
  *
132
141
  * @example
133
142
  * ```ts
134
- * const value = row_getCanPin(row)
143
+ * const canPin = row_getCanPin(row)
135
144
  * ```
136
145
  */
137
146
  function row_getCanPin(row) {
@@ -140,13 +149,14 @@ function row_getCanPin(row) {
140
149
  return enableRowPinning ?? true;
141
150
  }
142
151
  /**
143
- * Returns is pinned for a row.
152
+ * Reads this row's current pinning region.
144
153
  *
145
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
154
+ * Rows listed in `state.rowPinning.top` return `'top'`, rows listed in
155
+ * `bottom` return `'bottom'`, and unpinned rows return `false`.
146
156
  *
147
157
  * @example
148
158
  * ```ts
149
- * const value = row_getIsPinned(row)
159
+ * const position = row_getIsPinned(row)
150
160
  * ```
151
161
  */
152
162
  function row_getIsPinned(row) {
@@ -155,13 +165,13 @@ function row_getIsPinned(row) {
155
165
  return top.includes(row.id) ? "top" : bottom.includes(row.id) ? "bottom" : false;
156
166
  }
157
167
  /**
158
- * Returns pinned index for a row.
168
+ * Finds this row's visible index within its pinned region.
159
169
  *
160
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
170
+ * Unpinned rows return `-1`.
161
171
  *
162
172
  * @example
163
173
  * ```ts
164
- * const value = row_getPinnedIndex(row)
174
+ * const index = row_getPinnedIndex(row)
165
175
  * ```
166
176
  */
167
177
  function row_getPinnedIndex(row) {
@@ -1 +1 @@
1
- {"version":3,"file":"rowPinningFeature.utils.cjs","names":["cloneState","row_getIsAllParentsExpanded","callMemoOrStaticFn"],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\n/**\n * Returns the default row pinning state.\n *\n * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.\n *\n * @example\n * ```ts\n * const initialValue = getDefaultRowPinningState()\n * ```\n */\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\n/**\n * Updates the table's row pinning state slice.\n *\n * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.\n *\n * @example\n * ```ts\n * table_setRowPinning(table, (old) => old)\n * ```\n */\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\n/**\n * Resets the table's row pinning state slice.\n *\n * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.\n *\n * @example\n * ```ts\n * table_resetRowPinning(table)\n * table_resetRowPinning(table, true)\n * ```\n */\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\n/**\n * Returns is some rows pinned for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getIsSomeRowsPinned(table)\n * ```\n */\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n const keepPinnedRows = table.options.keepPinnedRows ?? true\n\n const result: Array<Row<TFeatures, TData>> = []\n for (let i = 0; i < pinnedRowIds.length; i++) {\n const rowId = pinnedRowIds[i]!\n let row: Row<TFeatures, TData> | undefined\n if (keepPinnedRows) {\n // get all rows that are pinned even if they would not be otherwise\n // visible; account for expanded parent rows, but not pagination/filtering\n const fullRow = table.getRow(rowId, true)\n if (row_getIsAllParentsExpanded(fullRow)) row = fullRow\n } else {\n // else get only visible rows that are pinned\n row = visibleRows.find((r) => r.id === rowId)\n }\n if (!row)\n continue\n // Assign position property directly to preserve prototype chain\n ;(row as any).position = position\n result.push(row)\n }\n return result\n}\n\n/**\n * Returns top rows for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getTopRows(table)\n * ```\n */\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\n/**\n * Returns bottom rows for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getBottomRows(table)\n * ```\n */\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\n/**\n * Returns center rows for the table.\n *\n * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.\n *\n * @example\n * ```ts\n * const value = table_getCenterRows(table)\n * ```\n */\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\n/**\n * Returns whether a row can use pin.\n *\n * This evaluates row data, table options, and feature-specific enablement rules.\n *\n * @example\n * ```ts\n * const value = row_getCanPin(row)\n * ```\n */\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\n/**\n * Returns is pinned for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getIsPinned(row)\n * ```\n */\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\n/**\n * Returns pinned index for a row.\n *\n * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.\n *\n * @example\n * ```ts\n * const value = row_getPinnedIndex(row)\n * ```\n */\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\n/**\n * Pins or unpins a row.\n *\n * Optional flags let callers include parent rows or leaf rows when updating\n * the row pinning state.\n *\n * @example\n * ```ts\n * row_pin(row, 'top')\n * ```\n */\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"rowPinningFeature.utils.cjs","names":["cloneState","row_getIsAllParentsExpanded","callMemoOrStaticFn"],"sources":["../../../src/features/row-pinning/rowPinningFeature.utils.ts"],"sourcesContent":["import { row_getIsAllParentsExpanded } from '../row-expanding/rowExpandingFeature.utils'\nimport { callMemoOrStaticFn, cloneState } from '../../utils'\nimport type { RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Row } from '../../types/Row'\nimport type {\n RowPinningPosition,\n RowPinningState,\n} from './rowPinningFeature.types'\n\n// State Utils\n\n/**\n * Creates the default row pinning state.\n *\n * Both pinning regions start empty. Reset APIs use this value when\n * `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const pinning = getDefaultRowPinningState()\n * ```\n */\nexport function getDefaultRowPinningState(): RowPinningState {\n return {\n top: [],\n bottom: [],\n }\n}\n\n/**\n * Routes a row pinning updater through the table's row-pinning change handler.\n *\n * The updater may be a next `{ top, bottom }` state or a function of the\n * previous state, matching the instance `table.setRowPinning` behavior.\n *\n * @example\n * ```ts\n * table_setRowPinning(table, (old) => ({ ...old, top: [rowId] }))\n * ```\n */\nexport function table_setRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<RowPinningState>,\n): void {\n table.options.onRowPinningChange?.(updater)\n}\n\n/**\n * Resets `rowPinning` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.rowPinning` when it\n * exists. Passing `true` ignores initial state and resets to empty top/bottom\n * arrays.\n *\n * @example\n * ```ts\n * table_resetRowPinning(table)\n * table_resetRowPinning(table, true)\n * ```\n */\nexport function table_resetRowPinning<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void {\n table_setRowPinning(\n table,\n defaultState\n ? getDefaultRowPinningState()\n : cloneState(\n table.initialState.rowPinning ?? getDefaultRowPinningState(),\n ),\n )\n}\n\n// Table Utils\n\n/**\n * Checks whether any rows are pinned.\n *\n * Omit `position` to check both regions, or pass `'top'`/`'bottom'` to inspect\n * one region.\n *\n * @example\n * ```ts\n * const hasPinnedRows = table_getIsSomeRowsPinned(table)\n * ```\n */\nexport function table_getIsSomeRowsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position?: RowPinningPosition,\n): boolean {\n const rowPinning = table.atoms.rowPinning?.get()\n\n if (!position) {\n return Boolean(rowPinning?.top.length || rowPinning?.bottom.length)\n }\n return Boolean(rowPinning?.[position].length)\n}\n\nfunction table_getPinnedRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n position: 'top' | 'bottom',\n): Array<Row<TFeatures, TData>> {\n const visibleRows = table.getRowModel().rows\n const pinnedRowIds = table.atoms.rowPinning?.get()?.[position] ?? []\n const keepPinnedRows = table.options.keepPinnedRows ?? true\n\n const result: Array<Row<TFeatures, TData>> = []\n for (let i = 0; i < pinnedRowIds.length; i++) {\n const rowId = pinnedRowIds[i]!\n let row: Row<TFeatures, TData> | undefined\n if (keepPinnedRows) {\n // get all rows that are pinned even if they would not be otherwise\n // visible; account for expanded parent rows, but not pagination/filtering\n const fullRow = table.getRow(rowId, true)\n if (row_getIsAllParentsExpanded(fullRow)) row = fullRow\n } else {\n // else get only visible rows that are pinned\n row = visibleRows.find((r) => r.id === rowId)\n }\n if (!row)\n continue\n // Assign position property directly to preserve prototype chain\n ;(row as any).position = position\n result.push(row)\n }\n return result\n}\n\n/**\n * Resolves the visible rows pinned to the top region.\n *\n * The result follows `state.rowPinning.top` order and marks each row with\n * `position = 'top'`.\n *\n * @example\n * ```ts\n * const rows = table_getTopRows(table)\n * ```\n */\nexport function table_getTopRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'top')\n}\n\n/**\n * Resolves the visible rows pinned to the bottom region.\n *\n * The result follows `state.rowPinning.bottom` order and marks each row with\n * `position = 'bottom'`.\n *\n * @example\n * ```ts\n * const rows = table_getBottomRows(table)\n * ```\n */\nexport function table_getBottomRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n return table_getPinnedRows(table, 'bottom')\n}\n\n/**\n * Resolves rows that are not pinned to top or bottom.\n *\n * The current row model is filtered by `state.rowPinning.top` and\n * `state.rowPinning.bottom`.\n *\n * @example\n * ```ts\n * const rows = table_getCenterRows(table)\n * ```\n */\nexport function table_getCenterRows<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>> {\n const { top, bottom } =\n table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n const allRows = table.getRowModel().rows\n\n const topAndBottom = new Set([...top, ...bottom])\n return allRows.filter((d) => !topAndBottom.has(d.id))\n}\n\n// Row Utils\n\n/**\n * Checks whether this row can be pinned.\n *\n * `options.enableRowPinning` may be a boolean or a row predicate; it defaults\n * to `true`.\n *\n * @example\n * ```ts\n * const canPin = row_getCanPin(row)\n * ```\n */\nexport function row_getCanPin<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): boolean {\n const { enableRowPinning } = row.table.options\n if (typeof enableRowPinning === 'function') {\n return enableRowPinning(row)\n }\n return enableRowPinning ?? true\n}\n\n/**\n * Reads this row's current pinning region.\n *\n * Rows listed in `state.rowPinning.top` return `'top'`, rows listed in\n * `bottom` return `'bottom'`, and unpinned rows return `false`.\n *\n * @example\n * ```ts\n * const position = row_getIsPinned(row)\n * ```\n */\nexport function row_getIsPinned<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): RowPinningPosition {\n const { top, bottom } =\n row.table.atoms.rowPinning?.get() ?? getDefaultRowPinningState()\n\n return top.includes(row.id)\n ? 'top'\n : bottom.includes(row.id)\n ? 'bottom'\n : false\n}\n\n/**\n * Finds this row's visible index within its pinned region.\n *\n * Unpinned rows return `-1`.\n *\n * @example\n * ```ts\n * const index = row_getPinnedIndex(row)\n * ```\n */\nexport function row_getPinnedIndex<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(row: Row<TFeatures, TData>): number {\n const position = row_getIsPinned(row)\n if (!position) return -1\n\n const visiblePinnedRowIds = (\n position === 'top'\n ? callMemoOrStaticFn(row.table, 'getTopRows', table_getTopRows)\n : callMemoOrStaticFn(row.table, 'getBottomRows', table_getBottomRows)\n ).map(({ id }) => id)\n\n return visiblePinnedRowIds.indexOf(row.id)\n}\n\n/**\n * Pins or unpins a row.\n *\n * Optional flags let callers include parent rows or leaf rows when updating\n * the row pinning state.\n *\n * @example\n * ```ts\n * row_pin(row, 'top')\n * ```\n */\nexport function row_pin<TFeatures extends TableFeatures, TData extends RowData>(\n row: Row<TFeatures, TData>,\n position: RowPinningPosition,\n includeLeafRows?: boolean,\n includeParentRows?: boolean,\n): void {\n const leafRowIds = includeLeafRows\n ? row.getLeafRows().map(({ id }) => id)\n : []\n const parentRowIds = includeParentRows\n ? row.getParentRows().map(({ id }) => id)\n : []\n const rowIds: Set<string> = new Set([...parentRowIds, row.id, ...leafRowIds])\n\n table_setRowPinning(row.table, (old) => {\n if (position === 'bottom') {\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: [\n ...old.bottom.filter((d) => !rowIds.has(d)),\n ...Array.from(rowIds),\n ],\n }\n }\n\n if (position === 'top') {\n return {\n top: [...old.top.filter((d) => !rowIds.has(d)), ...Array.from(rowIds)],\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n }\n\n return {\n top: old.top.filter((d) => !rowIds.has(d)),\n bottom: old.bottom.filter((d) => !rowIds.has(d)),\n }\n })\n}\n"],"mappings":"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"}
@@ -6,31 +6,35 @@ import { Table_Internal } from "../../types/Table.cjs";
6
6
 
7
7
  //#region src/features/row-pinning/rowPinningFeature.utils.d.ts
8
8
  /**
9
- * Returns the default row pinning state.
9
+ * Creates the default row pinning state.
10
10
  *
11
- * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
11
+ * Both pinning regions start empty. Reset APIs use this value when
12
+ * `defaultState` is `true`.
12
13
  *
13
14
  * @example
14
15
  * ```ts
15
- * const initialValue = getDefaultRowPinningState()
16
+ * const pinning = getDefaultRowPinningState()
16
17
  * ```
17
18
  */
18
19
  declare function getDefaultRowPinningState(): RowPinningState;
19
20
  /**
20
- * Updates the table's row pinning state slice.
21
+ * Routes a row pinning updater through the table's row-pinning change handler.
21
22
  *
22
- * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
23
+ * The updater may be a next `{ top, bottom }` state or a function of the
24
+ * previous state, matching the instance `table.setRowPinning` behavior.
23
25
  *
24
26
  * @example
25
27
  * ```ts
26
- * table_setRowPinning(table, (old) => old)
28
+ * table_setRowPinning(table, (old) => ({ ...old, top: [rowId] }))
27
29
  * ```
28
30
  */
29
31
  declare function table_setRowPinning<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<RowPinningState>): void;
30
32
  /**
31
- * Resets the table's row pinning state slice.
33
+ * Resets `rowPinning` to the configured initial state or feature default.
32
34
  *
33
- * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
35
+ * With no argument, the reset clones `table.initialState.rowPinning` when it
36
+ * exists. Passing `true` ignores initial state and resets to empty top/bottom
37
+ * arrays.
34
38
  *
35
39
  * @example
36
40
  * ```ts
@@ -40,79 +44,85 @@ declare function table_setRowPinning<TFeatures extends TableFeatures, TData exte
40
44
  */
41
45
  declare function table_resetRowPinning<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
42
46
  /**
43
- * Returns is some rows pinned for the table.
47
+ * Checks whether any rows are pinned.
44
48
  *
45
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
49
+ * Omit `position` to check both regions, or pass `'top'`/`'bottom'` to inspect
50
+ * one region.
46
51
  *
47
52
  * @example
48
53
  * ```ts
49
- * const value = table_getIsSomeRowsPinned(table)
54
+ * const hasPinnedRows = table_getIsSomeRowsPinned(table)
50
55
  * ```
51
56
  */
52
57
  declare function table_getIsSomeRowsPinned<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, position?: RowPinningPosition): boolean;
53
58
  /**
54
- * Returns top rows for the table.
59
+ * Resolves the visible rows pinned to the top region.
55
60
  *
56
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
61
+ * The result follows `state.rowPinning.top` order and marks each row with
62
+ * `position = 'top'`.
57
63
  *
58
64
  * @example
59
65
  * ```ts
60
- * const value = table_getTopRows(table)
66
+ * const rows = table_getTopRows(table)
61
67
  * ```
62
68
  */
63
69
  declare function table_getTopRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
64
70
  /**
65
- * Returns bottom rows for the table.
71
+ * Resolves the visible rows pinned to the bottom region.
66
72
  *
67
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
73
+ * The result follows `state.rowPinning.bottom` order and marks each row with
74
+ * `position = 'bottom'`.
68
75
  *
69
76
  * @example
70
77
  * ```ts
71
- * const value = table_getBottomRows(table)
78
+ * const rows = table_getBottomRows(table)
72
79
  * ```
73
80
  */
74
81
  declare function table_getBottomRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
75
82
  /**
76
- * Returns center rows for the table.
83
+ * Resolves rows that are not pinned to top or bottom.
77
84
  *
78
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
85
+ * The current row model is filtered by `state.rowPinning.top` and
86
+ * `state.rowPinning.bottom`.
79
87
  *
80
88
  * @example
81
89
  * ```ts
82
- * const value = table_getCenterRows(table)
90
+ * const rows = table_getCenterRows(table)
83
91
  * ```
84
92
  */
85
93
  declare function table_getCenterRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
86
94
  /**
87
- * Returns whether a row can use pin.
95
+ * Checks whether this row can be pinned.
88
96
  *
89
- * This evaluates row data, table options, and feature-specific enablement rules.
97
+ * `options.enableRowPinning` may be a boolean or a row predicate; it defaults
98
+ * to `true`.
90
99
  *
91
100
  * @example
92
101
  * ```ts
93
- * const value = row_getCanPin(row)
102
+ * const canPin = row_getCanPin(row)
94
103
  * ```
95
104
  */
96
105
  declare function row_getCanPin<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): boolean;
97
106
  /**
98
- * Returns is pinned for a row.
107
+ * Reads this row's current pinning region.
99
108
  *
100
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
109
+ * Rows listed in `state.rowPinning.top` return `'top'`, rows listed in
110
+ * `bottom` return `'bottom'`, and unpinned rows return `false`.
101
111
  *
102
112
  * @example
103
113
  * ```ts
104
- * const value = row_getIsPinned(row)
114
+ * const position = row_getIsPinned(row)
105
115
  * ```
106
116
  */
107
117
  declare function row_getIsPinned<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): RowPinningPosition;
108
118
  /**
109
- * Returns pinned index for a row.
119
+ * Finds this row's visible index within its pinned region.
110
120
  *
111
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
121
+ * Unpinned rows return `-1`.
112
122
  *
113
123
  * @example
114
124
  * ```ts
115
- * const value = row_getPinnedIndex(row)
125
+ * const index = row_getPinnedIndex(row)
116
126
  * ```
117
127
  */
118
128
  declare function row_getPinnedIndex<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): number;
@@ -6,31 +6,35 @@ import { Table_Internal } from "../../types/Table.js";
6
6
 
7
7
  //#region src/features/row-pinning/rowPinningFeature.utils.d.ts
8
8
  /**
9
- * Returns the default row pinning state.
9
+ * Creates the default row pinning state.
10
10
  *
11
- * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
11
+ * Both pinning regions start empty. Reset APIs use this value when
12
+ * `defaultState` is `true`.
12
13
  *
13
14
  * @example
14
15
  * ```ts
15
- * const initialValue = getDefaultRowPinningState()
16
+ * const pinning = getDefaultRowPinningState()
16
17
  * ```
17
18
  */
18
19
  declare function getDefaultRowPinningState(): RowPinningState;
19
20
  /**
20
- * Updates the table's row pinning state slice.
21
+ * Routes a row pinning updater through the table's row-pinning change handler.
21
22
  *
22
- * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
23
+ * The updater may be a next `{ top, bottom }` state or a function of the
24
+ * previous state, matching the instance `table.setRowPinning` behavior.
23
25
  *
24
26
  * @example
25
27
  * ```ts
26
- * table_setRowPinning(table, (old) => old)
28
+ * table_setRowPinning(table, (old) => ({ ...old, top: [rowId] }))
27
29
  * ```
28
30
  */
29
31
  declare function table_setRowPinning<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<RowPinningState>): void;
30
32
  /**
31
- * Resets the table's row pinning state slice.
33
+ * Resets `rowPinning` to the configured initial state or feature default.
32
34
  *
33
- * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
35
+ * With no argument, the reset clones `table.initialState.rowPinning` when it
36
+ * exists. Passing `true` ignores initial state and resets to empty top/bottom
37
+ * arrays.
34
38
  *
35
39
  * @example
36
40
  * ```ts
@@ -40,79 +44,85 @@ declare function table_setRowPinning<TFeatures extends TableFeatures, TData exte
40
44
  */
41
45
  declare function table_resetRowPinning<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean): void;
42
46
  /**
43
- * Returns is some rows pinned for the table.
47
+ * Checks whether any rows are pinned.
44
48
  *
45
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
49
+ * Omit `position` to check both regions, or pass `'top'`/`'bottom'` to inspect
50
+ * one region.
46
51
  *
47
52
  * @example
48
53
  * ```ts
49
- * const value = table_getIsSomeRowsPinned(table)
54
+ * const hasPinnedRows = table_getIsSomeRowsPinned(table)
50
55
  * ```
51
56
  */
52
57
  declare function table_getIsSomeRowsPinned<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, position?: RowPinningPosition): boolean;
53
58
  /**
54
- * Returns top rows for the table.
59
+ * Resolves the visible rows pinned to the top region.
55
60
  *
56
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
61
+ * The result follows `state.rowPinning.top` order and marks each row with
62
+ * `position = 'top'`.
57
63
  *
58
64
  * @example
59
65
  * ```ts
60
- * const value = table_getTopRows(table)
66
+ * const rows = table_getTopRows(table)
61
67
  * ```
62
68
  */
63
69
  declare function table_getTopRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
64
70
  /**
65
- * Returns bottom rows for the table.
71
+ * Resolves the visible rows pinned to the bottom region.
66
72
  *
67
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
73
+ * The result follows `state.rowPinning.bottom` order and marks each row with
74
+ * `position = 'bottom'`.
68
75
  *
69
76
  * @example
70
77
  * ```ts
71
- * const value = table_getBottomRows(table)
78
+ * const rows = table_getBottomRows(table)
72
79
  * ```
73
80
  */
74
81
  declare function table_getBottomRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
75
82
  /**
76
- * Returns center rows for the table.
83
+ * Resolves rows that are not pinned to top or bottom.
77
84
  *
78
- * This reads the relevant table atoms, options, and row-model cache to derive the current table-level value.
85
+ * The current row model is filtered by `state.rowPinning.top` and
86
+ * `state.rowPinning.bottom`.
79
87
  *
80
88
  * @example
81
89
  * ```ts
82
- * const value = table_getCenterRows(table)
90
+ * const rows = table_getCenterRows(table)
83
91
  * ```
84
92
  */
85
93
  declare function table_getCenterRows<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>): Array<Row<TFeatures, TData>>;
86
94
  /**
87
- * Returns whether a row can use pin.
95
+ * Checks whether this row can be pinned.
88
96
  *
89
- * This evaluates row data, table options, and feature-specific enablement rules.
97
+ * `options.enableRowPinning` may be a boolean or a row predicate; it defaults
98
+ * to `true`.
90
99
  *
91
100
  * @example
92
101
  * ```ts
93
- * const value = row_getCanPin(row)
102
+ * const canPin = row_getCanPin(row)
94
103
  * ```
95
104
  */
96
105
  declare function row_getCanPin<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): boolean;
97
106
  /**
98
- * Returns is pinned for a row.
107
+ * Reads this row's current pinning region.
99
108
  *
100
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
109
+ * Rows listed in `state.rowPinning.top` return `'top'`, rows listed in
110
+ * `bottom` return `'bottom'`, and unpinned rows return `false`.
101
111
  *
102
112
  * @example
103
113
  * ```ts
104
- * const value = row_getIsPinned(row)
114
+ * const position = row_getIsPinned(row)
105
115
  * ```
106
116
  */
107
117
  declare function row_getIsPinned<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): RowPinningPosition;
108
118
  /**
109
- * Returns pinned index for a row.
119
+ * Finds this row's visible index within its pinned region.
110
120
  *
111
- * This is the static implementation behind the matching row instance API and may read row caches or table state atoms.
121
+ * Unpinned rows return `-1`.
112
122
  *
113
123
  * @example
114
124
  * ```ts
115
- * const value = row_getPinnedIndex(row)
125
+ * const index = row_getPinnedIndex(row)
116
126
  * ```
117
127
  */
118
128
  declare function row_getPinnedIndex<TFeatures extends TableFeatures, TData extends RowData>(row: Row<TFeatures, TData>): number;