@fluentui/react-table 9.2.12 → 9.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/CHANGELOG.json +86 -1
  2. package/CHANGELOG.md +24 -2
  3. package/lib/DataGrid.js +0 -1
  4. package/lib/DataGrid.js.map +1 -1
  5. package/lib/DataGridBody.js +0 -1
  6. package/lib/DataGridBody.js.map +1 -1
  7. package/lib/DataGridCell.js +0 -1
  8. package/lib/DataGridCell.js.map +1 -1
  9. package/lib/DataGridHeader.js +0 -1
  10. package/lib/DataGridHeader.js.map +1 -1
  11. package/lib/DataGridHeaderCell.js +0 -1
  12. package/lib/DataGridHeaderCell.js.map +1 -1
  13. package/lib/DataGridRow.js +0 -1
  14. package/lib/DataGridRow.js.map +1 -1
  15. package/lib/DataGridSelectionCell.js +0 -1
  16. package/lib/DataGridSelectionCell.js.map +1 -1
  17. package/lib/Table.js +0 -1
  18. package/lib/Table.js.map +1 -1
  19. package/lib/TableBody.js +0 -1
  20. package/lib/TableBody.js.map +1 -1
  21. package/lib/TableCell.js +0 -1
  22. package/lib/TableCell.js.map +1 -1
  23. package/lib/TableCellActions.js +0 -1
  24. package/lib/TableCellActions.js.map +1 -1
  25. package/lib/TableCellLayout.js +0 -1
  26. package/lib/TableCellLayout.js.map +1 -1
  27. package/lib/TableCellPrimaryLayout.js +0 -1
  28. package/lib/TableCellPrimaryLayout.js.map +1 -1
  29. package/lib/TableHeader.js +0 -1
  30. package/lib/TableHeader.js.map +1 -1
  31. package/lib/TableHeaderCell.js +0 -1
  32. package/lib/TableHeaderCell.js.map +1 -1
  33. package/lib/TableResizeHandle.js +0 -1
  34. package/lib/TableResizeHandle.js.map +1 -1
  35. package/lib/TableRow.js +0 -1
  36. package/lib/TableRow.js.map +1 -1
  37. package/lib/TableSelectionCell.js +0 -1
  38. package/lib/TableSelectionCell.js.map +1 -1
  39. package/lib/components/DataGrid/DataGrid.js +5 -7
  40. package/lib/components/DataGrid/DataGrid.js.map +1 -1
  41. package/lib/components/DataGrid/DataGrid.types.js +0 -1
  42. package/lib/components/DataGrid/DataGrid.types.js.map +1 -1
  43. package/lib/components/DataGrid/index.js +0 -1
  44. package/lib/components/DataGrid/index.js.map +1 -1
  45. package/lib/components/DataGrid/renderDataGrid.js +4 -6
  46. package/lib/components/DataGrid/renderDataGrid.js.map +1 -1
  47. package/lib/components/DataGrid/useDataGrid.js +71 -89
  48. package/lib/components/DataGrid/useDataGrid.js.map +1 -1
  49. package/lib/components/DataGrid/useDataGridContextValues.js +12 -13
  50. package/lib/components/DataGrid/useDataGridContextValues.js.map +1 -1
  51. package/lib/components/DataGrid/useDataGridStyles.styles.js.map +1 -1
  52. package/lib/components/DataGridBody/DataGridBody.js +5 -7
  53. package/lib/components/DataGridBody/DataGridBody.js.map +1 -1
  54. package/lib/components/DataGridBody/DataGridBody.types.js +0 -1
  55. package/lib/components/DataGridBody/DataGridBody.types.js.map +1 -1
  56. package/lib/components/DataGridBody/index.js +0 -1
  57. package/lib/components/DataGridBody/index.js.map +1 -1
  58. package/lib/components/DataGridBody/renderDataGridBody.js +7 -12
  59. package/lib/components/DataGridBody/renderDataGridBody.js.map +1 -1
  60. package/lib/components/DataGridBody/useDataGridBody.js +15 -19
  61. package/lib/components/DataGridBody/useDataGridBody.js.map +1 -1
  62. package/lib/components/DataGridBody/useDataGridBodyStyles.styles.js.map +1 -1
  63. package/lib/components/DataGridCell/DataGridCell.js +5 -7
  64. package/lib/components/DataGridCell/DataGridCell.js.map +1 -1
  65. package/lib/components/DataGridCell/DataGridCell.types.js +1 -2
  66. package/lib/components/DataGridCell/DataGridCell.types.js.map +1 -1
  67. package/lib/components/DataGridCell/index.js +0 -1
  68. package/lib/components/DataGridCell/index.js.map +1 -1
  69. package/lib/components/DataGridCell/renderDataGridCell.js +2 -4
  70. package/lib/components/DataGridCell/renderDataGridCell.js.map +1 -1
  71. package/lib/components/DataGridCell/useDataGridCell.js +12 -14
  72. package/lib/components/DataGridCell/useDataGridCell.js.map +1 -1
  73. package/lib/components/DataGridCell/useDataGridCellStyles.styles.js.map +1 -1
  74. package/lib/components/DataGridHeader/DataGridHeader.js +5 -7
  75. package/lib/components/DataGridHeader/DataGridHeader.js.map +1 -1
  76. package/lib/components/DataGridHeader/DataGridHeader.types.js +1 -2
  77. package/lib/components/DataGridHeader/DataGridHeader.types.js.map +1 -1
  78. package/lib/components/DataGridHeader/index.js +0 -1
  79. package/lib/components/DataGridHeader/index.js.map +1 -1
  80. package/lib/components/DataGridHeader/renderDataGridHeader.js +2 -4
  81. package/lib/components/DataGridHeader/renderDataGridHeader.js.map +1 -1
  82. package/lib/components/DataGridHeader/useDataGridHeader.js +5 -7
  83. package/lib/components/DataGridHeader/useDataGridHeader.js.map +1 -1
  84. package/lib/components/DataGridHeader/useDataGridHeaderStyles.styles.js.map +1 -1
  85. package/lib/components/DataGridHeaderCell/DataGridHeaderCell.js +5 -7
  86. package/lib/components/DataGridHeaderCell/DataGridHeaderCell.js.map +1 -1
  87. package/lib/components/DataGridHeaderCell/DataGridHeaderCell.types.js +1 -2
  88. package/lib/components/DataGridHeaderCell/DataGridHeaderCell.types.js.map +1 -1
  89. package/lib/components/DataGridHeaderCell/index.js +0 -1
  90. package/lib/components/DataGridHeaderCell/index.js.map +1 -1
  91. package/lib/components/DataGridHeaderCell/renderDataGridHeaderCell.js +2 -4
  92. package/lib/components/DataGridHeaderCell/renderDataGridHeaderCell.js.map +1 -1
  93. package/lib/components/DataGridHeaderCell/useDataGridHeaderCell.js +23 -26
  94. package/lib/components/DataGridHeaderCell/useDataGridHeaderCell.js.map +1 -1
  95. package/lib/components/DataGridHeaderCell/useDataGridHeaderCellStyles.styles.js.map +1 -1
  96. package/lib/components/DataGridRow/DataGridRow.js +5 -7
  97. package/lib/components/DataGridRow/DataGridRow.js.map +1 -1
  98. package/lib/components/DataGridRow/DataGridRow.types.js +0 -1
  99. package/lib/components/DataGridRow/DataGridRow.types.js.map +1 -1
  100. package/lib/components/DataGridRow/index.js +0 -1
  101. package/lib/components/DataGridRow/index.js.map +1 -1
  102. package/lib/components/DataGridRow/renderDataGridRow.js +7 -12
  103. package/lib/components/DataGridRow/renderDataGridRow.js.map +1 -1
  104. package/lib/components/DataGridRow/useDataGridRow.js +54 -56
  105. package/lib/components/DataGridRow/useDataGridRow.js.map +1 -1
  106. package/lib/components/DataGridRow/useDataGridRowStyles.styles.js.map +1 -1
  107. package/lib/components/DataGridSelectionCell/DataGridSelectionCell.js +5 -7
  108. package/lib/components/DataGridSelectionCell/DataGridSelectionCell.js.map +1 -1
  109. package/lib/components/DataGridSelectionCell/DataGridSelectionCell.types.js +1 -2
  110. package/lib/components/DataGridSelectionCell/DataGridSelectionCell.types.js.map +1 -1
  111. package/lib/components/DataGridSelectionCell/index.js +0 -1
  112. package/lib/components/DataGridSelectionCell/index.js.map +1 -1
  113. package/lib/components/DataGridSelectionCell/renderDataGridSelectionCell.js +2 -4
  114. package/lib/components/DataGridSelectionCell/renderDataGridSelectionCell.js.map +1 -1
  115. package/lib/components/DataGridSelectionCell/useDataGridSelectionCell.js +31 -33
  116. package/lib/components/DataGridSelectionCell/useDataGridSelectionCell.js.map +1 -1
  117. package/lib/components/DataGridSelectionCell/useDataGridSelectionCellStyles.styles.js.map +1 -1
  118. package/lib/components/Table/Table.js +5 -7
  119. package/lib/components/Table/Table.js.map +1 -1
  120. package/lib/components/Table/Table.types.js +1 -2
  121. package/lib/components/Table/Table.types.js.map +1 -1
  122. package/lib/components/Table/index.js +0 -1
  123. package/lib/components/Table/index.js.map +1 -1
  124. package/lib/components/Table/renderTable.js +6 -11
  125. package/lib/components/Table/renderTable.js.map +1 -1
  126. package/lib/components/Table/useTable.js +17 -19
  127. package/lib/components/Table/useTable.js.map +1 -1
  128. package/lib/components/Table/useTableContextValues.js +13 -14
  129. package/lib/components/Table/useTableContextValues.js.map +1 -1
  130. package/lib/components/Table/useTableStyles.styles.js.map +1 -1
  131. package/lib/components/TableBody/TableBody.js +5 -7
  132. package/lib/components/TableBody/TableBody.js.map +1 -1
  133. package/lib/components/TableBody/TableBody.types.js +1 -2
  134. package/lib/components/TableBody/TableBody.types.js.map +1 -1
  135. package/lib/components/TableBody/index.js +0 -1
  136. package/lib/components/TableBody/index.js.map +1 -1
  137. package/lib/components/TableBody/renderTableBody.js +4 -9
  138. package/lib/components/TableBody/renderTableBody.js.map +1 -1
  139. package/lib/components/TableBody/useTableBody.js +15 -19
  140. package/lib/components/TableBody/useTableBody.js.map +1 -1
  141. package/lib/components/TableBody/useTableBodyStyles.styles.js.map +1 -1
  142. package/lib/components/TableCell/TableCell.js +5 -7
  143. package/lib/components/TableCell/TableCell.js.map +1 -1
  144. package/lib/components/TableCell/TableCell.types.js +1 -2
  145. package/lib/components/TableCell/TableCell.types.js.map +1 -1
  146. package/lib/components/TableCell/index.js +0 -1
  147. package/lib/components/TableCell/index.js.map +1 -1
  148. package/lib/components/TableCell/renderTableCell.js +4 -9
  149. package/lib/components/TableCell/renderTableCell.js.map +1 -1
  150. package/lib/components/TableCell/useTableCell.js +16 -21
  151. package/lib/components/TableCell/useTableCell.js.map +1 -1
  152. package/lib/components/TableCell/useTableCellStyles.styles.js.map +1 -1
  153. package/lib/components/TableCellActions/TableCellActions.js +5 -7
  154. package/lib/components/TableCellActions/TableCellActions.js.map +1 -1
  155. package/lib/components/TableCellActions/TableCellActions.types.js +1 -2
  156. package/lib/components/TableCellActions/TableCellActions.types.js.map +1 -1
  157. package/lib/components/TableCellActions/index.js +0 -1
  158. package/lib/components/TableCellActions/index.js.map +1 -1
  159. package/lib/components/TableCellActions/renderTableCellActions.js +4 -9
  160. package/lib/components/TableCellActions/renderTableCellActions.js.map +1 -1
  161. package/lib/components/TableCellActions/useTableCellActions.js +12 -14
  162. package/lib/components/TableCellActions/useTableCellActions.js.map +1 -1
  163. package/lib/components/TableCellActions/useTableCellActionsStyles.styles.js.map +1 -1
  164. package/lib/components/TableCellLayout/TableCellLayout.js +5 -7
  165. package/lib/components/TableCellLayout/TableCellLayout.js.map +1 -1
  166. package/lib/components/TableCellLayout/TableCellLayout.types.js +1 -2
  167. package/lib/components/TableCellLayout/TableCellLayout.types.js.map +1 -1
  168. package/lib/components/TableCellLayout/index.js +0 -1
  169. package/lib/components/TableCellLayout/index.js.map +1 -1
  170. package/lib/components/TableCellLayout/renderTableCellLayout.js +6 -11
  171. package/lib/components/TableCellLayout/renderTableCellLayout.js.map +1 -1
  172. package/lib/components/TableCellLayout/useTableCellLayout.js +30 -34
  173. package/lib/components/TableCellLayout/useTableCellLayout.js.map +1 -1
  174. package/lib/components/TableCellLayout/useTableCellLayoutContextValues.js +9 -10
  175. package/lib/components/TableCellLayout/useTableCellLayoutContextValues.js.map +1 -1
  176. package/lib/components/TableCellLayout/useTableCellLayoutStyles.styles.js.map +1 -1
  177. package/lib/components/TableHeader/TableHeader.js +5 -7
  178. package/lib/components/TableHeader/TableHeader.js.map +1 -1
  179. package/lib/components/TableHeader/TableHeader.types.js +1 -2
  180. package/lib/components/TableHeader/TableHeader.types.js.map +1 -1
  181. package/lib/components/TableHeader/index.js +0 -1
  182. package/lib/components/TableHeader/index.js.map +1 -1
  183. package/lib/components/TableHeader/renderTableHeader.js +6 -11
  184. package/lib/components/TableHeader/renderTableHeader.js.map +1 -1
  185. package/lib/components/TableHeader/useTableHeader.js +15 -19
  186. package/lib/components/TableHeader/useTableHeader.js.map +1 -1
  187. package/lib/components/TableHeader/useTableHeaderStyles.styles.js.map +1 -1
  188. package/lib/components/TableHeaderCell/TableHeaderCell.js +5 -7
  189. package/lib/components/TableHeaderCell/TableHeaderCell.js.map +1 -1
  190. package/lib/components/TableHeaderCell/TableHeaderCell.types.js +1 -2
  191. package/lib/components/TableHeaderCell/TableHeaderCell.types.js.map +1 -1
  192. package/lib/components/TableHeaderCell/index.js +0 -1
  193. package/lib/components/TableHeaderCell/index.js.map +1 -1
  194. package/lib/components/TableHeaderCell/renderTableHeaderCell.js +4 -9
  195. package/lib/components/TableHeaderCell/renderTableHeaderCell.js.map +1 -1
  196. package/lib/components/TableHeaderCell/useTableHeaderCell.js +46 -51
  197. package/lib/components/TableHeaderCell/useTableHeaderCell.js.map +1 -1
  198. package/lib/components/TableHeaderCell/useTableHeaderCellStyles.styles.js +10 -2
  199. package/lib/components/TableHeaderCell/useTableHeaderCellStyles.styles.js.map +1 -1
  200. package/lib/components/TableResizeHandle/TableResizeHandle.js +5 -7
  201. package/lib/components/TableResizeHandle/TableResizeHandle.js.map +1 -1
  202. package/lib/components/TableResizeHandle/TableResizeHandle.types.js +1 -2
  203. package/lib/components/TableResizeHandle/TableResizeHandle.types.js.map +1 -1
  204. package/lib/components/TableResizeHandle/index.js +0 -1
  205. package/lib/components/TableResizeHandle/index.js.map +1 -1
  206. package/lib/components/TableResizeHandle/renderTableResizeHandle.js +4 -9
  207. package/lib/components/TableResizeHandle/renderTableResizeHandle.js.map +1 -1
  208. package/lib/components/TableResizeHandle/useTableResizeHandle.js +16 -18
  209. package/lib/components/TableResizeHandle/useTableResizeHandle.js.map +1 -1
  210. package/lib/components/TableResizeHandle/useTableResizeHandleStyles.styles.js.map +1 -1
  211. package/lib/components/TableRow/TableRow.js +5 -7
  212. package/lib/components/TableRow/TableRow.js.map +1 -1
  213. package/lib/components/TableRow/TableRow.types.js +1 -2
  214. package/lib/components/TableRow/TableRow.types.js.map +1 -1
  215. package/lib/components/TableRow/index.js +0 -1
  216. package/lib/components/TableRow/index.js.map +1 -1
  217. package/lib/components/TableRow/renderTableRow.js +4 -9
  218. package/lib/components/TableRow/renderTableRow.js.map +1 -1
  219. package/lib/components/TableRow/useTableRow.js +22 -27
  220. package/lib/components/TableRow/useTableRow.js.map +1 -1
  221. package/lib/components/TableRow/useTableRowStyles.styles.js.map +1 -1
  222. package/lib/components/TableSelectionCell/TableSelectionCell.js +5 -7
  223. package/lib/components/TableSelectionCell/TableSelectionCell.js.map +1 -1
  224. package/lib/components/TableSelectionCell/TableSelectionCell.types.js +1 -2
  225. package/lib/components/TableSelectionCell/TableSelectionCell.types.js.map +1 -1
  226. package/lib/components/TableSelectionCell/index.js +0 -1
  227. package/lib/components/TableSelectionCell/index.js.map +1 -1
  228. package/lib/components/TableSelectionCell/renderTableSelectionCell.js +4 -9
  229. package/lib/components/TableSelectionCell/renderTableSelectionCell.js.map +1 -1
  230. package/lib/components/TableSelectionCell/useTableSelectionCell.js +32 -41
  231. package/lib/components/TableSelectionCell/useTableSelectionCell.js.map +1 -1
  232. package/lib/components/TableSelectionCell/useTableSelectionCellStyles.styles.js.map +1 -1
  233. package/lib/contexts/columnIdContext.js +2 -3
  234. package/lib/contexts/columnIdContext.js.map +1 -1
  235. package/lib/contexts/dataGridContext.js +7 -8
  236. package/lib/contexts/dataGridContext.js.map +1 -1
  237. package/lib/contexts/rowIdContext.js +2 -3
  238. package/lib/contexts/rowIdContext.js.map +1 -1
  239. package/lib/contexts/tableContext.js +5 -6
  240. package/lib/contexts/tableContext.js.map +1 -1
  241. package/lib/contexts/tableHeaderContext.js +2 -3
  242. package/lib/contexts/tableHeaderContext.js.map +1 -1
  243. package/lib/hooks/createColumn.js +21 -28
  244. package/lib/hooks/createColumn.js.map +1 -1
  245. package/lib/hooks/index.js +0 -1
  246. package/lib/hooks/index.js.map +1 -1
  247. package/lib/hooks/selectionManager.js +71 -68
  248. package/lib/hooks/selectionManager.js.map +1 -1
  249. package/lib/hooks/types.js +0 -1
  250. package/lib/hooks/types.js.map +1 -1
  251. package/lib/hooks/useKeyboardResizing.js +96 -87
  252. package/lib/hooks/useKeyboardResizing.js.map +1 -1
  253. package/lib/hooks/useMeasureElement.js +42 -40
  254. package/lib/hooks/useMeasureElement.js.map +1 -1
  255. package/lib/hooks/useTableColumnResizeMouseHandler.js +64 -61
  256. package/lib/hooks/useTableColumnResizeMouseHandler.js.map +1 -1
  257. package/lib/hooks/useTableColumnResizeState.js +100 -105
  258. package/lib/hooks/useTableColumnResizeState.js.map +1 -1
  259. package/lib/hooks/useTableColumnSizing.js +74 -74
  260. package/lib/hooks/useTableColumnSizing.js.map +1 -1
  261. package/lib/hooks/useTableFeatures.js +30 -35
  262. package/lib/hooks/useTableFeatures.js.map +1 -1
  263. package/lib/hooks/useTableSelection.js +64 -66
  264. package/lib/hooks/useTableSelection.js.map +1 -1
  265. package/lib/hooks/useTableSort.js +68 -76
  266. package/lib/hooks/useTableSort.js.map +1 -1
  267. package/lib/index.js +0 -1
  268. package/lib/index.js.map +1 -1
  269. package/lib/utils/columnResizeUtils.js +104 -108
  270. package/lib/utils/columnResizeUtils.js.map +1 -1
  271. package/lib-commonjs/DataGrid.js +0 -3
  272. package/lib-commonjs/DataGrid.js.map +1 -1
  273. package/lib-commonjs/DataGridBody.js +0 -3
  274. package/lib-commonjs/DataGridBody.js.map +1 -1
  275. package/lib-commonjs/DataGridCell.js +0 -3
  276. package/lib-commonjs/DataGridCell.js.map +1 -1
  277. package/lib-commonjs/DataGridHeader.js +0 -3
  278. package/lib-commonjs/DataGridHeader.js.map +1 -1
  279. package/lib-commonjs/DataGridHeaderCell.js +0 -3
  280. package/lib-commonjs/DataGridHeaderCell.js.map +1 -1
  281. package/lib-commonjs/DataGridRow.js +0 -3
  282. package/lib-commonjs/DataGridRow.js.map +1 -1
  283. package/lib-commonjs/DataGridSelectionCell.js +0 -3
  284. package/lib-commonjs/DataGridSelectionCell.js.map +1 -1
  285. package/lib-commonjs/Table.js +0 -3
  286. package/lib-commonjs/Table.js.map +1 -1
  287. package/lib-commonjs/TableBody.js +0 -3
  288. package/lib-commonjs/TableBody.js.map +1 -1
  289. package/lib-commonjs/TableCell.js +0 -3
  290. package/lib-commonjs/TableCell.js.map +1 -1
  291. package/lib-commonjs/TableCellActions.js +0 -3
  292. package/lib-commonjs/TableCellActions.js.map +1 -1
  293. package/lib-commonjs/TableCellLayout.js +0 -3
  294. package/lib-commonjs/TableCellLayout.js.map +1 -1
  295. package/lib-commonjs/TableCellPrimaryLayout.js +0 -3
  296. package/lib-commonjs/TableCellPrimaryLayout.js.map +1 -1
  297. package/lib-commonjs/TableHeader.js +0 -3
  298. package/lib-commonjs/TableHeader.js.map +1 -1
  299. package/lib-commonjs/TableHeaderCell.js +0 -3
  300. package/lib-commonjs/TableHeaderCell.js.map +1 -1
  301. package/lib-commonjs/TableResizeHandle.js +0 -3
  302. package/lib-commonjs/TableResizeHandle.js.map +1 -1
  303. package/lib-commonjs/TableRow.js +0 -3
  304. package/lib-commonjs/TableRow.js.map +1 -1
  305. package/lib-commonjs/TableSelectionCell.js +0 -3
  306. package/lib-commonjs/TableSelectionCell.js.map +1 -1
  307. package/lib-commonjs/components/DataGrid/DataGrid.js +1 -3
  308. package/lib-commonjs/components/DataGrid/DataGrid.js.map +1 -1
  309. package/lib-commonjs/components/DataGrid/DataGrid.types.js +0 -3
  310. package/lib-commonjs/components/DataGrid/DataGrid.types.js.map +1 -1
  311. package/lib-commonjs/components/DataGrid/index.js +0 -3
  312. package/lib-commonjs/components/DataGrid/index.js.map +1 -1
  313. package/lib-commonjs/components/DataGrid/renderDataGrid.js +1 -3
  314. package/lib-commonjs/components/DataGrid/renderDataGrid.js.map +1 -1
  315. package/lib-commonjs/components/DataGrid/useDataGrid.js +1 -3
  316. package/lib-commonjs/components/DataGrid/useDataGrid.js.map +1 -1
  317. package/lib-commonjs/components/DataGrid/useDataGridContextValues.js +1 -3
  318. package/lib-commonjs/components/DataGrid/useDataGridContextValues.js.map +1 -1
  319. package/lib-commonjs/components/DataGrid/useDataGridStyles.styles.js +0 -2
  320. package/lib-commonjs/components/DataGrid/useDataGridStyles.styles.js.map +1 -1
  321. package/lib-commonjs/components/DataGridBody/DataGridBody.js +1 -3
  322. package/lib-commonjs/components/DataGridBody/DataGridBody.js.map +1 -1
  323. package/lib-commonjs/components/DataGridBody/DataGridBody.types.js +0 -3
  324. package/lib-commonjs/components/DataGridBody/DataGridBody.types.js.map +1 -1
  325. package/lib-commonjs/components/DataGridBody/index.js +0 -3
  326. package/lib-commonjs/components/DataGridBody/index.js.map +1 -1
  327. package/lib-commonjs/components/DataGridBody/renderDataGridBody.js +1 -3
  328. package/lib-commonjs/components/DataGridBody/renderDataGridBody.js.map +1 -1
  329. package/lib-commonjs/components/DataGridBody/useDataGridBody.js +1 -3
  330. package/lib-commonjs/components/DataGridBody/useDataGridBody.js.map +1 -1
  331. package/lib-commonjs/components/DataGridBody/useDataGridBodyStyles.styles.js +0 -2
  332. package/lib-commonjs/components/DataGridBody/useDataGridBodyStyles.styles.js.map +1 -1
  333. package/lib-commonjs/components/DataGridCell/DataGridCell.js +1 -3
  334. package/lib-commonjs/components/DataGridCell/DataGridCell.js.map +1 -1
  335. package/lib-commonjs/components/DataGridCell/DataGridCell.types.js +0 -3
  336. package/lib-commonjs/components/DataGridCell/DataGridCell.types.js.map +1 -1
  337. package/lib-commonjs/components/DataGridCell/index.js +0 -3
  338. package/lib-commonjs/components/DataGridCell/index.js.map +1 -1
  339. package/lib-commonjs/components/DataGridCell/renderDataGridCell.js +1 -3
  340. package/lib-commonjs/components/DataGridCell/renderDataGridCell.js.map +1 -1
  341. package/lib-commonjs/components/DataGridCell/useDataGridCell.js +1 -3
  342. package/lib-commonjs/components/DataGridCell/useDataGridCell.js.map +1 -1
  343. package/lib-commonjs/components/DataGridCell/useDataGridCellStyles.styles.js +0 -2
  344. package/lib-commonjs/components/DataGridCell/useDataGridCellStyles.styles.js.map +1 -1
  345. package/lib-commonjs/components/DataGridHeader/DataGridHeader.js +1 -3
  346. package/lib-commonjs/components/DataGridHeader/DataGridHeader.js.map +1 -1
  347. package/lib-commonjs/components/DataGridHeader/DataGridHeader.types.js +0 -3
  348. package/lib-commonjs/components/DataGridHeader/DataGridHeader.types.js.map +1 -1
  349. package/lib-commonjs/components/DataGridHeader/index.js +0 -3
  350. package/lib-commonjs/components/DataGridHeader/index.js.map +1 -1
  351. package/lib-commonjs/components/DataGridHeader/renderDataGridHeader.js +1 -3
  352. package/lib-commonjs/components/DataGridHeader/renderDataGridHeader.js.map +1 -1
  353. package/lib-commonjs/components/DataGridHeader/useDataGridHeader.js +1 -3
  354. package/lib-commonjs/components/DataGridHeader/useDataGridHeader.js.map +1 -1
  355. package/lib-commonjs/components/DataGridHeader/useDataGridHeaderStyles.styles.js +0 -2
  356. package/lib-commonjs/components/DataGridHeader/useDataGridHeaderStyles.styles.js.map +1 -1
  357. package/lib-commonjs/components/DataGridHeaderCell/DataGridHeaderCell.js +1 -3
  358. package/lib-commonjs/components/DataGridHeaderCell/DataGridHeaderCell.js.map +1 -1
  359. package/lib-commonjs/components/DataGridHeaderCell/DataGridHeaderCell.types.js +0 -3
  360. package/lib-commonjs/components/DataGridHeaderCell/DataGridHeaderCell.types.js.map +1 -1
  361. package/lib-commonjs/components/DataGridHeaderCell/index.js +0 -3
  362. package/lib-commonjs/components/DataGridHeaderCell/index.js.map +1 -1
  363. package/lib-commonjs/components/DataGridHeaderCell/renderDataGridHeaderCell.js +1 -3
  364. package/lib-commonjs/components/DataGridHeaderCell/renderDataGridHeaderCell.js.map +1 -1
  365. package/lib-commonjs/components/DataGridHeaderCell/useDataGridHeaderCell.js +2 -3
  366. package/lib-commonjs/components/DataGridHeaderCell/useDataGridHeaderCell.js.map +1 -1
  367. package/lib-commonjs/components/DataGridHeaderCell/useDataGridHeaderCellStyles.styles.js +0 -2
  368. package/lib-commonjs/components/DataGridHeaderCell/useDataGridHeaderCellStyles.styles.js.map +1 -1
  369. package/lib-commonjs/components/DataGridRow/DataGridRow.js +1 -3
  370. package/lib-commonjs/components/DataGridRow/DataGridRow.js.map +1 -1
  371. package/lib-commonjs/components/DataGridRow/DataGridRow.types.js +0 -3
  372. package/lib-commonjs/components/DataGridRow/DataGridRow.types.js.map +1 -1
  373. package/lib-commonjs/components/DataGridRow/index.js +0 -3
  374. package/lib-commonjs/components/DataGridRow/index.js.map +1 -1
  375. package/lib-commonjs/components/DataGridRow/renderDataGridRow.js +1 -3
  376. package/lib-commonjs/components/DataGridRow/renderDataGridRow.js.map +1 -1
  377. package/lib-commonjs/components/DataGridRow/useDataGridRow.js +1 -3
  378. package/lib-commonjs/components/DataGridRow/useDataGridRow.js.map +1 -1
  379. package/lib-commonjs/components/DataGridRow/useDataGridRowStyles.styles.js +0 -2
  380. package/lib-commonjs/components/DataGridRow/useDataGridRowStyles.styles.js.map +1 -1
  381. package/lib-commonjs/components/DataGridSelectionCell/DataGridSelectionCell.js +1 -3
  382. package/lib-commonjs/components/DataGridSelectionCell/DataGridSelectionCell.js.map +1 -1
  383. package/lib-commonjs/components/DataGridSelectionCell/DataGridSelectionCell.types.js +0 -3
  384. package/lib-commonjs/components/DataGridSelectionCell/DataGridSelectionCell.types.js.map +1 -1
  385. package/lib-commonjs/components/DataGridSelectionCell/index.js +0 -3
  386. package/lib-commonjs/components/DataGridSelectionCell/index.js.map +1 -1
  387. package/lib-commonjs/components/DataGridSelectionCell/renderDataGridSelectionCell.js +1 -3
  388. package/lib-commonjs/components/DataGridSelectionCell/renderDataGridSelectionCell.js.map +1 -1
  389. package/lib-commonjs/components/DataGridSelectionCell/useDataGridSelectionCell.js +1 -3
  390. package/lib-commonjs/components/DataGridSelectionCell/useDataGridSelectionCell.js.map +1 -1
  391. package/lib-commonjs/components/DataGridSelectionCell/useDataGridSelectionCellStyles.styles.js +0 -2
  392. package/lib-commonjs/components/DataGridSelectionCell/useDataGridSelectionCellStyles.styles.js.map +1 -1
  393. package/lib-commonjs/components/Table/Table.js +1 -3
  394. package/lib-commonjs/components/Table/Table.js.map +1 -1
  395. package/lib-commonjs/components/Table/Table.types.js +0 -3
  396. package/lib-commonjs/components/Table/Table.types.js.map +1 -1
  397. package/lib-commonjs/components/Table/index.js +0 -3
  398. package/lib-commonjs/components/Table/index.js.map +1 -1
  399. package/lib-commonjs/components/Table/renderTable.js +1 -3
  400. package/lib-commonjs/components/Table/renderTable.js.map +1 -1
  401. package/lib-commonjs/components/Table/useTable.js +1 -3
  402. package/lib-commonjs/components/Table/useTable.js.map +1 -1
  403. package/lib-commonjs/components/Table/useTableContextValues.js +1 -3
  404. package/lib-commonjs/components/Table/useTableContextValues.js.map +1 -1
  405. package/lib-commonjs/components/Table/useTableStyles.styles.js +0 -2
  406. package/lib-commonjs/components/Table/useTableStyles.styles.js.map +1 -1
  407. package/lib-commonjs/components/TableBody/TableBody.js +1 -3
  408. package/lib-commonjs/components/TableBody/TableBody.js.map +1 -1
  409. package/lib-commonjs/components/TableBody/TableBody.types.js +0 -3
  410. package/lib-commonjs/components/TableBody/TableBody.types.js.map +1 -1
  411. package/lib-commonjs/components/TableBody/index.js +0 -3
  412. package/lib-commonjs/components/TableBody/index.js.map +1 -1
  413. package/lib-commonjs/components/TableBody/renderTableBody.js +1 -3
  414. package/lib-commonjs/components/TableBody/renderTableBody.js.map +1 -1
  415. package/lib-commonjs/components/TableBody/useTableBody.js +1 -3
  416. package/lib-commonjs/components/TableBody/useTableBody.js.map +1 -1
  417. package/lib-commonjs/components/TableBody/useTableBodyStyles.styles.js +0 -2
  418. package/lib-commonjs/components/TableBody/useTableBodyStyles.styles.js.map +1 -1
  419. package/lib-commonjs/components/TableCell/TableCell.js +1 -3
  420. package/lib-commonjs/components/TableCell/TableCell.js.map +1 -1
  421. package/lib-commonjs/components/TableCell/TableCell.types.js +0 -3
  422. package/lib-commonjs/components/TableCell/TableCell.types.js.map +1 -1
  423. package/lib-commonjs/components/TableCell/index.js +0 -3
  424. package/lib-commonjs/components/TableCell/index.js.map +1 -1
  425. package/lib-commonjs/components/TableCell/renderTableCell.js +1 -3
  426. package/lib-commonjs/components/TableCell/renderTableCell.js.map +1 -1
  427. package/lib-commonjs/components/TableCell/useTableCell.js +1 -3
  428. package/lib-commonjs/components/TableCell/useTableCell.js.map +1 -1
  429. package/lib-commonjs/components/TableCell/useTableCellStyles.styles.js +0 -2
  430. package/lib-commonjs/components/TableCell/useTableCellStyles.styles.js.map +1 -1
  431. package/lib-commonjs/components/TableCellActions/TableCellActions.js +1 -3
  432. package/lib-commonjs/components/TableCellActions/TableCellActions.js.map +1 -1
  433. package/lib-commonjs/components/TableCellActions/TableCellActions.types.js +0 -3
  434. package/lib-commonjs/components/TableCellActions/TableCellActions.types.js.map +1 -1
  435. package/lib-commonjs/components/TableCellActions/index.js +0 -3
  436. package/lib-commonjs/components/TableCellActions/index.js.map +1 -1
  437. package/lib-commonjs/components/TableCellActions/renderTableCellActions.js +1 -3
  438. package/lib-commonjs/components/TableCellActions/renderTableCellActions.js.map +1 -1
  439. package/lib-commonjs/components/TableCellActions/useTableCellActions.js +1 -3
  440. package/lib-commonjs/components/TableCellActions/useTableCellActions.js.map +1 -1
  441. package/lib-commonjs/components/TableCellActions/useTableCellActionsStyles.styles.js +0 -2
  442. package/lib-commonjs/components/TableCellActions/useTableCellActionsStyles.styles.js.map +1 -1
  443. package/lib-commonjs/components/TableCellLayout/TableCellLayout.js +1 -3
  444. package/lib-commonjs/components/TableCellLayout/TableCellLayout.js.map +1 -1
  445. package/lib-commonjs/components/TableCellLayout/TableCellLayout.types.js +0 -3
  446. package/lib-commonjs/components/TableCellLayout/TableCellLayout.types.js.map +1 -1
  447. package/lib-commonjs/components/TableCellLayout/index.js +0 -3
  448. package/lib-commonjs/components/TableCellLayout/index.js.map +1 -1
  449. package/lib-commonjs/components/TableCellLayout/renderTableCellLayout.js +1 -3
  450. package/lib-commonjs/components/TableCellLayout/renderTableCellLayout.js.map +1 -1
  451. package/lib-commonjs/components/TableCellLayout/useTableCellLayout.js +1 -3
  452. package/lib-commonjs/components/TableCellLayout/useTableCellLayout.js.map +1 -1
  453. package/lib-commonjs/components/TableCellLayout/useTableCellLayoutContextValues.js +1 -3
  454. package/lib-commonjs/components/TableCellLayout/useTableCellLayoutContextValues.js.map +1 -1
  455. package/lib-commonjs/components/TableCellLayout/useTableCellLayoutStyles.styles.js +0 -2
  456. package/lib-commonjs/components/TableCellLayout/useTableCellLayoutStyles.styles.js.map +1 -1
  457. package/lib-commonjs/components/TableHeader/TableHeader.js +1 -3
  458. package/lib-commonjs/components/TableHeader/TableHeader.js.map +1 -1
  459. package/lib-commonjs/components/TableHeader/TableHeader.types.js +0 -3
  460. package/lib-commonjs/components/TableHeader/TableHeader.types.js.map +1 -1
  461. package/lib-commonjs/components/TableHeader/index.js +0 -3
  462. package/lib-commonjs/components/TableHeader/index.js.map +1 -1
  463. package/lib-commonjs/components/TableHeader/renderTableHeader.js +1 -3
  464. package/lib-commonjs/components/TableHeader/renderTableHeader.js.map +1 -1
  465. package/lib-commonjs/components/TableHeader/useTableHeader.js +1 -3
  466. package/lib-commonjs/components/TableHeader/useTableHeader.js.map +1 -1
  467. package/lib-commonjs/components/TableHeader/useTableHeaderStyles.styles.js +0 -2
  468. package/lib-commonjs/components/TableHeader/useTableHeaderStyles.styles.js.map +1 -1
  469. package/lib-commonjs/components/TableHeaderCell/TableHeaderCell.js +1 -3
  470. package/lib-commonjs/components/TableHeaderCell/TableHeaderCell.js.map +1 -1
  471. package/lib-commonjs/components/TableHeaderCell/TableHeaderCell.types.js +0 -3
  472. package/lib-commonjs/components/TableHeaderCell/TableHeaderCell.types.js.map +1 -1
  473. package/lib-commonjs/components/TableHeaderCell/index.js +0 -3
  474. package/lib-commonjs/components/TableHeaderCell/index.js.map +1 -1
  475. package/lib-commonjs/components/TableHeaderCell/renderTableHeaderCell.js +1 -3
  476. package/lib-commonjs/components/TableHeaderCell/renderTableHeaderCell.js.map +1 -1
  477. package/lib-commonjs/components/TableHeaderCell/useTableHeaderCell.js +1 -3
  478. package/lib-commonjs/components/TableHeaderCell/useTableHeaderCell.js.map +1 -1
  479. package/lib-commonjs/components/TableHeaderCell/useTableHeaderCellStyles.styles.js +27 -3
  480. package/lib-commonjs/components/TableHeaderCell/useTableHeaderCellStyles.styles.js.map +1 -1
  481. package/lib-commonjs/components/TableResizeHandle/TableResizeHandle.js +1 -3
  482. package/lib-commonjs/components/TableResizeHandle/TableResizeHandle.js.map +1 -1
  483. package/lib-commonjs/components/TableResizeHandle/TableResizeHandle.types.js +0 -3
  484. package/lib-commonjs/components/TableResizeHandle/TableResizeHandle.types.js.map +1 -1
  485. package/lib-commonjs/components/TableResizeHandle/index.js +0 -3
  486. package/lib-commonjs/components/TableResizeHandle/index.js.map +1 -1
  487. package/lib-commonjs/components/TableResizeHandle/renderTableResizeHandle.js +1 -3
  488. package/lib-commonjs/components/TableResizeHandle/renderTableResizeHandle.js.map +1 -1
  489. package/lib-commonjs/components/TableResizeHandle/useTableResizeHandle.js +1 -3
  490. package/lib-commonjs/components/TableResizeHandle/useTableResizeHandle.js.map +1 -1
  491. package/lib-commonjs/components/TableResizeHandle/useTableResizeHandleStyles.styles.js +0 -2
  492. package/lib-commonjs/components/TableResizeHandle/useTableResizeHandleStyles.styles.js.map +1 -1
  493. package/lib-commonjs/components/TableRow/TableRow.js +1 -3
  494. package/lib-commonjs/components/TableRow/TableRow.js.map +1 -1
  495. package/lib-commonjs/components/TableRow/TableRow.types.js +0 -3
  496. package/lib-commonjs/components/TableRow/TableRow.types.js.map +1 -1
  497. package/lib-commonjs/components/TableRow/index.js +0 -3
  498. package/lib-commonjs/components/TableRow/index.js.map +1 -1
  499. package/lib-commonjs/components/TableRow/renderTableRow.js +1 -3
  500. package/lib-commonjs/components/TableRow/renderTableRow.js.map +1 -1
  501. package/lib-commonjs/components/TableRow/useTableRow.js +1 -3
  502. package/lib-commonjs/components/TableRow/useTableRow.js.map +1 -1
  503. package/lib-commonjs/components/TableRow/useTableRowStyles.styles.js +0 -2
  504. package/lib-commonjs/components/TableRow/useTableRowStyles.styles.js.map +1 -1
  505. package/lib-commonjs/components/TableSelectionCell/TableSelectionCell.js +1 -3
  506. package/lib-commonjs/components/TableSelectionCell/TableSelectionCell.js.map +1 -1
  507. package/lib-commonjs/components/TableSelectionCell/TableSelectionCell.types.js +0 -3
  508. package/lib-commonjs/components/TableSelectionCell/TableSelectionCell.types.js.map +1 -1
  509. package/lib-commonjs/components/TableSelectionCell/index.js +0 -3
  510. package/lib-commonjs/components/TableSelectionCell/index.js.map +1 -1
  511. package/lib-commonjs/components/TableSelectionCell/renderTableSelectionCell.js +1 -3
  512. package/lib-commonjs/components/TableSelectionCell/renderTableSelectionCell.js.map +1 -1
  513. package/lib-commonjs/components/TableSelectionCell/useTableSelectionCell.js +1 -3
  514. package/lib-commonjs/components/TableSelectionCell/useTableSelectionCell.js.map +1 -1
  515. package/lib-commonjs/components/TableSelectionCell/useTableSelectionCellStyles.styles.js +0 -2
  516. package/lib-commonjs/components/TableSelectionCell/useTableSelectionCellStyles.styles.js.map +1 -1
  517. package/lib-commonjs/contexts/columnIdContext.js +1 -3
  518. package/lib-commonjs/contexts/columnIdContext.js.map +1 -1
  519. package/lib-commonjs/contexts/dataGridContext.js +2 -4
  520. package/lib-commonjs/contexts/dataGridContext.js.map +1 -1
  521. package/lib-commonjs/contexts/rowIdContext.js +1 -3
  522. package/lib-commonjs/contexts/rowIdContext.js.map +1 -1
  523. package/lib-commonjs/contexts/tableContext.js +1 -3
  524. package/lib-commonjs/contexts/tableContext.js.map +1 -1
  525. package/lib-commonjs/contexts/tableHeaderContext.js +1 -3
  526. package/lib-commonjs/contexts/tableHeaderContext.js.map +1 -1
  527. package/lib-commonjs/hooks/createColumn.js +1 -3
  528. package/lib-commonjs/hooks/createColumn.js.map +1 -1
  529. package/lib-commonjs/hooks/index.js +0 -3
  530. package/lib-commonjs/hooks/index.js.map +1 -1
  531. package/lib-commonjs/hooks/selectionManager.js +1 -3
  532. package/lib-commonjs/hooks/selectionManager.js.map +1 -1
  533. package/lib-commonjs/hooks/types.js +0 -3
  534. package/lib-commonjs/hooks/types.js.map +1 -1
  535. package/lib-commonjs/hooks/useKeyboardResizing.js +17 -18
  536. package/lib-commonjs/hooks/useKeyboardResizing.js.map +1 -1
  537. package/lib-commonjs/hooks/useMeasureElement.js +1 -3
  538. package/lib-commonjs/hooks/useMeasureElement.js.map +1 -1
  539. package/lib-commonjs/hooks/useTableColumnResizeMouseHandler.js +1 -3
  540. package/lib-commonjs/hooks/useTableColumnResizeMouseHandler.js.map +1 -1
  541. package/lib-commonjs/hooks/useTableColumnResizeState.js +1 -3
  542. package/lib-commonjs/hooks/useTableColumnResizeState.js.map +1 -1
  543. package/lib-commonjs/hooks/useTableColumnSizing.js +10 -7
  544. package/lib-commonjs/hooks/useTableColumnSizing.js.map +1 -1
  545. package/lib-commonjs/hooks/useTableFeatures.js +1 -3
  546. package/lib-commonjs/hooks/useTableFeatures.js.map +1 -1
  547. package/lib-commonjs/hooks/useTableSelection.js +2 -4
  548. package/lib-commonjs/hooks/useTableSelection.js.map +1 -1
  549. package/lib-commonjs/hooks/useTableSort.js +1 -3
  550. package/lib-commonjs/hooks/useTableSort.js.map +1 -1
  551. package/lib-commonjs/index.js +0 -3
  552. package/lib-commonjs/index.js.map +1 -1
  553. package/lib-commonjs/utils/columnResizeUtils.js +1 -3
  554. package/lib-commonjs/utils/columnResizeUtils.js.map +1 -1
  555. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/hooks/index.ts"],"sourcesContent":["export * from './types';\nexport * from './useTableFeatures';\nexport * from './useTableSort';\nexport * from './useTableSelection';\nexport * from './createColumn';\nexport * from './useTableColumnSizing';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc"}
1
+ {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './types';\nexport * from './useTableFeatures';\nexport * from './useTableSort';\nexport * from './useTableSelection';\nexport * from './createColumn';\nexport * from './useTableColumnSizing';\n"],"names":[],"mappings":"AAAA,cAAc,UAAU;AACxB,cAAc,qBAAqB;AACnC,cAAc,iBAAiB;AAC/B,cAAc,sBAAsB;AACpC,cAAc,iBAAiB;AAC/B,cAAc,yBAAyB"}
@@ -1,74 +1,77 @@
1
1
  import * as React from 'react';
2
- export function createSelectionManager(mode, onSelectionChange = () => undefined) {
3
- const managerFactory = mode === 'multiselect' ? createMultipleSelectionManager : createSingleSelectionManager;
4
- return managerFactory(onSelectionChange);
2
+ export function createSelectionManager(mode, onSelectionChange = ()=>undefined) {
3
+ const managerFactory = mode === 'multiselect' ? createMultipleSelectionManager : createSingleSelectionManager;
4
+ return managerFactory(onSelectionChange);
5
5
  }
6
6
  function createMultipleSelectionManager(onSelectionChange) {
7
- const toggleAllItems = (e, itemIds, selectedItems) => {
8
- const allItemsSelected = itemIds.every(itemId => selectedItems.has(itemId));
9
- if (allItemsSelected) {
10
- selectedItems.clear();
11
- } else {
12
- itemIds.forEach(itemId => selectedItems.add(itemId));
13
- }
14
- onSelectionChange(e, new Set(selectedItems));
15
- };
16
- const toggleItem = (e, itemId, selectedItems) => {
17
- if (selectedItems.has(itemId)) {
18
- selectedItems.delete(itemId);
19
- } else {
20
- selectedItems.add(itemId);
21
- }
22
- onSelectionChange(e, new Set(selectedItems));
23
- };
24
- const selectItem = (e, itemId, selectedItems) => {
25
- selectedItems.add(itemId);
26
- onSelectionChange(e, new Set(selectedItems));
27
- };
28
- const deselectItem = (e, itemId, selectedItems) => {
29
- selectedItems.delete(itemId);
30
- onSelectionChange(e, new Set(selectedItems));
31
- };
32
- const clearItems = e => {
33
- onSelectionChange(e, new Set());
34
- };
35
- const isSelected = (itemId, selectedItems) => {
36
- return selectedItems.has(itemId);
37
- };
38
- return {
39
- toggleItem,
40
- selectItem,
41
- deselectItem,
42
- clearItems,
43
- isSelected,
44
- toggleAllItems
45
- };
7
+ const toggleAllItems = (e, itemIds, selectedItems)=>{
8
+ const allItemsSelected = itemIds.every((itemId)=>selectedItems.has(itemId));
9
+ if (allItemsSelected) {
10
+ selectedItems.clear();
11
+ } else {
12
+ itemIds.forEach((itemId)=>selectedItems.add(itemId));
13
+ }
14
+ onSelectionChange(e, new Set(selectedItems));
15
+ };
16
+ const toggleItem = (e, itemId, selectedItems)=>{
17
+ if (selectedItems.has(itemId)) {
18
+ selectedItems.delete(itemId);
19
+ } else {
20
+ selectedItems.add(itemId);
21
+ }
22
+ onSelectionChange(e, new Set(selectedItems));
23
+ };
24
+ const selectItem = (e, itemId, selectedItems)=>{
25
+ selectedItems.add(itemId);
26
+ onSelectionChange(e, new Set(selectedItems));
27
+ };
28
+ const deselectItem = (e, itemId, selectedItems)=>{
29
+ selectedItems.delete(itemId);
30
+ onSelectionChange(e, new Set(selectedItems));
31
+ };
32
+ const clearItems = (e)=>{
33
+ onSelectionChange(e, new Set());
34
+ };
35
+ const isSelected = (itemId, selectedItems)=>{
36
+ return selectedItems.has(itemId);
37
+ };
38
+ return {
39
+ toggleItem,
40
+ selectItem,
41
+ deselectItem,
42
+ clearItems,
43
+ isSelected,
44
+ toggleAllItems
45
+ };
46
46
  }
47
47
  function createSingleSelectionManager(onSelectionChange) {
48
- const toggleItem = (e, itemId) => {
49
- onSelectionChange(e, new Set([itemId]));
50
- };
51
- const clearItems = e => {
52
- onSelectionChange(e, new Set());
53
- };
54
- const isSelected = (itemId, selectedItems) => {
55
- return selectedItems.has(itemId);
56
- };
57
- const selectItem = (e, itemId) => {
58
- onSelectionChange(e, new Set([itemId]));
59
- };
60
- return {
61
- deselectItem: clearItems,
62
- selectItem,
63
- toggleAllItems: () => {
64
- if (process.env.NODE_ENV !== 'production') {
65
- throw new Error('[react-table]: `toggleAllItems` should not be used in single selection mode');
66
- }
67
- return undefined;
68
- },
69
- toggleItem,
70
- clearItems,
71
- isSelected
72
- };
48
+ const toggleItem = (e, itemId)=>{
49
+ onSelectionChange(e, new Set([
50
+ itemId
51
+ ]));
52
+ };
53
+ const clearItems = (e)=>{
54
+ onSelectionChange(e, new Set());
55
+ };
56
+ const isSelected = (itemId, selectedItems)=>{
57
+ return selectedItems.has(itemId);
58
+ };
59
+ const selectItem = (e, itemId)=>{
60
+ onSelectionChange(e, new Set([
61
+ itemId
62
+ ]));
63
+ };
64
+ return {
65
+ deselectItem: clearItems,
66
+ selectItem,
67
+ toggleAllItems: ()=>{
68
+ if (process.env.NODE_ENV !== 'production') {
69
+ throw new Error('[react-table]: `toggleAllItems` should not be used in single selection mode');
70
+ }
71
+ return undefined;
72
+ },
73
+ toggleItem,
74
+ clearItems,
75
+ isSelected
76
+ };
73
77
  }
74
- //# sourceMappingURL=selectionManager.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","createSelectionManager","mode","onSelectionChange","undefined","managerFactory","createMultipleSelectionManager","createSingleSelectionManager","toggleAllItems","e","itemIds","selectedItems","allItemsSelected","every","itemId","has","clear","forEach","add","Set","toggleItem","delete","selectItem","deselectItem","clearItems","isSelected","process","env","NODE_ENV","Error"],"sources":["../../src/hooks/selectionManager.ts"],"sourcesContent":["import * as React from 'react';\nimport { SelectionMode } from './types';\n\ntype OnSelectionChangeCallback = (e: React.SyntheticEvent, selectedItems: Set<SelectionItemId>) => void;\n\nexport interface SelectionManager {\n toggleItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n selectItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n deselectItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n clearItems(e: React.SyntheticEvent): void;\n isSelected(id: SelectionItemId, selectedItems: Set<SelectionItemId>): boolean;\n toggleAllItems(e: React.SyntheticEvent, itemIds: SelectionItemId[], selectedItems: Set<SelectionItemId>): void;\n}\n\nexport type SelectionItemId = string | number;\n\nexport function createSelectionManager(\n mode: SelectionMode,\n onSelectionChange: OnSelectionChangeCallback = () => undefined,\n): SelectionManager {\n const managerFactory = mode === 'multiselect' ? createMultipleSelectionManager : createSingleSelectionManager;\n\n return managerFactory(onSelectionChange);\n}\n\nfunction createMultipleSelectionManager(onSelectionChange: OnSelectionChangeCallback): SelectionManager {\n const toggleAllItems: SelectionManager['toggleAllItems'] = (e, itemIds, selectedItems) => {\n const allItemsSelected = itemIds.every(itemId => selectedItems.has(itemId));\n\n if (allItemsSelected) {\n selectedItems.clear();\n } else {\n itemIds.forEach(itemId => selectedItems.add(itemId));\n }\n\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const toggleItem: SelectionManager['toggleItem'] = (e, itemId, selectedItems) => {\n if (selectedItems.has(itemId)) {\n selectedItems.delete(itemId);\n } else {\n selectedItems.add(itemId);\n }\n\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const selectItem: SelectionManager['selectItem'] = (e, itemId, selectedItems) => {\n selectedItems.add(itemId);\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const deselectItem: SelectionManager['deselectItem'] = (e, itemId, selectedItems) => {\n selectedItems.delete(itemId);\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const clearItems: SelectionManager['clearItems'] = e => {\n onSelectionChange(e, new Set());\n };\n\n const isSelected = (itemId: SelectionItemId, selectedItems: Set<SelectionItemId>) => {\n return selectedItems.has(itemId);\n };\n\n return {\n toggleItem,\n selectItem,\n deselectItem,\n clearItems,\n isSelected,\n toggleAllItems,\n };\n}\n\nfunction createSingleSelectionManager(onSelectionChange: OnSelectionChangeCallback): SelectionManager {\n const toggleItem: SelectionManager['toggleItem'] = (e, itemId) => {\n onSelectionChange(e, new Set([itemId]));\n };\n\n const clearItems: SelectionManager['clearItems'] = e => {\n onSelectionChange(e, new Set<SelectionItemId>());\n };\n\n const isSelected = (itemId: SelectionItemId, selectedItems: Set<SelectionItemId>) => {\n return selectedItems.has(itemId);\n };\n\n const selectItem: SelectionManager['selectItem'] = (e, itemId) => {\n onSelectionChange(e, new Set([itemId]));\n };\n\n return {\n deselectItem: clearItems,\n selectItem,\n toggleAllItems: () => {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('[react-table]: `toggleAllItems` should not be used in single selection mode');\n }\n\n return undefined;\n },\n toggleItem,\n clearItems,\n isSelected,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["selectionManager.ts"],"sourcesContent":["import * as React from 'react';\nimport { SelectionMode } from './types';\n\ntype OnSelectionChangeCallback = (e: React.SyntheticEvent, selectedItems: Set<SelectionItemId>) => void;\n\nexport interface SelectionManager {\n toggleItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n selectItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n deselectItem(e: React.SyntheticEvent, id: SelectionItemId, selectedItems: Set<SelectionItemId>): void;\n clearItems(e: React.SyntheticEvent): void;\n isSelected(id: SelectionItemId, selectedItems: Set<SelectionItemId>): boolean;\n toggleAllItems(e: React.SyntheticEvent, itemIds: SelectionItemId[], selectedItems: Set<SelectionItemId>): void;\n}\n\nexport type SelectionItemId = string | number;\n\nexport function createSelectionManager(\n mode: SelectionMode,\n onSelectionChange: OnSelectionChangeCallback = () => undefined,\n): SelectionManager {\n const managerFactory = mode === 'multiselect' ? createMultipleSelectionManager : createSingleSelectionManager;\n\n return managerFactory(onSelectionChange);\n}\n\nfunction createMultipleSelectionManager(onSelectionChange: OnSelectionChangeCallback): SelectionManager {\n const toggleAllItems: SelectionManager['toggleAllItems'] = (e, itemIds, selectedItems) => {\n const allItemsSelected = itemIds.every(itemId => selectedItems.has(itemId));\n\n if (allItemsSelected) {\n selectedItems.clear();\n } else {\n itemIds.forEach(itemId => selectedItems.add(itemId));\n }\n\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const toggleItem: SelectionManager['toggleItem'] = (e, itemId, selectedItems) => {\n if (selectedItems.has(itemId)) {\n selectedItems.delete(itemId);\n } else {\n selectedItems.add(itemId);\n }\n\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const selectItem: SelectionManager['selectItem'] = (e, itemId, selectedItems) => {\n selectedItems.add(itemId);\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const deselectItem: SelectionManager['deselectItem'] = (e, itemId, selectedItems) => {\n selectedItems.delete(itemId);\n onSelectionChange(e, new Set(selectedItems));\n };\n\n const clearItems: SelectionManager['clearItems'] = e => {\n onSelectionChange(e, new Set());\n };\n\n const isSelected = (itemId: SelectionItemId, selectedItems: Set<SelectionItemId>) => {\n return selectedItems.has(itemId);\n };\n\n return {\n toggleItem,\n selectItem,\n deselectItem,\n clearItems,\n isSelected,\n toggleAllItems,\n };\n}\n\nfunction createSingleSelectionManager(onSelectionChange: OnSelectionChangeCallback): SelectionManager {\n const toggleItem: SelectionManager['toggleItem'] = (e, itemId) => {\n onSelectionChange(e, new Set([itemId]));\n };\n\n const clearItems: SelectionManager['clearItems'] = e => {\n onSelectionChange(e, new Set<SelectionItemId>());\n };\n\n const isSelected = (itemId: SelectionItemId, selectedItems: Set<SelectionItemId>) => {\n return selectedItems.has(itemId);\n };\n\n const selectItem: SelectionManager['selectItem'] = (e, itemId) => {\n onSelectionChange(e, new Set([itemId]));\n };\n\n return {\n deselectItem: clearItems,\n selectItem,\n toggleAllItems: () => {\n if (process.env.NODE_ENV !== 'production') {\n throw new Error('[react-table]: `toggleAllItems` should not be used in single selection mode');\n }\n\n return undefined;\n },\n toggleItem,\n clearItems,\n isSelected,\n };\n}\n"],"names":["React","createSelectionManager","mode","onSelectionChange","undefined","managerFactory","createMultipleSelectionManager","createSingleSelectionManager","toggleAllItems","e","itemIds","selectedItems","allItemsSelected","every","itemId","has","clear","forEach","add","Set","toggleItem","delete","selectItem","deselectItem","clearItems","isSelected","process","env","NODE_ENV","Error"],"mappings":"AAAA,YAAYA,WAAW,QAAQ;AAgB/B,OAAO,SAASC,uBACdC,IAAmB,EACnBC,oBAA+C,IAAMC,SAAS,EAC5C;IAClB,MAAMC,iBAAiBH,SAAS,gBAAgBI,iCAAiCC,4BAA4B;IAE7G,OAAOF,eAAeF;AACxB,CAAC;AAED,SAASG,+BAA+BH,iBAA4C,EAAoB;IACtG,MAAMK,iBAAqD,CAACC,GAAGC,SAASC,gBAAkB;QACxF,MAAMC,mBAAmBF,QAAQG,KAAK,CAACC,CAAAA,SAAUH,cAAcI,GAAG,CAACD;QAEnE,IAAIF,kBAAkB;YACpBD,cAAcK,KAAK;QACrB,OAAO;YACLN,QAAQO,OAAO,CAACH,CAAAA,SAAUH,cAAcO,GAAG,CAACJ;QAC9C,CAAC;QAEDX,kBAAkBM,GAAG,IAAIU,IAAIR;IAC/B;IAEA,MAAMS,aAA6C,CAACX,GAAGK,QAAQH,gBAAkB;QAC/E,IAAIA,cAAcI,GAAG,CAACD,SAAS;YAC7BH,cAAcU,MAAM,CAACP;QACvB,OAAO;YACLH,cAAcO,GAAG,CAACJ;QACpB,CAAC;QAEDX,kBAAkBM,GAAG,IAAIU,IAAIR;IAC/B;IAEA,MAAMW,aAA6C,CAACb,GAAGK,QAAQH,gBAAkB;QAC/EA,cAAcO,GAAG,CAACJ;QAClBX,kBAAkBM,GAAG,IAAIU,IAAIR;IAC/B;IAEA,MAAMY,eAAiD,CAACd,GAAGK,QAAQH,gBAAkB;QACnFA,cAAcU,MAAM,CAACP;QACrBX,kBAAkBM,GAAG,IAAIU,IAAIR;IAC/B;IAEA,MAAMa,aAA6Cf,CAAAA,IAAK;QACtDN,kBAAkBM,GAAG,IAAIU;IAC3B;IAEA,MAAMM,aAAa,CAACX,QAAyBH,gBAAwC;QACnF,OAAOA,cAAcI,GAAG,CAACD;IAC3B;IAEA,OAAO;QACLM;QACAE;QACAC;QACAC;QACAC;QACAjB;IACF;AACF;AAEA,SAASD,6BAA6BJ,iBAA4C,EAAoB;IACpG,MAAMiB,aAA6C,CAACX,GAAGK,SAAW;QAChEX,kBAAkBM,GAAG,IAAIU,IAAI;YAACL;SAAO;IACvC;IAEA,MAAMU,aAA6Cf,CAAAA,IAAK;QACtDN,kBAAkBM,GAAG,IAAIU;IAC3B;IAEA,MAAMM,aAAa,CAACX,QAAyBH,gBAAwC;QACnF,OAAOA,cAAcI,GAAG,CAACD;IAC3B;IAEA,MAAMQ,aAA6C,CAACb,GAAGK,SAAW;QAChEX,kBAAkBM,GAAG,IAAIU,IAAI;YAACL;SAAO;IACvC;IAEA,OAAO;QACLS,cAAcC;QACdF;QACAd,gBAAgB,IAAM;YACpB,IAAIkB,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;gBACzC,MAAM,IAAIC,MAAM,+EAA+E;YACjG,CAAC;YAED,OAAOzB;QACT;QACAgB;QACAI;QACAC;IACF;AACF"}
@@ -1,2 +1 @@
1
1
  import * as React from 'react';
2
- //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React"],"sources":["../../src/hooks/types.ts"],"sourcesContent":["import * as React from 'react';\nimport { SortDirection } from '../components/Table/Table.types';\nimport { TableHeaderCellProps } from '../components/TableHeaderCell/TableHeaderCell.types';\n\nexport type TableRowId = string | number;\nexport type TableColumnId = string | number;\nexport type SelectionMode = 'single' | 'multiselect';\n\nexport interface SortState {\n sortColumn: TableColumnId | undefined;\n sortDirection: SortDirection;\n}\n\nexport interface OnSelectionChangeData {\n selectedItems: Set<TableRowId>;\n}\n\nexport interface CreateTableColumnOptions<TItem> extends Partial<TableColumnDefinition<TItem>> {\n columnId: TableColumnId;\n}\n\nexport interface TableColumnDefinition<TItem> {\n columnId: TableColumnId;\n compare: (a: TItem, b: TItem) => number;\n renderHeaderCell: () => React.ReactNode;\n renderCell: (item: TItem) => React.ReactNode;\n}\n\nexport type RowEnhancer<TItem, TRowState extends TableRowData<TItem> = TableRowData<TItem>> = (\n row: TableRowData<TItem>,\n) => TRowState;\n\nexport interface TableSortState<TItem> {\n /**\n * Current sort direction\n */\n sortDirection: SortDirection;\n /**\n * Column id of the currently sorted column\n */\n sortColumn: TableColumnId | undefined;\n /**\n * Set the sort direction for the specified column\n */\n setColumnSort: (event: React.SyntheticEvent, columnId: TableColumnId, sortDirection: SortDirection) => void;\n /**\n * Toggles the sort direction for specified column\n */\n toggleColumnSort: (event: React.SyntheticEvent, columnId: TableColumnId) => void;\n /**\n * Returns the sort direction if a column is sorted,\n * returns undefined if the column is not sorted\n */\n getSortDirection: (columnId: TableColumnId) => SortDirection | undefined;\n\n /**\n * Sorts rows and returns a **shallow** copy of original items\n */\n sort: <TRowState extends TableRowData<TItem>>(rows: TRowState[]) => TRowState[];\n}\n\nexport interface TableSelectionState {\n /**\n * Clears all selected rows\n */\n clearRows: (e: React.SyntheticEvent) => void;\n /**\n * Selects single row\n */\n selectRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * De-selects single row\n */\n deselectRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * Toggle selection of all rows\n */\n toggleAllRows: (e: React.SyntheticEvent) => void;\n /**\n * Toggle selection of single row\n */\n toggleRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * Collection of row ids corresponding to selected rows\n */\n selectedRows: Set<TableRowId>;\n /**\n * Whether all rows are selected\n */\n allRowsSelected: boolean;\n /**\n * Whether some rows are selected\n */\n someRowsSelected: boolean;\n\n /**\n * Checks if a given rowId is selected\n */\n isRowSelected: (rowId: TableRowId) => boolean;\n\n selectionMode: SelectionMode;\n}\n\nexport interface TableRowData<TItem> {\n /**\n * User provided data\n */\n item: TItem;\n /**\n * The row id, defaults to index position in the collection\n */\n rowId: TableRowId;\n}\n\nexport interface TableFeaturesState<TItem> extends Pick<UseTableFeaturesOptions<TItem>, 'items' | 'getRowId'> {\n /**\n * The row data for rendering\n * @param rowEnhancer - Enhances the row with extra user data\n */\n getRows: <TRowState extends TableRowData<TItem> = TableRowData<TItem>>(\n rowEnhancer?: RowEnhancer<TItem, TRowState>,\n ) => TRowState[];\n /**\n * State and actions to manage row selection\n */\n selection: TableSelectionState;\n /**\n * State and actions to manage row sorting\n */\n sort: TableSortState<TItem>;\n /**\n * Table columns\n */\n columns: TableColumnDefinition<TItem>[];\n /**\n * State and actions to manage column resizing\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n columnSizing_unstable: TableColumnSizingState;\n /**\n * A React.Ref object to be set as a ref for the table.\n * Used with column resizing.\n */\n tableRef: React.Ref<HTMLDivElement>;\n}\n\nexport interface UseTableSortOptions {\n /**\n * Used to control sorting\n */\n sortState?: SortState;\n /**\n * Used in uncontrolled mode to set initial sort column and direction on mount\n */\n defaultSortState?: SortState;\n /**\n * Called when sort changes\n */\n onSortChange?(e: React.SyntheticEvent, state: SortState): void;\n}\n\nexport interface UseTableSelectionOptions {\n /**\n * Can be multi or single select\n */\n selectionMode: SelectionMode;\n /**\n * Used in uncontrolled mode to set initial selected rows on mount\n */\n defaultSelectedItems?: Iterable<TableRowId>;\n /**\n * Used to control row selection\n */\n selectedItems?: Iterable<TableRowId>;\n /**\n * Called when selection changes\n */\n onSelectionChange?(e: React.SyntheticEvent, data: OnSelectionChangeData): void;\n}\n\nexport interface UseTableFeaturesOptions<TItem> {\n columns: TableColumnDefinition<TItem>[];\n items: TItem[];\n getRowId?: (item: TItem) => TableRowId;\n}\n\nexport type TableFeaturePlugin = <TItem>(tableState: TableFeaturesState<TItem>) => TableFeaturesState<TItem>;\n\nexport interface ColumnWidthState {\n columnId: TableColumnId;\n width: number;\n minWidth: number;\n idealWidth: number;\n padding: number;\n}\n\nexport type ColumnSizingTableHeaderCellProps = Pick<TableHeaderCellProps, 'style' | 'aside'>;\nexport type ColumnSizingTableCellProps = Pick<TableHeaderCellProps, 'style'>;\n\nexport type EnableKeyboardModeOnChangeCallback = (columnId: TableColumnId, isKeyboardMode: boolean) => void;\n\nexport interface TableColumnSizingState {\n getOnMouseDown: (columnId: TableColumnId) => (e: React.MouseEvent | React.TouchEvent) => void;\n setColumnWidth: (columnId: TableColumnId, newSize: number) => void;\n getColumnWidths: () => ColumnWidthState[];\n getTableHeaderCellProps: (columnId: TableColumnId) => ColumnSizingTableHeaderCellProps;\n getTableCellProps: (columnId: TableColumnId) => ColumnSizingTableCellProps;\n enableKeyboardMode: (\n columnId: TableColumnId,\n onChange?: EnableKeyboardModeOnChangeCallback,\n ) => (e: React.MouseEvent | React.TouchEvent) => void;\n}\n\nexport type ColumnResizeState = {\n getColumnWidth: (columnId: TableColumnId) => number;\n setColumnWidth: (\n e: KeyboardEvent | TouchEvent | MouseEvent | undefined,\n data: { columnId: TableColumnId; width: number },\n ) => void;\n getColumnById: (columnId: TableColumnId) => ColumnWidthState | undefined;\n getColumns: () => ColumnWidthState[];\n};\n\nexport type TableColumnSizingOptions = Record<\n TableColumnId,\n Partial<Pick<ColumnWidthState, 'minWidth' | 'idealWidth' | 'padding'>> & { defaultWidth?: number }\n>;\n\nexport type UseTableColumnSizingParams = {\n columnSizingOptions?: TableColumnSizingOptions;\n onColumnResize?: (\n e: KeyboardEvent | TouchEvent | MouseEvent | undefined,\n data: { columnId: TableColumnId; width: number },\n ) => void;\n containerWidthOffset?: number;\n};\n"],"mappings":"AAAA,YAAYA,KAAA,MAAW"}
1
+ {"version":3,"sources":["types.ts"],"sourcesContent":["import * as React from 'react';\nimport { SortDirection } from '../components/Table/Table.types';\nimport { TableHeaderCellProps } from '../components/TableHeaderCell/TableHeaderCell.types';\n\nexport type TableRowId = string | number;\nexport type TableColumnId = string | number;\nexport type SelectionMode = 'single' | 'multiselect';\n\nexport interface SortState {\n sortColumn: TableColumnId | undefined;\n sortDirection: SortDirection;\n}\n\nexport interface OnSelectionChangeData {\n selectedItems: Set<TableRowId>;\n}\n\nexport interface CreateTableColumnOptions<TItem> extends Partial<TableColumnDefinition<TItem>> {\n columnId: TableColumnId;\n}\n\nexport interface TableColumnDefinition<TItem> {\n columnId: TableColumnId;\n compare: (a: TItem, b: TItem) => number;\n renderHeaderCell: () => React.ReactNode;\n renderCell: (item: TItem) => React.ReactNode;\n}\n\nexport type RowEnhancer<TItem, TRowState extends TableRowData<TItem> = TableRowData<TItem>> = (\n row: TableRowData<TItem>,\n) => TRowState;\n\nexport interface TableSortState<TItem> {\n /**\n * Current sort direction\n */\n sortDirection: SortDirection;\n /**\n * Column id of the currently sorted column\n */\n sortColumn: TableColumnId | undefined;\n /**\n * Set the sort direction for the specified column\n */\n setColumnSort: (event: React.SyntheticEvent, columnId: TableColumnId, sortDirection: SortDirection) => void;\n /**\n * Toggles the sort direction for specified column\n */\n toggleColumnSort: (event: React.SyntheticEvent, columnId: TableColumnId) => void;\n /**\n * Returns the sort direction if a column is sorted,\n * returns undefined if the column is not sorted\n */\n getSortDirection: (columnId: TableColumnId) => SortDirection | undefined;\n\n /**\n * Sorts rows and returns a **shallow** copy of original items\n */\n sort: <TRowState extends TableRowData<TItem>>(rows: TRowState[]) => TRowState[];\n}\n\nexport interface TableSelectionState {\n /**\n * Clears all selected rows\n */\n clearRows: (e: React.SyntheticEvent) => void;\n /**\n * Selects single row\n */\n selectRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * De-selects single row\n */\n deselectRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * Toggle selection of all rows\n */\n toggleAllRows: (e: React.SyntheticEvent) => void;\n /**\n * Toggle selection of single row\n */\n toggleRow: (e: React.SyntheticEvent, rowId: TableRowId) => void;\n /**\n * Collection of row ids corresponding to selected rows\n */\n selectedRows: Set<TableRowId>;\n /**\n * Whether all rows are selected\n */\n allRowsSelected: boolean;\n /**\n * Whether some rows are selected\n */\n someRowsSelected: boolean;\n\n /**\n * Checks if a given rowId is selected\n */\n isRowSelected: (rowId: TableRowId) => boolean;\n\n selectionMode: SelectionMode;\n}\n\nexport interface TableRowData<TItem> {\n /**\n * User provided data\n */\n item: TItem;\n /**\n * The row id, defaults to index position in the collection\n */\n rowId: TableRowId;\n}\n\nexport interface TableFeaturesState<TItem> extends Pick<UseTableFeaturesOptions<TItem>, 'items' | 'getRowId'> {\n /**\n * The row data for rendering\n * @param rowEnhancer - Enhances the row with extra user data\n */\n getRows: <TRowState extends TableRowData<TItem> = TableRowData<TItem>>(\n rowEnhancer?: RowEnhancer<TItem, TRowState>,\n ) => TRowState[];\n /**\n * State and actions to manage row selection\n */\n selection: TableSelectionState;\n /**\n * State and actions to manage row sorting\n */\n sort: TableSortState<TItem>;\n /**\n * Table columns\n */\n columns: TableColumnDefinition<TItem>[];\n /**\n * State and actions to manage column resizing\n */\n // eslint-disable-next-line @typescript-eslint/naming-convention\n columnSizing_unstable: TableColumnSizingState;\n /**\n * A React.Ref object to be set as a ref for the table.\n * Used with column resizing.\n */\n tableRef: React.Ref<HTMLDivElement>;\n}\n\nexport interface UseTableSortOptions {\n /**\n * Used to control sorting\n */\n sortState?: SortState;\n /**\n * Used in uncontrolled mode to set initial sort column and direction on mount\n */\n defaultSortState?: SortState;\n /**\n * Called when sort changes\n */\n onSortChange?(e: React.SyntheticEvent, state: SortState): void;\n}\n\nexport interface UseTableSelectionOptions {\n /**\n * Can be multi or single select\n */\n selectionMode: SelectionMode;\n /**\n * Used in uncontrolled mode to set initial selected rows on mount\n */\n defaultSelectedItems?: Iterable<TableRowId>;\n /**\n * Used to control row selection\n */\n selectedItems?: Iterable<TableRowId>;\n /**\n * Called when selection changes\n */\n onSelectionChange?(e: React.SyntheticEvent, data: OnSelectionChangeData): void;\n}\n\nexport interface UseTableFeaturesOptions<TItem> {\n columns: TableColumnDefinition<TItem>[];\n items: TItem[];\n getRowId?: (item: TItem) => TableRowId;\n}\n\nexport type TableFeaturePlugin = <TItem>(tableState: TableFeaturesState<TItem>) => TableFeaturesState<TItem>;\n\nexport interface ColumnWidthState {\n columnId: TableColumnId;\n width: number;\n minWidth: number;\n idealWidth: number;\n padding: number;\n}\n\nexport type ColumnSizingTableHeaderCellProps = Pick<TableHeaderCellProps, 'style' | 'aside'>;\nexport type ColumnSizingTableCellProps = Pick<TableHeaderCellProps, 'style'>;\n\nexport type EnableKeyboardModeOnChangeCallback = (columnId: TableColumnId, isKeyboardMode: boolean) => void;\n\nexport interface TableColumnSizingState {\n getOnMouseDown: (columnId: TableColumnId) => (e: React.MouseEvent | React.TouchEvent) => void;\n setColumnWidth: (columnId: TableColumnId, newSize: number) => void;\n getColumnWidths: () => ColumnWidthState[];\n getTableHeaderCellProps: (columnId: TableColumnId) => ColumnSizingTableHeaderCellProps;\n getTableCellProps: (columnId: TableColumnId) => ColumnSizingTableCellProps;\n enableKeyboardMode: (\n columnId: TableColumnId,\n onChange?: EnableKeyboardModeOnChangeCallback,\n ) => (e: React.MouseEvent | React.TouchEvent) => void;\n}\n\nexport type ColumnResizeState = {\n getColumnWidth: (columnId: TableColumnId) => number;\n setColumnWidth: (\n e: KeyboardEvent | TouchEvent | MouseEvent | undefined,\n data: { columnId: TableColumnId; width: number },\n ) => void;\n getColumnById: (columnId: TableColumnId) => ColumnWidthState | undefined;\n getColumns: () => ColumnWidthState[];\n};\n\nexport type TableColumnSizingOptions = Record<\n TableColumnId,\n Partial<Pick<ColumnWidthState, 'minWidth' | 'idealWidth' | 'padding'>> & { defaultWidth?: number }\n>;\n\nexport type UseTableColumnSizingParams = {\n columnSizingOptions?: TableColumnSizingOptions;\n onColumnResize?: (\n e: KeyboardEvent | TouchEvent | MouseEvent | undefined,\n data: { columnId: TableColumnId; width: number },\n ) => void;\n containerWidthOffset?: number;\n};\n"],"names":["React"],"mappings":"AAAA,YAAYA,WAAW,QAAQ"}
@@ -6,93 +6,102 @@ const STEP = 20;
6
6
  const PRECISION_MODIFIER = Shift;
7
7
  const PRECISION_FACTOR = 1 / 4;
8
8
  export function useKeyboardResizing(columnResizeState) {
9
- const columnId = React.useRef();
10
- const onChangeRef = React.useRef();
11
- const addListenerTimeout = React.useRef();
12
- const columnResizeStateRef = React.useRef(columnResizeState);
13
- React.useEffect(() => {
14
- columnResizeStateRef.current = columnResizeState;
15
- }, [columnResizeState]);
16
- const {
17
- targetDocument
18
- } = useFluent();
19
- const keyboardHandler = useEventCallback(event => {
20
- const colId = columnId.current;
21
- if (!colId) {
22
- return;
23
- }
24
- const width = columnResizeStateRef.current.getColumnWidth(colId);
25
- const precisionModifier = event.getModifierState(PRECISION_MODIFIER);
26
- const stopEvent = () => {
27
- event.preventDefault();
28
- event.stopPropagation();
9
+ const [columnId, setColumnId] = React.useState();
10
+ const onChangeRef = React.useRef();
11
+ const addListenerTimeout = React.useRef();
12
+ const columnResizeStateRef = React.useRef(columnResizeState);
13
+ React.useEffect(()=>{
14
+ columnResizeStateRef.current = columnResizeState;
15
+ }, [
16
+ columnResizeState
17
+ ]);
18
+ const { targetDocument } = useFluent();
19
+ const keyboardHandler = useEventCallback((event)=>{
20
+ if (!columnId) {
21
+ return;
22
+ }
23
+ const width = columnResizeStateRef.current.getColumnWidth(columnId);
24
+ const precisionModifier = event.getModifierState(PRECISION_MODIFIER);
25
+ const stopEvent = ()=>{
26
+ event.preventDefault();
27
+ event.stopPropagation();
28
+ };
29
+ switch(event.key){
30
+ case ArrowLeft:
31
+ stopEvent();
32
+ columnResizeStateRef.current.setColumnWidth(event, {
33
+ columnId,
34
+ width: width - (precisionModifier ? STEP * PRECISION_FACTOR : STEP)
35
+ });
36
+ return;
37
+ case ArrowRight:
38
+ stopEvent();
39
+ columnResizeStateRef.current.setColumnWidth(event, {
40
+ columnId,
41
+ width: width + (precisionModifier ? STEP * PRECISION_FACTOR : STEP)
42
+ });
43
+ return;
44
+ case Space:
45
+ case Enter:
46
+ case Escape:
47
+ stopEvent();
48
+ disableInteractiveMode();
49
+ break;
50
+ }
51
+ });
52
+ // On component unmout, cancel any timer for adding a listener (if it exists) and remove the listener
53
+ React.useEffect(()=>{
54
+ return ()=>{
55
+ var _targetDocument_defaultView, _targetDocument_defaultView1;
56
+ targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.clearTimeout(addListenerTimeout.current);
57
+ targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView1 = targetDocument.defaultView) === null || _targetDocument_defaultView1 === void 0 ? void 0 : _targetDocument_defaultView1.removeEventListener('keydown', keyboardHandler);
58
+ };
59
+ }, [
60
+ keyboardHandler,
61
+ targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView
62
+ ]);
63
+ const enableInteractiveMode = React.useCallback((colId)=>{
64
+ var _onChangeRef_current, _targetDocument_defaultView;
65
+ setColumnId(colId);
66
+ (_onChangeRef_current = onChangeRef.current) === null || _onChangeRef_current === void 0 ? void 0 : _onChangeRef_current.call(onChangeRef, colId, true);
67
+ // Create the listener in the next tick, because the event that triggered this is still propagating
68
+ // when Enter was pressed and would be caught in the keyboardHandler, disabling the keyboard mode immediately.
69
+ // No idea why this is happening, but this is a working workaround.
70
+ // Tracked here: https://github.com/microsoft/fluentui/issues/27177
71
+ addListenerTimeout.current = targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.setTimeout(()=>{
72
+ var _targetDocument_defaultView;
73
+ targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.addEventListener('keydown', keyboardHandler);
74
+ }, 0);
75
+ }, [
76
+ keyboardHandler,
77
+ targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView
78
+ ]);
79
+ const disableInteractiveMode = React.useCallback(()=>{
80
+ var _targetDocument_defaultView;
81
+ if (columnId) {
82
+ var _onChangeRef_current;
83
+ (_onChangeRef_current = onChangeRef.current) === null || _onChangeRef_current === void 0 ? void 0 : _onChangeRef_current.call(onChangeRef, columnId, false);
84
+ }
85
+ setColumnId(undefined);
86
+ targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.removeEventListener('keydown', keyboardHandler);
87
+ }, [
88
+ columnId,
89
+ keyboardHandler,
90
+ targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView
91
+ ]);
92
+ const toggleInteractiveMode = (colId, onChange)=>{
93
+ onChangeRef.current = onChange;
94
+ if (!columnId) {
95
+ enableInteractiveMode(colId);
96
+ } else if (colId && columnId !== colId) {
97
+ setColumnId(colId);
98
+ onChange === null || onChange === void 0 ? void 0 : onChange(columnId, true);
99
+ } else {
100
+ disableInteractiveMode();
101
+ }
29
102
  };
30
- switch (event.key) {
31
- case ArrowLeft:
32
- stopEvent();
33
- columnResizeStateRef.current.setColumnWidth(event, {
34
- columnId: colId,
35
- width: width - (precisionModifier ? STEP * PRECISION_FACTOR : STEP)
36
- });
37
- return;
38
- case ArrowRight:
39
- stopEvent();
40
- columnResizeStateRef.current.setColumnWidth(event, {
41
- columnId: colId,
42
- width: width + (precisionModifier ? STEP * PRECISION_FACTOR : STEP)
43
- });
44
- return;
45
- case Space:
46
- case Enter:
47
- case Escape:
48
- stopEvent();
49
- disableInteractiveMode();
50
- break;
51
- }
52
- });
53
- // On component unmout, cancel any timer for adding a listener (if it exists) and remove the listener
54
- React.useEffect(() => {
55
- return () => {
56
- var _targetDocument_defaultView, _targetDocument_defaultView1;
57
- targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.clearTimeout(addListenerTimeout.current);
58
- targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView1 = targetDocument.defaultView) === null || _targetDocument_defaultView1 === void 0 ? void 0 : _targetDocument_defaultView1.removeEventListener('keydown', keyboardHandler);
103
+ return {
104
+ toggleInteractiveMode,
105
+ columnId
59
106
  };
60
- }, [keyboardHandler, targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView]);
61
- const enableInteractiveMode = React.useCallback(colId => {
62
- var _onChangeRef_current, _targetDocument_defaultView;
63
- columnId.current = colId;
64
- (_onChangeRef_current = onChangeRef.current) === null || _onChangeRef_current === void 0 ? void 0 : _onChangeRef_current.call(onChangeRef, colId, true);
65
- // Create the listener in the next tick, because the event that triggered this is still propagating
66
- // when Enter was pressed and would be caught in the keyboardHandler, disabling the keyboard mode immediately.
67
- // No idea why this is happening, but this is a working workaround.
68
- // Tracked here: https://github.com/microsoft/fluentui/issues/27177
69
- addListenerTimeout.current = targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.setTimeout(() => {
70
- var _targetDocument_defaultView;
71
- targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.addEventListener('keydown', keyboardHandler);
72
- }, 0);
73
- }, [keyboardHandler, targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView]);
74
- const disableInteractiveMode = React.useCallback(() => {
75
- var _targetDocument_defaultView;
76
- if (columnId.current) {
77
- var _onChangeRef_current;
78
- (_onChangeRef_current = onChangeRef.current) === null || _onChangeRef_current === void 0 ? void 0 : _onChangeRef_current.call(onChangeRef, columnId.current, false);
79
- }
80
- columnId.current = undefined;
81
- targetDocument === null || targetDocument === void 0 ? void 0 : (_targetDocument_defaultView = targetDocument.defaultView) === null || _targetDocument_defaultView === void 0 ? void 0 : _targetDocument_defaultView.removeEventListener('keydown', keyboardHandler);
82
- }, [keyboardHandler, targetDocument === null || targetDocument === void 0 ? void 0 : targetDocument.defaultView]);
83
- const toggleInteractiveMode = (colId, onChange) => {
84
- onChangeRef.current = onChange;
85
- if (!columnId.current) {
86
- enableInteractiveMode(colId);
87
- } else if (colId && columnId.current !== colId) {
88
- columnId.current = colId;
89
- onChange === null || onChange === void 0 ? void 0 : onChange(columnId.current, true);
90
- } else {
91
- disableInteractiveMode();
92
- }
93
- };
94
- return {
95
- toggleInteractiveMode
96
- };
97
107
  }
98
- //# sourceMappingURL=useKeyboardResizing.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","ArrowLeft","ArrowRight","Enter","Escape","Shift","Space","useEventCallback","useFluent_unstable","useFluent","STEP","PRECISION_MODIFIER","PRECISION_FACTOR","useKeyboardResizing","columnResizeState","columnId","useRef","onChangeRef","addListenerTimeout","columnResizeStateRef","useEffect","current","targetDocument","keyboardHandler","event","colId","width","getColumnWidth","precisionModifier","getModifierState","stopEvent","preventDefault","stopPropagation","key","setColumnWidth","disableInteractiveMode","_targetDocument_defaultView","_targetDocument_defaultView1","defaultView","clearTimeout","removeEventListener","enableInteractiveMode","useCallback","_onChangeRef_current","call","setTimeout","addEventListener","undefined","toggleInteractiveMode","onChange"],"sources":["../../src/hooks/useKeyboardResizing.ts"],"sourcesContent":["import * as React from 'react';\nimport { ArrowLeft, ArrowRight, Enter, Escape, Shift, Space } from '@fluentui/keyboard-keys';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { ColumnResizeState, EnableKeyboardModeOnChangeCallback, TableColumnId } from './types';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n\nconst STEP = 20;\nconst PRECISION_MODIFIER = Shift;\nconst PRECISION_FACTOR = 1 / 4;\n\nexport function useKeyboardResizing(columnResizeState: ColumnResizeState) {\n const columnId = React.useRef<TableColumnId>();\n const onChangeRef = React.useRef<EnableKeyboardModeOnChangeCallback>();\n const addListenerTimeout = React.useRef<number>();\n\n const columnResizeStateRef = React.useRef<ColumnResizeState>(columnResizeState);\n React.useEffect(() => {\n columnResizeStateRef.current = columnResizeState;\n }, [columnResizeState]);\n\n const { targetDocument } = useFluent();\n\n const keyboardHandler = useEventCallback((event: KeyboardEvent) => {\n const colId = columnId.current;\n\n if (!colId) {\n return;\n }\n\n const width = columnResizeStateRef.current.getColumnWidth(colId);\n const precisionModifier = event.getModifierState(PRECISION_MODIFIER);\n\n const stopEvent = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n switch (event.key) {\n case ArrowLeft:\n stopEvent();\n columnResizeStateRef.current.setColumnWidth(event, {\n columnId: colId,\n width: width - (precisionModifier ? STEP * PRECISION_FACTOR : STEP),\n });\n return;\n\n case ArrowRight:\n stopEvent();\n columnResizeStateRef.current.setColumnWidth(event, {\n columnId: colId,\n width: width + (precisionModifier ? STEP * PRECISION_FACTOR : STEP),\n });\n return;\n\n case Space:\n case Enter:\n case Escape:\n stopEvent();\n disableInteractiveMode();\n break;\n }\n });\n\n // On component unmout, cancel any timer for adding a listener (if it exists) and remove the listener\n React.useEffect(\n () => () => {\n targetDocument?.defaultView?.clearTimeout(addListenerTimeout.current);\n targetDocument?.defaultView?.removeEventListener('keydown', keyboardHandler);\n },\n [keyboardHandler, targetDocument?.defaultView],\n );\n\n const enableInteractiveMode = React.useCallback(\n (colId: TableColumnId) => {\n columnId.current = colId;\n onChangeRef.current?.(colId, true);\n // Create the listener in the next tick, because the event that triggered this is still propagating\n // when Enter was pressed and would be caught in the keyboardHandler, disabling the keyboard mode immediately.\n // No idea why this is happening, but this is a working workaround.\n // Tracked here: https://github.com/microsoft/fluentui/issues/27177\n addListenerTimeout.current = targetDocument?.defaultView?.setTimeout(() => {\n targetDocument?.defaultView?.addEventListener('keydown', keyboardHandler);\n }, 0);\n },\n [keyboardHandler, targetDocument?.defaultView],\n );\n\n const disableInteractiveMode = React.useCallback(() => {\n if (columnId.current) {\n onChangeRef.current?.(columnId.current, false);\n }\n columnId.current = undefined;\n targetDocument?.defaultView?.removeEventListener('keydown', keyboardHandler);\n }, [keyboardHandler, targetDocument?.defaultView]);\n\n const toggleInteractiveMode = (colId: TableColumnId, onChange?: EnableKeyboardModeOnChangeCallback) => {\n onChangeRef.current = onChange;\n if (!columnId.current) {\n enableInteractiveMode(colId);\n } else if (colId && columnId.current !== colId) {\n columnId.current = colId;\n onChange?.(columnId.current, true);\n } else {\n disableInteractiveMode();\n }\n };\n\n return {\n toggleInteractiveMode,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"sources":["useKeyboardResizing.ts"],"sourcesContent":["import * as React from 'react';\nimport { ArrowLeft, ArrowRight, Enter, Escape, Shift, Space } from '@fluentui/keyboard-keys';\nimport { useEventCallback } from '@fluentui/react-utilities';\nimport { ColumnResizeState, EnableKeyboardModeOnChangeCallback, TableColumnId } from './types';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n\nconst STEP = 20;\nconst PRECISION_MODIFIER = Shift;\nconst PRECISION_FACTOR = 1 / 4;\n\nexport function useKeyboardResizing(columnResizeState: ColumnResizeState) {\n const [columnId, setColumnId] = React.useState<TableColumnId>();\n const onChangeRef = React.useRef<EnableKeyboardModeOnChangeCallback>();\n const addListenerTimeout = React.useRef<number>();\n\n const columnResizeStateRef = React.useRef<ColumnResizeState>(columnResizeState);\n React.useEffect(() => {\n columnResizeStateRef.current = columnResizeState;\n }, [columnResizeState]);\n\n const { targetDocument } = useFluent();\n\n const keyboardHandler = useEventCallback((event: KeyboardEvent) => {\n if (!columnId) {\n return;\n }\n\n const width = columnResizeStateRef.current.getColumnWidth(columnId);\n const precisionModifier = event.getModifierState(PRECISION_MODIFIER);\n\n const stopEvent = () => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n switch (event.key) {\n case ArrowLeft:\n stopEvent();\n columnResizeStateRef.current.setColumnWidth(event, {\n columnId,\n width: width - (precisionModifier ? STEP * PRECISION_FACTOR : STEP),\n });\n return;\n\n case ArrowRight:\n stopEvent();\n columnResizeStateRef.current.setColumnWidth(event, {\n columnId,\n width: width + (precisionModifier ? STEP * PRECISION_FACTOR : STEP),\n });\n return;\n\n case Space:\n case Enter:\n case Escape:\n stopEvent();\n disableInteractiveMode();\n break;\n }\n });\n\n // On component unmout, cancel any timer for adding a listener (if it exists) and remove the listener\n React.useEffect(\n () => () => {\n targetDocument?.defaultView?.clearTimeout(addListenerTimeout.current);\n targetDocument?.defaultView?.removeEventListener('keydown', keyboardHandler);\n },\n [keyboardHandler, targetDocument?.defaultView],\n );\n\n const enableInteractiveMode = React.useCallback(\n (colId: TableColumnId) => {\n setColumnId(colId);\n onChangeRef.current?.(colId, true);\n // Create the listener in the next tick, because the event that triggered this is still propagating\n // when Enter was pressed and would be caught in the keyboardHandler, disabling the keyboard mode immediately.\n // No idea why this is happening, but this is a working workaround.\n // Tracked here: https://github.com/microsoft/fluentui/issues/27177\n addListenerTimeout.current = targetDocument?.defaultView?.setTimeout(() => {\n targetDocument?.defaultView?.addEventListener('keydown', keyboardHandler);\n }, 0);\n },\n [keyboardHandler, targetDocument?.defaultView],\n );\n\n const disableInteractiveMode = React.useCallback(() => {\n if (columnId) {\n onChangeRef.current?.(columnId, false);\n }\n setColumnId(undefined);\n targetDocument?.defaultView?.removeEventListener('keydown', keyboardHandler);\n }, [columnId, keyboardHandler, targetDocument?.defaultView]);\n\n const toggleInteractiveMode = (colId: TableColumnId, onChange?: EnableKeyboardModeOnChangeCallback) => {\n onChangeRef.current = onChange;\n if (!columnId) {\n enableInteractiveMode(colId);\n } else if (colId && columnId !== colId) {\n setColumnId(colId);\n onChange?.(columnId, true);\n } else {\n disableInteractiveMode();\n }\n };\n\n return {\n toggleInteractiveMode,\n columnId,\n };\n}\n"],"names":["React","ArrowLeft","ArrowRight","Enter","Escape","Shift","Space","useEventCallback","useFluent_unstable","useFluent","STEP","PRECISION_MODIFIER","PRECISION_FACTOR","useKeyboardResizing","columnResizeState","columnId","setColumnId","useState","onChangeRef","useRef","addListenerTimeout","columnResizeStateRef","useEffect","current","targetDocument","keyboardHandler","event","width","getColumnWidth","precisionModifier","getModifierState","stopEvent","preventDefault","stopPropagation","key","setColumnWidth","disableInteractiveMode","defaultView","clearTimeout","removeEventListener","enableInteractiveMode","useCallback","colId","setTimeout","addEventListener","undefined","toggleInteractiveMode","onChange"],"mappings":"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"}
@@ -6,45 +6,47 @@ import { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts
6
6
  * Returns
7
7
  * `width` - current element width (0 by default),
8
8
  * `measureElementRef` - a ref function to be passed as `ref` to the element you want to measure
9
- */
10
- export function useMeasureElement() {
11
- const [width, setWidth] = React.useState(0);
12
- const container = React.useRef(undefined);
13
- const {
14
- targetDocument
15
- } = useFluent();
16
- // the handler for resize observer
17
- const handleResize = React.useCallback(() => {
18
- var _container_current;
19
- const containerWidth = (_container_current = container.current) === null || _container_current === void 0 ? void 0 : _container_current.getBoundingClientRect().width;
20
- setWidth(containerWidth || 0);
21
- }, []);
22
- // Keep the reference of ResizeObserver in the state, as it should live through renders
23
- const [resizeObserver] = React.useState(canUseDOM() ? new ResizeObserver(handleResize) : undefined);
24
- const measureElementRef = React.useCallback(el => {
25
- if (!targetDocument || !resizeObserver) {
26
- return;
27
- }
28
- // cleanup previous container
29
- if (container.current) {
30
- resizeObserver.unobserve(container.current);
31
- container.current.remove();
32
- }
33
- if (el) {
34
- container.current = targetDocument.createElement('div');
35
- el.insertAdjacentElement('beforebegin', container.current);
36
- resizeObserver.observe(container.current);
37
- handleResize();
38
- }
39
- }, [targetDocument, resizeObserver, handleResize]);
40
- React.useEffect(() => {
41
- return () => {
42
- return resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
9
+ */ export function useMeasureElement() {
10
+ const [width, setWidth] = React.useState(0);
11
+ const container = React.useRef(undefined);
12
+ const { targetDocument } = useFluent();
13
+ // the handler for resize observer
14
+ const handleResize = React.useCallback(()=>{
15
+ var _container_current;
16
+ const containerWidth = (_container_current = container.current) === null || _container_current === void 0 ? void 0 : _container_current.getBoundingClientRect().width;
17
+ setWidth(containerWidth || 0);
18
+ }, []);
19
+ // Keep the reference of ResizeObserver in the state, as it should live through renders
20
+ const [resizeObserver] = React.useState(canUseDOM() ? new ResizeObserver(handleResize) : undefined);
21
+ const measureElementRef = React.useCallback((el)=>{
22
+ if (!targetDocument || !resizeObserver) {
23
+ return;
24
+ }
25
+ // cleanup previous container
26
+ if (container.current) {
27
+ resizeObserver.unobserve(container.current);
28
+ container.current.remove();
29
+ }
30
+ if (el) {
31
+ container.current = targetDocument.createElement('div');
32
+ el.insertAdjacentElement('beforebegin', container.current);
33
+ resizeObserver.observe(container.current);
34
+ handleResize();
35
+ }
36
+ }, [
37
+ targetDocument,
38
+ resizeObserver,
39
+ handleResize
40
+ ]);
41
+ React.useEffect(()=>{
42
+ return ()=>{
43
+ return resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.disconnect();
44
+ };
45
+ }, [
46
+ resizeObserver
47
+ ]);
48
+ return {
49
+ width,
50
+ measureElementRef
43
51
  };
44
- }, [resizeObserver]);
45
- return {
46
- width,
47
- measureElementRef
48
- };
49
52
  }
50
- //# sourceMappingURL=useMeasureElement.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["canUseDOM","React","useFluent_unstable","useFluent","useMeasureElement","width","setWidth","useState","container","useRef","undefined","targetDocument","handleResize","useCallback","_container_current","containerWidth","current","getBoundingClientRect","resizeObserver","ResizeObserver","measureElementRef","el","unobserve","remove","createElement","insertAdjacentElement","observe","useEffect","disconnect"],"sources":["../../src/hooks/useMeasureElement.ts"],"sourcesContent":["import { canUseDOM } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n\n/**\n * Provides a way of reporting element width.\n * Returns\n * `width` - current element width (0 by default),\n * `measureElementRef` - a ref function to be passed as `ref` to the element you want to measure\n */\nexport function useMeasureElement<TElement extends HTMLElement = HTMLElement>() {\n const [width, setWidth] = React.useState(0);\n const container = React.useRef<HTMLElement | undefined>(undefined);\n\n const { targetDocument } = useFluent();\n\n // the handler for resize observer\n const handleResize = React.useCallback(() => {\n const containerWidth = container.current?.getBoundingClientRect().width;\n setWidth(containerWidth || 0);\n }, []);\n\n // Keep the reference of ResizeObserver in the state, as it should live through renders\n const [resizeObserver] = React.useState(canUseDOM() ? new ResizeObserver(handleResize) : undefined);\n const measureElementRef = React.useCallback(\n (el: TElement | null) => {\n if (!targetDocument || !resizeObserver) {\n return;\n }\n\n // cleanup previous container\n if (container.current) {\n resizeObserver.unobserve(container.current);\n container.current.remove();\n }\n\n if (el) {\n container.current = targetDocument.createElement('div');\n el.insertAdjacentElement('beforebegin', container.current);\n resizeObserver.observe(container.current);\n handleResize();\n }\n },\n [targetDocument, resizeObserver, handleResize],\n );\n\n React.useEffect(() => {\n return () => resizeObserver?.disconnect();\n }, [resizeObserver]);\n\n return { width, measureElementRef };\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ;AAC1B,YAAYC,KAAA,MAAW;AACvB,SAASC,kBAAA,IAAsBC,SAAS,QAAQ;AAEhD;;;;;;AAMA,OAAO,SAASC,kBAAA,EAAgE;EAC9E,MAAM,CAACC,KAAA,EAAOC,QAAA,CAAS,GAAGL,KAAA,CAAMM,QAAQ,CAAC;EACzC,MAAMC,SAAA,GAAYP,KAAA,CAAMQ,MAAM,CAA0BC,SAAA;EAExD,MAAM;IAAEC;EAAc,CAAE,GAAGR,SAAA;EAE3B;EACA,MAAMS,YAAA,GAAeX,KAAA,CAAMY,WAAW,CAAC,MAAM;QACpBC,kBAAA;IAAvB,MAAMC,cAAA,GAAiB,CAAAD,kBAAA,GAAAN,SAAA,CAAUQ,OAAO,cAAjBF,kBAAA,uBAAAA,kBAAA,CAAmBG,qBAAA,GAAwBZ,KAAK;IACvEC,QAAA,CAASS,cAAA,IAAkB;EAC7B,GAAG,EAAE;EAEL;EACA,MAAM,CAACG,cAAA,CAAe,GAAGjB,KAAA,CAAMM,QAAQ,CAACP,SAAA,KAAc,IAAImB,cAAA,CAAeP,YAAA,IAAgBF,SAAS;EAClG,MAAMU,iBAAA,GAAoBnB,KAAA,CAAMY,WAAW,CACxCQ,EAAA,IAAwB;IACvB,IAAI,CAACV,cAAA,IAAkB,CAACO,cAAA,EAAgB;MACtC;IACF;IAEA;IACA,IAAIV,SAAA,CAAUQ,OAAO,EAAE;MACrBE,cAAA,CAAeI,SAAS,CAACd,SAAA,CAAUQ,OAAO;MAC1CR,SAAA,CAAUQ,OAAO,CAACO,MAAM;IAC1B;IAEA,IAAIF,EAAA,EAAI;MACNb,SAAA,CAAUQ,OAAO,GAAGL,cAAA,CAAea,aAAa,CAAC;MACjDH,EAAA,CAAGI,qBAAqB,CAAC,eAAejB,SAAA,CAAUQ,OAAO;MACzDE,cAAA,CAAeQ,OAAO,CAAClB,SAAA,CAAUQ,OAAO;MACxCJ,YAAA;IACF;EACF,GACA,CAACD,cAAA,EAAgBO,cAAA,EAAgBN,YAAA,CAAa;EAGhDX,KAAA,CAAM0B,SAAS,CAAC,MAAM;IACpB,OAAO;MAAM,OAAAT,cAAA,aAAAA,cAAA,uBAAAA,cAAA,CAAgBU,UAAU;;EACzC,GAAG,CAACV,cAAA,CAAe;EAEnB,OAAO;IAAEb,KAAA;IAAOe;EAAkB;AACpC"}
1
+ {"version":3,"sources":["useMeasureElement.ts"],"sourcesContent":["import { canUseDOM } from '@fluentui/react-utilities';\nimport * as React from 'react';\nimport { useFluent_unstable as useFluent } from '@fluentui/react-shared-contexts';\n\n/**\n * Provides a way of reporting element width.\n * Returns\n * `width` - current element width (0 by default),\n * `measureElementRef` - a ref function to be passed as `ref` to the element you want to measure\n */\nexport function useMeasureElement<TElement extends HTMLElement = HTMLElement>() {\n const [width, setWidth] = React.useState(0);\n const container = React.useRef<HTMLElement | undefined>(undefined);\n\n const { targetDocument } = useFluent();\n\n // the handler for resize observer\n const handleResize = React.useCallback(() => {\n const containerWidth = container.current?.getBoundingClientRect().width;\n setWidth(containerWidth || 0);\n }, []);\n\n // Keep the reference of ResizeObserver in the state, as it should live through renders\n const [resizeObserver] = React.useState(canUseDOM() ? new ResizeObserver(handleResize) : undefined);\n const measureElementRef = React.useCallback(\n (el: TElement | null) => {\n if (!targetDocument || !resizeObserver) {\n return;\n }\n\n // cleanup previous container\n if (container.current) {\n resizeObserver.unobserve(container.current);\n container.current.remove();\n }\n\n if (el) {\n container.current = targetDocument.createElement('div');\n el.insertAdjacentElement('beforebegin', container.current);\n resizeObserver.observe(container.current);\n handleResize();\n }\n },\n [targetDocument, resizeObserver, handleResize],\n );\n\n React.useEffect(() => {\n return () => resizeObserver?.disconnect();\n }, [resizeObserver]);\n\n return { width, measureElementRef };\n}\n"],"names":["canUseDOM","React","useFluent_unstable","useFluent","useMeasureElement","width","setWidth","useState","container","useRef","undefined","targetDocument","handleResize","useCallback","containerWidth","current","getBoundingClientRect","resizeObserver","ResizeObserver","measureElementRef","el","unobserve","remove","createElement","insertAdjacentElement","observe","useEffect","disconnect"],"mappings":"AAAA,SAASA,SAAS,QAAQ,4BAA4B;AACtD,YAAYC,WAAW,QAAQ;AAC/B,SAASC,sBAAsBC,SAAS,QAAQ,kCAAkC;AAElF;;;;;CAKC,GACD,OAAO,SAASC,oBAAgE;IAC9E,MAAM,CAACC,OAAOC,SAAS,GAAGL,MAAMM,QAAQ,CAAC;IACzC,MAAMC,YAAYP,MAAMQ,MAAM,CAA0BC;IAExD,MAAM,EAAEC,eAAc,EAAE,GAAGR;IAE3B,kCAAkC;IAClC,MAAMS,eAAeX,MAAMY,WAAW,CAAC,IAAM;YACpBL;QAAvB,MAAMM,iBAAiBN,CAAAA,qBAAAA,UAAUO,OAAO,cAAjBP,gCAAAA,KAAAA,IAAAA,mBAAmBQ,wBAAwBX,KAAK;QACvEC,SAASQ,kBAAkB;IAC7B,GAAG,EAAE;IAEL,uFAAuF;IACvF,MAAM,CAACG,eAAe,GAAGhB,MAAMM,QAAQ,CAACP,cAAc,IAAIkB,eAAeN,gBAAgBF,SAAS;IAClG,MAAMS,oBAAoBlB,MAAMY,WAAW,CACzC,CAACO,KAAwB;QACvB,IAAI,CAACT,kBAAkB,CAACM,gBAAgB;YACtC;QACF,CAAC;QAED,6BAA6B;QAC7B,IAAIT,UAAUO,OAAO,EAAE;YACrBE,eAAeI,SAAS,CAACb,UAAUO,OAAO;YAC1CP,UAAUO,OAAO,CAACO,MAAM;QAC1B,CAAC;QAED,IAAIF,IAAI;YACNZ,UAAUO,OAAO,GAAGJ,eAAeY,aAAa,CAAC;YACjDH,GAAGI,qBAAqB,CAAC,eAAehB,UAAUO,OAAO;YACzDE,eAAeQ,OAAO,CAACjB,UAAUO,OAAO;YACxCH;QACF,CAAC;IACH,GACA;QAACD;QAAgBM;QAAgBL;KAAa;IAGhDX,MAAMyB,SAAS,CAAC,IAAM;QACpB,OAAO;YAAMT,OAAAA,2BAAAA,4BAAAA,KAAAA,IAAAA,eAAgBU,UAAU;;IACzC,GAAG;QAACV;KAAe;IAEnB,OAAO;QAAEZ;QAAOc;IAAkB;AACpC,CAAC"}