@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
@@ -7,42 +7,46 @@ import { Table_Internal } from "../../types/Table.js";
7
7
 
8
8
  //#region src/features/column-resizing/columnResizingFeature.utils.d.ts
9
9
  /**
10
- * Returns the default column resizing state.
10
+ * Creates the default transient column resizing state.
11
11
  *
12
- * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
12
+ * The feature default represents no active drag interaction. Reset APIs use
13
+ * this value when `defaultState` is `true`.
13
14
  *
14
15
  * @example
15
16
  * ```ts
16
- * const initialValue = getDefaultColumnResizingState()
17
+ * const resizeInfo = getDefaultColumnResizingState()
17
18
  * ```
18
19
  */
19
20
  declare function getDefaultColumnResizingState(): columnResizingState;
20
21
  /**
21
- * Returns whether a column can use resize.
22
+ * Checks whether this column can start a resize interaction.
22
23
  *
23
- * This combines column options, table options, and any required accessor or feature state for the capability.
24
+ * Both `columnDef.enableResizing` and table `enableColumnResizing` default to
25
+ * `true`.
24
26
  *
25
27
  * @example
26
28
  * ```ts
27
- * const value = column_getCanResize(column)
29
+ * const canResize = column_getCanResize(column)
28
30
  * ```
29
31
  */
30
32
  declare function column_getCanResize<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
31
33
  /**
32
- * Returns is resizing for a column.
34
+ * Checks whether this column is the active column resize target.
33
35
  *
34
- * This derives the value from the column definition, table options, and the feature state atoms registered on the table.
36
+ * The value is read from `state.columnResizing.isResizingColumn`.
35
37
  *
36
38
  * @example
37
39
  * ```ts
38
- * const value = column_getIsResizing(column)
40
+ * const isResizing = column_getIsResizing(column)
39
41
  * ```
40
42
  */
41
43
  declare function column_getIsResizing<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(column: Column_Internal<TFeatures, TData, TValue>): boolean;
42
44
  /**
43
- * Returns resize handler for a header.
45
+ * Creates the pointer/touch start handler for resizing a header.
44
46
  *
45
- * This is the static implementation behind the matching header instance API and can account for nested header groups.
47
+ * The handler records starting sizes for all leaf headers, tracks drag deltas,
48
+ * writes transient resize info, and commits column sizes on change or drag end
49
+ * depending on `columnResizeMode`.
46
50
  *
47
51
  * @example
48
52
  * ```ts
@@ -51,20 +55,23 @@ declare function column_getIsResizing<TFeatures extends TableFeatures, TData ext
51
55
  */
52
56
  declare function header_getResizeHandler<TFeatures extends TableFeatures, TData extends RowData, TValue extends CellData = CellData>(header: Header<TFeatures, TData, TValue>, _contextDocument?: Document): (event: unknown) => void;
53
57
  /**
54
- * Updates the table's column resizing state slice.
58
+ * Routes a transient column resizing updater through the table's resize handler.
55
59
  *
56
- * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
60
+ * This state tracks the active drag interaction; committed widths live in
61
+ * `columnSizing`.
57
62
  *
58
63
  * @example
59
64
  * ```ts
60
- * table_setColumnResizing(table, (old) => old)
65
+ * table_setColumnResizing(table, (old) => ({ ...old, deltaOffset: 12 }))
61
66
  * ```
62
67
  */
63
68
  declare function table_setColumnResizing<TFeatures extends TableFeatures, TData extends RowData>(table: Table_Internal<TFeatures, TData>, updater: Updater<columnResizingState>): void;
64
69
  /**
65
- * Resets the table's header size info state slice.
70
+ * Resets `columnResizing` to the configured initial state or feature default.
66
71
  *
67
- * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
72
+ * With no argument, the reset clones `table.initialState.columnResizing` when
73
+ * it exists. Passing `true` ignores initial state and resets to the no-drag
74
+ * default state.
68
75
  *
69
76
  * @example
70
77
  * ```ts
@@ -76,7 +83,8 @@ declare function table_resetHeaderSizeInfo<TFeatures extends TableFeatures, TDat
76
83
  /**
77
84
  * Detects whether the current environment supports passive event listeners.
78
85
  *
79
- * Column resizing uses this to register pointer and touch listeners with the safest available options.
86
+ * Column resizing uses this to register pointer and touch listeners with
87
+ * `passive: false` only when the environment understands passive options.
80
88
  *
81
89
  * @example
82
90
  * ```ts
@@ -85,9 +93,10 @@ declare function table_resetHeaderSizeInfo<TFeatures extends TableFeatures, TDat
85
93
  */
86
94
  declare function passiveEventSupported(): boolean;
87
95
  /**
88
- * Returns whether an event is a touch-start event.
96
+ * Narrows an unknown event to a `touchstart` event.
89
97
  *
90
- * Column resizing uses this to normalize mouse and touch resize interactions.
98
+ * Column resizing uses this before reading touch coordinates and installing
99
+ * touch-specific listeners.
91
100
  *
92
101
  * @example
93
102
  * ```ts
@@ -4,13 +4,14 @@ import { column_getSize, header_getSize, table_setColumnSizing } from "../column
4
4
 
5
5
  //#region src/features/column-resizing/columnResizingFeature.utils.ts
6
6
  /**
7
- * Returns the default column resizing state.
7
+ * Creates the default transient column resizing state.
8
8
  *
9
- * Feature constructors use this value to initialize the table state or option defaults when no user value is provided.
9
+ * The feature default represents no active drag interaction. Reset APIs use
10
+ * this value when `defaultState` is `true`.
10
11
  *
11
12
  * @example
12
13
  * ```ts
13
- * const initialValue = getDefaultColumnResizingState()
14
+ * const resizeInfo = getDefaultColumnResizingState()
14
15
  * ```
15
16
  */
16
17
  function getDefaultColumnResizingState() {
@@ -24,26 +25,27 @@ function getDefaultColumnResizingState() {
24
25
  };
25
26
  }
26
27
  /**
27
- * Returns whether a column can use resize.
28
+ * Checks whether this column can start a resize interaction.
28
29
  *
29
- * This combines column options, table options, and any required accessor or feature state for the capability.
30
+ * Both `columnDef.enableResizing` and table `enableColumnResizing` default to
31
+ * `true`.
30
32
  *
31
33
  * @example
32
34
  * ```ts
33
- * const value = column_getCanResize(column)
35
+ * const canResize = column_getCanResize(column)
34
36
  * ```
35
37
  */
36
38
  function column_getCanResize(column) {
37
39
  return (column.columnDef.enableResizing ?? true) && (column.table.options.enableColumnResizing ?? true);
38
40
  }
39
41
  /**
40
- * Returns is resizing for a column.
42
+ * Checks whether this column is the active column resize target.
41
43
  *
42
- * This derives the value from the column definition, table options, and the feature state atoms registered on the table.
44
+ * The value is read from `state.columnResizing.isResizingColumn`.
43
45
  *
44
46
  * @example
45
47
  * ```ts
46
- * const value = column_getIsResizing(column)
48
+ * const isResizing = column_getIsResizing(column)
47
49
  * ```
48
50
  */
49
51
  function column_getIsResizing(column) {
@@ -51,9 +53,11 @@ function column_getIsResizing(column) {
51
53
  return ((_column$table$atoms$c = column.table.atoms.columnResizing) === null || _column$table$atoms$c === void 0 || (_column$table$atoms$c = _column$table$atoms$c.get()) === null || _column$table$atoms$c === void 0 ? void 0 : _column$table$atoms$c.isResizingColumn) === column.id;
52
54
  }
53
55
  /**
54
- * Returns resize handler for a header.
56
+ * Creates the pointer/touch start handler for resizing a header.
55
57
  *
56
- * This is the static implementation behind the matching header instance API and can account for nested header groups.
58
+ * The handler records starting sizes for all leaf headers, tracks drag deltas,
59
+ * writes transient resize info, and commits column sizes on change or drag end
60
+ * depending on `columnResizeMode`.
57
61
  *
58
62
  * @example
59
63
  * ```ts
@@ -157,13 +161,14 @@ function header_getResizeHandler(header, _contextDocument) {
157
161
  };
158
162
  }
159
163
  /**
160
- * Updates the table's column resizing state slice.
164
+ * Routes a transient column resizing updater through the table's resize handler.
161
165
  *
162
- * The updater follows TanStack Table updater semantics and is routed through the corresponding `on*Change` option or backing atom.
166
+ * This state tracks the active drag interaction; committed widths live in
167
+ * `columnSizing`.
163
168
  *
164
169
  * @example
165
170
  * ```ts
166
- * table_setColumnResizing(table, (old) => old)
171
+ * table_setColumnResizing(table, (old) => ({ ...old, deltaOffset: 12 }))
167
172
  * ```
168
173
  */
169
174
  function table_setColumnResizing(table, updater) {
@@ -171,9 +176,11 @@ function table_setColumnResizing(table, updater) {
171
176
  (_table$options$onColu = (_table$options = table.options).onColumnResizingChange) === null || _table$options$onColu === void 0 || _table$options$onColu.call(_table$options, updater);
172
177
  }
173
178
  /**
174
- * Resets the table's header size info state slice.
179
+ * Resets `columnResizing` to the configured initial state or feature default.
175
180
  *
176
- * By default the reset uses `table.initialState`; when supported, a blank/default reset bypasses the saved initial value.
181
+ * With no argument, the reset clones `table.initialState.columnResizing` when
182
+ * it exists. Passing `true` ignores initial state and resets to the no-drag
183
+ * default state.
177
184
  *
178
185
  * @example
179
186
  * ```ts
@@ -184,10 +191,12 @@ function table_setColumnResizing(table, updater) {
184
191
  function table_resetHeaderSizeInfo(table, defaultState) {
185
192
  table_setColumnResizing(table, defaultState ? getDefaultColumnResizingState() : cloneState(table.initialState.columnResizing ?? getDefaultColumnResizingState()));
186
193
  }
194
+ let passiveSupported = null;
187
195
  /**
188
196
  * Detects whether the current environment supports passive event listeners.
189
197
  *
190
- * Column resizing uses this to register pointer and touch listeners with the safest available options.
198
+ * Column resizing uses this to register pointer and touch listeners with
199
+ * `passive: false` only when the environment understands passive options.
191
200
  *
192
201
  * @example
193
202
  * ```ts
@@ -195,7 +204,6 @@ function table_resetHeaderSizeInfo(table, defaultState) {
195
204
  * ```
196
205
  */
197
206
  function passiveEventSupported() {
198
- let passiveSupported = null;
199
207
  if (typeof passiveSupported === "boolean") return passiveSupported;
200
208
  let supported = false;
201
209
  try {
@@ -213,9 +221,10 @@ function passiveEventSupported() {
213
221
  return passiveSupported;
214
222
  }
215
223
  /**
216
- * Returns whether an event is a touch-start event.
224
+ * Narrows an unknown event to a `touchstart` event.
217
225
  *
218
- * Column resizing uses this to normalize mouse and touch resize interactions.
226
+ * Column resizing uses this before reading touch coordinates and installing
227
+ * touch-specific listeners.
219
228
  *
220
229
  * @example
221
230
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"columnResizingFeature.utils.js","names":[],"sources":["../../../src/features/column-resizing/columnResizingFeature.utils.ts"],"sourcesContent":["import {\n column_getSize,\n header_getSize,\n table_setColumnSizing,\n} from '../column-sizing/columnSizingFeature.utils'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { cloneState } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Header } from '../../types/Header'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnSizingState } from '../column-sizing/columnSizingFeature.types'\nimport type { columnResizingState } from './columnResizingFeature.types'\n\n/**\n * Returns the default column resizing 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 = getDefaultColumnResizingState()\n * ```\n */\nexport function getDefaultColumnResizingState(): columnResizingState {\n return {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n }\n}\n\n/**\n * Returns whether a column can use resize.\n *\n * This combines column options, table options, and any required accessor or feature state for the capability.\n *\n * @example\n * ```ts\n * const value = column_getCanResize(column)\n * ```\n */\nexport function column_getCanResize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (column.table.options.enableColumnResizing ?? true)\n )\n}\n\n/**\n * Returns is resizing for a column.\n *\n * This derives the value from the column definition, table options, and the feature state atoms registered on the table.\n *\n * @example\n * ```ts\n * const value = column_getIsResizing(column)\n * ```\n */\nexport function column_getIsResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n column.table.atoms.columnResizing?.get()?.isResizingColumn === column.id\n )\n}\n\n/**\n * Returns resize handler for a header.\n *\n * This is the static implementation behind the matching header instance API and can account for nested header groups.\n *\n * @example\n * ```ts\n * const onMouseDown = header_getResizeHandler(header)\n * ```\n */\nexport function header_getResizeHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(header: Header<TFeatures, TData, TValue>, _contextDocument?: Document) {\n const column = table_getColumn(header.column.table, header.column.id)!\n const canResize = column_getCanResize(column)\n\n return (event: unknown) => {\n if (!canResize) {\n return\n }\n\n ;(event as any).persist?.()\n\n if (isTouchStartEvent(event)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (event.touches.length > 1) {\n return\n }\n }\n\n const startSize = header_getSize(header)\n\n const columnSizingStart: Array<[string, number]> = header\n .getLeafHeaders()\n .map((leafHeader) => [\n leafHeader.column.id,\n column_getSize(leafHeader.column),\n ])\n\n const clientX = isTouchStartEvent(event)\n ? Math.round(event.touches[0]!.clientX)\n : (event as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = {}\n\n const updateOffset = (eventType: 'move' | 'end', clientXPos?: number) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n table_setColumnResizing(column.table, (old) => {\n const deltaDirection =\n column.table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old.startOffset ?? 0)) * deltaDirection\n const startSize = old.startSize ?? 0\n const deltaPercentage = Math.max(\n startSize > 0 ? deltaOffset / startSize : 0,\n -0.999999,\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(\n headerSize > 0\n ? headerSize + headerSize * deltaPercentage\n : deltaOffset / old.columnSizingStart.length,\n 0,\n ) * 100,\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n column.table.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n table_setColumnSizing(column.table, (old) => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const contextDocument =\n _contextDocument || typeof document !== 'undefined' ? document : null\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n )\n contextDocument?.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (touchEvent: TouchEvent) => {\n if (touchEvent.cancelable) {\n touchEvent.preventDefault()\n touchEvent.stopPropagation()\n }\n onMove(touchEvent.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n )\n contextDocument?.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(event)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported,\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported,\n )\n }\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n}\n\n/**\n * Updates the table's column resizing 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_setColumnResizing(table, (old) => old)\n * ```\n */\nexport function table_setColumnResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<columnResizingState>,\n) {\n table.options.onColumnResizingChange?.(updater)\n}\n\n/**\n * Resets the table's header size info 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_resetHeaderSizeInfo(table)\n * table_resetHeaderSizeInfo(table, true)\n * ```\n */\nexport function table_resetHeaderSizeInfo<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnResizing(\n table,\n defaultState\n ? getDefaultColumnResizingState()\n : cloneState(\n table.initialState.columnResizing ?? getDefaultColumnResizingState(),\n ),\n )\n}\n\n/**\n * Detects whether the current environment supports passive event listeners.\n *\n * Column resizing uses this to register pointer and touch listeners with the safest available options.\n *\n * @example\n * ```ts\n * const canUsePassiveListeners = passiveEventSupported()\n * ```\n */\nexport function passiveEventSupported() {\n let passiveSupported: boolean | null = null\n\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n/**\n * Returns whether an event is a touch-start event.\n *\n * Column resizing uses this to normalize mouse and touch resize interactions.\n *\n * @example\n * ```ts\n * const isTouch = isTouchStartEvent(event)\n * ```\n */\nexport function isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"columnResizingFeature.utils.js","names":[],"sources":["../../../src/features/column-resizing/columnResizingFeature.utils.ts"],"sourcesContent":["import {\n column_getSize,\n header_getSize,\n table_setColumnSizing,\n} from '../column-sizing/columnSizingFeature.utils'\nimport { table_getColumn } from '../../core/columns/coreColumnsFeature.utils'\nimport { cloneState } from '../../utils'\nimport type { CellData, RowData, Updater } from '../../types/type-utils'\nimport type { TableFeatures } from '../../types/TableFeatures'\nimport type { Table_Internal } from '../../types/Table'\nimport type { Header } from '../../types/Header'\nimport type { Column_Internal } from '../../types/Column'\nimport type { ColumnSizingState } from '../column-sizing/columnSizingFeature.types'\nimport type { columnResizingState } from './columnResizingFeature.types'\n\n/**\n * Creates the default transient column resizing state.\n *\n * The feature default represents no active drag interaction. Reset APIs use\n * this value when `defaultState` is `true`.\n *\n * @example\n * ```ts\n * const resizeInfo = getDefaultColumnResizingState()\n * ```\n */\nexport function getDefaultColumnResizingState(): columnResizingState {\n return {\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n isResizingColumn: false,\n columnSizingStart: [],\n }\n}\n\n/**\n * Checks whether this column can start a resize interaction.\n *\n * Both `columnDef.enableResizing` and table `enableColumnResizing` default to\n * `true`.\n *\n * @example\n * ```ts\n * const canResize = column_getCanResize(column)\n * ```\n */\nexport function column_getCanResize<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n (column.columnDef.enableResizing ?? true) &&\n (column.table.options.enableColumnResizing ?? true)\n )\n}\n\n/**\n * Checks whether this column is the active column resize target.\n *\n * The value is read from `state.columnResizing.isResizingColumn`.\n *\n * @example\n * ```ts\n * const isResizing = column_getIsResizing(column)\n * ```\n */\nexport function column_getIsResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(column: Column_Internal<TFeatures, TData, TValue>) {\n return (\n column.table.atoms.columnResizing?.get()?.isResizingColumn === column.id\n )\n}\n\n/**\n * Creates the pointer/touch start handler for resizing a header.\n *\n * The handler records starting sizes for all leaf headers, tracks drag deltas,\n * writes transient resize info, and commits column sizes on change or drag end\n * depending on `columnResizeMode`.\n *\n * @example\n * ```ts\n * const onMouseDown = header_getResizeHandler(header)\n * ```\n */\nexport function header_getResizeHandler<\n TFeatures extends TableFeatures,\n TData extends RowData,\n TValue extends CellData = CellData,\n>(header: Header<TFeatures, TData, TValue>, _contextDocument?: Document) {\n const column = table_getColumn(header.column.table, header.column.id)!\n const canResize = column_getCanResize(column)\n\n return (event: unknown) => {\n if (!canResize) {\n return\n }\n\n ;(event as any).persist?.()\n\n if (isTouchStartEvent(event)) {\n // lets not respond to multiple touches (e.g. 2 or 3 fingers)\n if (event.touches.length > 1) {\n return\n }\n }\n\n const startSize = header_getSize(header)\n\n const columnSizingStart: Array<[string, number]> = header\n .getLeafHeaders()\n .map((leafHeader) => [\n leafHeader.column.id,\n column_getSize(leafHeader.column),\n ])\n\n const clientX = isTouchStartEvent(event)\n ? Math.round(event.touches[0]!.clientX)\n : (event as MouseEvent).clientX\n\n const newColumnSizing: ColumnSizingState = {}\n\n const updateOffset = (eventType: 'move' | 'end', clientXPos?: number) => {\n if (typeof clientXPos !== 'number') {\n return\n }\n\n table_setColumnResizing(column.table, (old) => {\n const deltaDirection =\n column.table.options.columnResizeDirection === 'rtl' ? -1 : 1\n const deltaOffset =\n (clientXPos - (old.startOffset ?? 0)) * deltaDirection\n const startSize = old.startSize ?? 0\n const deltaPercentage = Math.max(\n startSize > 0 ? deltaOffset / startSize : 0,\n -0.999999,\n )\n\n old.columnSizingStart.forEach(([columnId, headerSize]) => {\n newColumnSizing[columnId] =\n Math.round(\n Math.max(\n headerSize > 0\n ? headerSize + headerSize * deltaPercentage\n : deltaOffset / old.columnSizingStart.length,\n 0,\n ) * 100,\n ) / 100\n })\n\n return {\n ...old,\n deltaOffset,\n deltaPercentage,\n }\n })\n\n if (\n column.table.options.columnResizeMode === 'onChange' ||\n eventType === 'end'\n ) {\n table_setColumnSizing(column.table, (old) => ({\n ...old,\n ...newColumnSizing,\n }))\n }\n }\n\n const onMove = (clientXPos?: number) => updateOffset('move', clientXPos)\n\n const onEnd = (clientXPos?: number) => {\n updateOffset('end', clientXPos)\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n isResizingColumn: false,\n startOffset: null,\n startSize: null,\n deltaOffset: null,\n deltaPercentage: null,\n columnSizingStart: [],\n }))\n }\n\n const contextDocument =\n _contextDocument || typeof document !== 'undefined' ? document : null\n\n const mouseEvents = {\n moveHandler: (e: MouseEvent) => onMove(e.clientX),\n upHandler: (e: MouseEvent) => {\n contextDocument?.removeEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n )\n contextDocument?.removeEventListener('mouseup', mouseEvents.upHandler)\n onEnd(e.clientX)\n },\n }\n\n const touchEvents = {\n moveHandler: (touchEvent: TouchEvent) => {\n if (touchEvent.cancelable) {\n touchEvent.preventDefault()\n touchEvent.stopPropagation()\n }\n onMove(touchEvent.touches[0]!.clientX)\n return false\n },\n upHandler: (e: TouchEvent) => {\n contextDocument?.removeEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n )\n contextDocument?.removeEventListener('touchend', touchEvents.upHandler)\n if (e.cancelable) {\n e.preventDefault()\n e.stopPropagation()\n }\n onEnd(e.touches[0]?.clientX)\n },\n }\n\n const passiveIfSupported = passiveEventSupported()\n ? { passive: false }\n : false\n\n if (isTouchStartEvent(event)) {\n contextDocument?.addEventListener(\n 'touchmove',\n touchEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'touchend',\n touchEvents.upHandler,\n passiveIfSupported,\n )\n } else {\n contextDocument?.addEventListener(\n 'mousemove',\n mouseEvents.moveHandler,\n passiveIfSupported,\n )\n contextDocument?.addEventListener(\n 'mouseup',\n mouseEvents.upHandler,\n passiveIfSupported,\n )\n }\n\n table_setColumnResizing(column.table, (old) => ({\n ...old,\n startOffset: clientX,\n startSize,\n deltaOffset: 0,\n deltaPercentage: 0,\n columnSizingStart,\n isResizingColumn: column.id,\n }))\n }\n}\n\n/**\n * Routes a transient column resizing updater through the table's resize handler.\n *\n * This state tracks the active drag interaction; committed widths live in\n * `columnSizing`.\n *\n * @example\n * ```ts\n * table_setColumnResizing(table, (old) => ({ ...old, deltaOffset: 12 }))\n * ```\n */\nexport function table_setColumnResizing<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(\n table: Table_Internal<TFeatures, TData>,\n updater: Updater<columnResizingState>,\n) {\n table.options.onColumnResizingChange?.(updater)\n}\n\n/**\n * Resets `columnResizing` to the configured initial state or feature default.\n *\n * With no argument, the reset clones `table.initialState.columnResizing` when\n * it exists. Passing `true` ignores initial state and resets to the no-drag\n * default state.\n *\n * @example\n * ```ts\n * table_resetHeaderSizeInfo(table)\n * table_resetHeaderSizeInfo(table, true)\n * ```\n */\nexport function table_resetHeaderSizeInfo<\n TFeatures extends TableFeatures,\n TData extends RowData,\n>(table: Table_Internal<TFeatures, TData>, defaultState?: boolean) {\n table_setColumnResizing(\n table,\n defaultState\n ? getDefaultColumnResizingState()\n : cloneState(\n table.initialState.columnResizing ?? getDefaultColumnResizingState(),\n ),\n )\n}\n\nlet passiveSupported: boolean | null = null\n/**\n * Detects whether the current environment supports passive event listeners.\n *\n * Column resizing uses this to register pointer and touch listeners with\n * `passive: false` only when the environment understands passive options.\n *\n * @example\n * ```ts\n * const canUsePassiveListeners = passiveEventSupported()\n * ```\n */\nexport function passiveEventSupported() {\n if (typeof passiveSupported === 'boolean') return passiveSupported\n\n let supported = false\n try {\n const options = {\n get passive() {\n supported = true\n return false\n },\n }\n\n const noop = () => {}\n\n window.addEventListener('test', noop, options)\n window.removeEventListener('test', noop)\n } catch (err) {\n supported = false\n }\n passiveSupported = supported\n return passiveSupported\n}\n\n/**\n * Narrows an unknown event to a `touchstart` event.\n *\n * Column resizing uses this before reading touch coordinates and installing\n * touch-specific listeners.\n *\n * @example\n * ```ts\n * const isTouch = isTouchStartEvent(event)\n * ```\n */\nexport function isTouchStartEvent(e: unknown): e is TouchEvent {\n return (e as TouchEvent).type === 'touchstart'\n}\n"],"mappings":"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"}
@@ -17,19 +17,19 @@ interface TableOptions_ColumnSizing {
17
17
  type ColumnSizingDefaultOptions = Pick<TableOptions_ColumnSizing, 'onColumnSizingChange'>;
18
18
  interface Table_ColumnSizing {
19
19
  /**
20
- * If pinning, returns the total size of the center portion of the table by calculating the sum of the sizes of all unpinned/center leaf-columns.
20
+ * Sums the current sizes of visible center-region leaf columns.
21
21
  */
22
22
  getCenterTotalSize: () => number;
23
23
  /**
24
- * Returns the total size of the left portion of the table by calculating the sum of the sizes of all left leaf-columns.
24
+ * Sums the current sizes of visible left-pinned leaf columns.
25
25
  */
26
26
  getLeftTotalSize: () => number;
27
27
  /**
28
- * Returns the total size of the right portion of the table by calculating the sum of the sizes of all right leaf-columns.
28
+ * Sums the current sizes of visible right-pinned leaf columns.
29
29
  */
30
30
  getRightTotalSize: () => number;
31
31
  /**
32
- * Returns the total size of the table by calculating the sum of the sizes of all leaf-columns.
32
+ * Sums the current sizes of all visible leaf columns.
33
33
  */
34
34
  getTotalSize: () => number;
35
35
  /**
@@ -38,35 +38,42 @@ interface Table_ColumnSizing {
38
38
  */
39
39
  resetColumnSizing: (defaultState?: boolean) => void;
40
40
  /**
41
- * Sets committed column sizing state using a value or updater.
41
+ * Updates committed column sizing state with a next map or updater function.
42
42
  */
43
43
  setColumnSizing: (updater: Updater<ColumnSizingState>) => void;
44
44
  }
45
45
  interface ColumnDef_ColumnSizing {
46
46
  /**
47
- * The maximum allowed size for the column
47
+ * Upper bound used when resolving this column's size.
48
48
  */
49
49
  maxSize?: number;
50
50
  /**
51
- * The minimum allowed size for the column
51
+ * Lower bound used when resolving this column's size.
52
52
  */
53
53
  minSize?: number;
54
54
  /**
55
- * The desired size for the column
55
+ * Initial size used before column sizing state overrides it.
56
56
  */
57
57
  size?: number;
58
58
  }
59
59
  interface Column_ColumnSizing {
60
60
  /**
61
- * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all succeeding (right) headers in relation to the current column.
61
+ * Measures the offset from this column's end edge to the end of its region.
62
+ *
63
+ * Pass a pinned region to measure within that region. The value is the sum
64
+ * of visible leaf column sizes after this column.
62
65
  */
63
66
  getAfter: (position?: ColumnPinningPosition | 'center') => number;
64
67
  /**
65
- * Returns the current size of the column.
68
+ * Resolves the column's current size after state and min/max constraints.
66
69
  */
67
70
  getSize: () => number;
68
71
  /**
69
- * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding (left) headers in relation to the current column.
72
+ * Measures the offset from the start of this column's region to its start
73
+ * edge.
74
+ *
75
+ * Pass a pinned region to measure within that region. The value is the sum
76
+ * of visible leaf column sizes before this column.
70
77
  */
71
78
  getStart: (position?: ColumnPinningPosition | 'center') => number;
72
79
  /**
@@ -76,7 +83,7 @@ interface Column_ColumnSizing {
76
83
  }
77
84
  interface Header_ColumnSizing {
78
85
  /**
79
- * Returns the current size of the header.
86
+ * Computes this header's rendered size from its leaf columns.
80
87
  */
81
88
  getSize: () => number;
82
89
  /**
@@ -17,19 +17,19 @@ interface TableOptions_ColumnSizing {
17
17
  type ColumnSizingDefaultOptions = Pick<TableOptions_ColumnSizing, 'onColumnSizingChange'>;
18
18
  interface Table_ColumnSizing {
19
19
  /**
20
- * If pinning, returns the total size of the center portion of the table by calculating the sum of the sizes of all unpinned/center leaf-columns.
20
+ * Sums the current sizes of visible center-region leaf columns.
21
21
  */
22
22
  getCenterTotalSize: () => number;
23
23
  /**
24
- * Returns the total size of the left portion of the table by calculating the sum of the sizes of all left leaf-columns.
24
+ * Sums the current sizes of visible left-pinned leaf columns.
25
25
  */
26
26
  getLeftTotalSize: () => number;
27
27
  /**
28
- * Returns the total size of the right portion of the table by calculating the sum of the sizes of all right leaf-columns.
28
+ * Sums the current sizes of visible right-pinned leaf columns.
29
29
  */
30
30
  getRightTotalSize: () => number;
31
31
  /**
32
- * Returns the total size of the table by calculating the sum of the sizes of all leaf-columns.
32
+ * Sums the current sizes of all visible leaf columns.
33
33
  */
34
34
  getTotalSize: () => number;
35
35
  /**
@@ -38,35 +38,42 @@ interface Table_ColumnSizing {
38
38
  */
39
39
  resetColumnSizing: (defaultState?: boolean) => void;
40
40
  /**
41
- * Sets committed column sizing state using a value or updater.
41
+ * Updates committed column sizing state with a next map or updater function.
42
42
  */
43
43
  setColumnSizing: (updater: Updater<ColumnSizingState>) => void;
44
44
  }
45
45
  interface ColumnDef_ColumnSizing {
46
46
  /**
47
- * The maximum allowed size for the column
47
+ * Upper bound used when resolving this column's size.
48
48
  */
49
49
  maxSize?: number;
50
50
  /**
51
- * The minimum allowed size for the column
51
+ * Lower bound used when resolving this column's size.
52
52
  */
53
53
  minSize?: number;
54
54
  /**
55
- * The desired size for the column
55
+ * Initial size used before column sizing state overrides it.
56
56
  */
57
57
  size?: number;
58
58
  }
59
59
  interface Column_ColumnSizing {
60
60
  /**
61
- * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all succeeding (right) headers in relation to the current column.
61
+ * Measures the offset from this column's end edge to the end of its region.
62
+ *
63
+ * Pass a pinned region to measure within that region. The value is the sum
64
+ * of visible leaf column sizes after this column.
62
65
  */
63
66
  getAfter: (position?: ColumnPinningPosition | 'center') => number;
64
67
  /**
65
- * Returns the current size of the column.
68
+ * Resolves the column's current size after state and min/max constraints.
66
69
  */
67
70
  getSize: () => number;
68
71
  /**
69
- * Returns the offset measurement along the row-axis (usually the x-axis for standard tables) for the header. This is effectively a sum of the offset measurements of all preceding (left) headers in relation to the current column.
72
+ * Measures the offset from the start of this column's region to its start
73
+ * edge.
74
+ *
75
+ * Pass a pinned region to measure within that region. The value is the sum
76
+ * of visible leaf column sizes before this column.
70
77
  */
71
78
  getStart: (position?: ColumnPinningPosition | 'center') => number;
72
79
  /**
@@ -76,7 +83,7 @@ interface Column_ColumnSizing {
76
83
  }
77
84
  interface Header_ColumnSizing {
78
85
  /**
79
- * Returns the current size of the header.
86
+ * Computes this header's rendered size from its leaf columns.
80
87
  */
81
88
  getSize: () => number;
82
89
  /**