@vuu-ui/vuu-table 2.1.18 → 2.1.19-beta.1

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 (288) hide show
  1. package/package.json +12 -14
  2. package/types/VirtualColSpan.d.ts +2 -2
  3. package/types/cell-renderers/toggle-cell/ToggleCell.d.ts +1 -1
  4. package/types/useTable.d.ts +3 -3
  5. package/cjs/CellFocusState.js +0 -45
  6. package/cjs/CellFocusState.js.map +0 -1
  7. package/cjs/Row.js +0 -116
  8. package/cjs/Row.js.map +0 -1
  9. package/cjs/Table.css.js +0 -6
  10. package/cjs/Table.css.js.map +0 -1
  11. package/cjs/Table.js +0 -455
  12. package/cjs/Table.js.map +0 -1
  13. package/cjs/VirtualColSpan.js +0 -19
  14. package/cjs/VirtualColSpan.js.map +0 -1
  15. package/cjs/applyHighlighting.js +0 -33
  16. package/cjs/applyHighlighting.js.map +0 -1
  17. package/cjs/bulk-edit/BulkEditPanel.css.js +0 -6
  18. package/cjs/bulk-edit/BulkEditPanel.css.js.map +0 -1
  19. package/cjs/bulk-edit/BulkEditPanel.js +0 -107
  20. package/cjs/bulk-edit/BulkEditPanel.js.map +0 -1
  21. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.css.js +0 -6
  22. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.css.js.map +0 -1
  23. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.js +0 -80
  24. package/cjs/bulk-edit/ColumnCascadingUpdateEditor.js.map +0 -1
  25. package/cjs/bulk-edit/InsertNewRowEditor.css.js +0 -6
  26. package/cjs/bulk-edit/InsertNewRowEditor.css.js.map +0 -1
  27. package/cjs/bulk-edit/InsertNewRowEditor.js +0 -80
  28. package/cjs/bulk-edit/InsertNewRowEditor.js.map +0 -1
  29. package/cjs/bulk-edit/useBulkEditPanel.js +0 -70
  30. package/cjs/bulk-edit/useBulkEditPanel.js.map +0 -1
  31. package/cjs/bulk-edit/useColumnCascadingEditor.js +0 -143
  32. package/cjs/bulk-edit/useColumnCascadingEditor.js.map +0 -1
  33. package/cjs/cell-block/CellBlock.css.js +0 -6
  34. package/cjs/cell-block/CellBlock.css.js.map +0 -1
  35. package/cjs/cell-block/CellBlock.js +0 -45
  36. package/cjs/cell-block/CellBlock.js.map +0 -1
  37. package/cjs/cell-block/cellblock-utils.js +0 -125
  38. package/cjs/cell-block/cellblock-utils.js.map +0 -1
  39. package/cjs/cell-block/useCellBlockSelection.js +0 -257
  40. package/cjs/cell-block/useCellBlockSelection.js.map +0 -1
  41. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -6
  42. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  43. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +0 -67
  44. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  45. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -6
  46. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  47. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -51
  48. package/cjs/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  49. package/cjs/cell-renderers/input-cell/InputCell.css.js +0 -6
  50. package/cjs/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  51. package/cjs/cell-renderers/input-cell/InputCell.js +0 -63
  52. package/cjs/cell-renderers/input-cell/InputCell.js.map +0 -1
  53. package/cjs/cell-renderers/input-cell/useInputCell.js +0 -211
  54. package/cjs/cell-renderers/input-cell/useInputCell.js.map +0 -1
  55. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js +0 -6
  56. package/cjs/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  57. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +0 -66
  58. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  59. package/cjs/column-header-pill/ColumnHeaderPill.css.js +0 -6
  60. package/cjs/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  61. package/cjs/column-header-pill/ColumnHeaderPill.js +0 -53
  62. package/cjs/column-header-pill/ColumnHeaderPill.js.map +0 -1
  63. package/cjs/column-header-pill/GroupColumnPill.css.js +0 -6
  64. package/cjs/column-header-pill/GroupColumnPill.css.js.map +0 -1
  65. package/cjs/column-header-pill/GroupColumnPill.js +0 -29
  66. package/cjs/column-header-pill/GroupColumnPill.js.map +0 -1
  67. package/cjs/column-header-pill/SortIndicator.css.js +0 -6
  68. package/cjs/column-header-pill/SortIndicator.css.js.map +0 -1
  69. package/cjs/column-header-pill/SortIndicator.js +0 -27
  70. package/cjs/column-header-pill/SortIndicator.js.map +0 -1
  71. package/cjs/column-resizing/ColumnResizer.css.js +0 -6
  72. package/cjs/column-resizing/ColumnResizer.css.js.map +0 -1
  73. package/cjs/column-resizing/ColumnResizer.js +0 -82
  74. package/cjs/column-resizing/ColumnResizer.js.map +0 -1
  75. package/cjs/column-resizing/useTableColumnResize.js +0 -55
  76. package/cjs/column-resizing/useTableColumnResize.js.map +0 -1
  77. package/cjs/data-row/DataRow.js +0 -262
  78. package/cjs/data-row/DataRow.js.map +0 -1
  79. package/cjs/header-cell/GroupHeaderCell.css.js +0 -6
  80. package/cjs/header-cell/GroupHeaderCell.css.js.map +0 -1
  81. package/cjs/header-cell/GroupHeaderCell.js +0 -127
  82. package/cjs/header-cell/GroupHeaderCell.js.map +0 -1
  83. package/cjs/header-cell/HeaderCell.css.js +0 -6
  84. package/cjs/header-cell/HeaderCell.css.js.map +0 -1
  85. package/cjs/header-cell/HeaderCell.js +0 -139
  86. package/cjs/header-cell/HeaderCell.js.map +0 -1
  87. package/cjs/index.js +0 -64
  88. package/cjs/index.js.map +0 -1
  89. package/cjs/pagination/PaginationControl.css.js +0 -6
  90. package/cjs/pagination/PaginationControl.css.js.map +0 -1
  91. package/cjs/pagination/PaginationControl.js +0 -38
  92. package/cjs/pagination/PaginationControl.js.map +0 -1
  93. package/cjs/pagination/usePagination.js +0 -36
  94. package/cjs/pagination/usePagination.js.map +0 -1
  95. package/cjs/table-cell/TableCell.css.js +0 -6
  96. package/cjs/table-cell/TableCell.css.js.map +0 -1
  97. package/cjs/table-cell/TableCell.js +0 -75
  98. package/cjs/table-cell/TableCell.js.map +0 -1
  99. package/cjs/table-cell/TableGroupCell.css.js +0 -6
  100. package/cjs/table-cell/TableGroupCell.css.js.map +0 -1
  101. package/cjs/table-cell/TableGroupCell.js +0 -65
  102. package/cjs/table-cell/TableGroupCell.js.map +0 -1
  103. package/cjs/table-config/useTableConfig.js +0 -67
  104. package/cjs/table-config/useTableConfig.js.map +0 -1
  105. package/cjs/table-config.js +0 -35
  106. package/cjs/table-config.js.map +0 -1
  107. package/cjs/table-data-source/DataRowMovingWindow.js +0 -99
  108. package/cjs/table-data-source/DataRowMovingWindow.js.map +0 -1
  109. package/cjs/table-data-source/useDataSource.js +0 -236
  110. package/cjs/table-data-source/useDataSource.js.map +0 -1
  111. package/cjs/table-dom-utils.js +0 -206
  112. package/cjs/table-dom-utils.js.map +0 -1
  113. package/cjs/table-header/HeaderProvider.js +0 -18
  114. package/cjs/table-header/HeaderProvider.js.map +0 -1
  115. package/cjs/table-header/TableHeader.js +0 -180
  116. package/cjs/table-header/TableHeader.js.map +0 -1
  117. package/cjs/table-header/useTableHeader.js +0 -87
  118. package/cjs/table-header/useTableHeader.js.map +0 -1
  119. package/cjs/useCell.js +0 -26
  120. package/cjs/useCell.js.map +0 -1
  121. package/cjs/useCellEditing.js +0 -77
  122. package/cjs/useCellEditing.js.map +0 -1
  123. package/cjs/useCellFocus.js +0 -119
  124. package/cjs/useCellFocus.js.map +0 -1
  125. package/cjs/useControlledTableNavigation.js +0 -46
  126. package/cjs/useControlledTableNavigation.js.map +0 -1
  127. package/cjs/useEditableCell.js +0 -27
  128. package/cjs/useEditableCell.js.map +0 -1
  129. package/cjs/useKeyboardNavigation.js +0 -323
  130. package/cjs/useKeyboardNavigation.js.map +0 -1
  131. package/cjs/useMeasuredHeight.js +0 -51
  132. package/cjs/useMeasuredHeight.js.map +0 -1
  133. package/cjs/useRowClassNameGenerators.js +0 -34
  134. package/cjs/useRowClassNameGenerators.js.map +0 -1
  135. package/cjs/useSelection.js +0 -130
  136. package/cjs/useSelection.js.map +0 -1
  137. package/cjs/useTable.js +0 -742
  138. package/cjs/useTable.js.map +0 -1
  139. package/cjs/useTableContextMenu.js +0 -76
  140. package/cjs/useTableContextMenu.js.map +0 -1
  141. package/cjs/useTableModel.js +0 -421
  142. package/cjs/useTableModel.js.map +0 -1
  143. package/cjs/useTableScroll.js +0 -464
  144. package/cjs/useTableScroll.js.map +0 -1
  145. package/cjs/useTableViewport.js +0 -137
  146. package/cjs/useTableViewport.js.map +0 -1
  147. package/esm/CellFocusState.js +0 -43
  148. package/esm/CellFocusState.js.map +0 -1
  149. package/esm/Row.js +0 -114
  150. package/esm/Row.js.map +0 -1
  151. package/esm/Table.css.js +0 -4
  152. package/esm/Table.css.js.map +0 -1
  153. package/esm/Table.js +0 -453
  154. package/esm/Table.js.map +0 -1
  155. package/esm/VirtualColSpan.js +0 -17
  156. package/esm/VirtualColSpan.js.map +0 -1
  157. package/esm/applyHighlighting.js +0 -31
  158. package/esm/applyHighlighting.js.map +0 -1
  159. package/esm/bulk-edit/BulkEditPanel.css.js +0 -4
  160. package/esm/bulk-edit/BulkEditPanel.css.js.map +0 -1
  161. package/esm/bulk-edit/BulkEditPanel.js +0 -105
  162. package/esm/bulk-edit/BulkEditPanel.js.map +0 -1
  163. package/esm/bulk-edit/ColumnCascadingUpdateEditor.css.js +0 -4
  164. package/esm/bulk-edit/ColumnCascadingUpdateEditor.css.js.map +0 -1
  165. package/esm/bulk-edit/ColumnCascadingUpdateEditor.js +0 -78
  166. package/esm/bulk-edit/ColumnCascadingUpdateEditor.js.map +0 -1
  167. package/esm/bulk-edit/InsertNewRowEditor.css.js +0 -4
  168. package/esm/bulk-edit/InsertNewRowEditor.css.js.map +0 -1
  169. package/esm/bulk-edit/InsertNewRowEditor.js +0 -78
  170. package/esm/bulk-edit/InsertNewRowEditor.js.map +0 -1
  171. package/esm/bulk-edit/useBulkEditPanel.js +0 -68
  172. package/esm/bulk-edit/useBulkEditPanel.js.map +0 -1
  173. package/esm/bulk-edit/useColumnCascadingEditor.js +0 -141
  174. package/esm/bulk-edit/useColumnCascadingEditor.js.map +0 -1
  175. package/esm/cell-block/CellBlock.css.js +0 -4
  176. package/esm/cell-block/CellBlock.css.js.map +0 -1
  177. package/esm/cell-block/CellBlock.js +0 -43
  178. package/esm/cell-block/CellBlock.js.map +0 -1
  179. package/esm/cell-block/cellblock-utils.js +0 -116
  180. package/esm/cell-block/cellblock-utils.js.map +0 -1
  181. package/esm/cell-block/useCellBlockSelection.js +0 -255
  182. package/esm/cell-block/useCellBlockSelection.js.map +0 -1
  183. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js +0 -4
  184. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css.js.map +0 -1
  185. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +0 -65
  186. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  187. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js +0 -4
  188. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.css.js.map +0 -1
  189. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js +0 -49
  190. package/esm/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.js.map +0 -1
  191. package/esm/cell-renderers/input-cell/InputCell.css.js +0 -4
  192. package/esm/cell-renderers/input-cell/InputCell.css.js.map +0 -1
  193. package/esm/cell-renderers/input-cell/InputCell.js +0 -61
  194. package/esm/cell-renderers/input-cell/InputCell.js.map +0 -1
  195. package/esm/cell-renderers/input-cell/useInputCell.js +0 -209
  196. package/esm/cell-renderers/input-cell/useInputCell.js.map +0 -1
  197. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js +0 -4
  198. package/esm/cell-renderers/toggle-cell/ToggleCell.css.js.map +0 -1
  199. package/esm/cell-renderers/toggle-cell/ToggleCell.js +0 -64
  200. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  201. package/esm/column-header-pill/ColumnHeaderPill.css.js +0 -4
  202. package/esm/column-header-pill/ColumnHeaderPill.css.js.map +0 -1
  203. package/esm/column-header-pill/ColumnHeaderPill.js +0 -51
  204. package/esm/column-header-pill/ColumnHeaderPill.js.map +0 -1
  205. package/esm/column-header-pill/GroupColumnPill.css.js +0 -4
  206. package/esm/column-header-pill/GroupColumnPill.css.js.map +0 -1
  207. package/esm/column-header-pill/GroupColumnPill.js +0 -27
  208. package/esm/column-header-pill/GroupColumnPill.js.map +0 -1
  209. package/esm/column-header-pill/SortIndicator.css.js +0 -4
  210. package/esm/column-header-pill/SortIndicator.css.js.map +0 -1
  211. package/esm/column-header-pill/SortIndicator.js +0 -25
  212. package/esm/column-header-pill/SortIndicator.js.map +0 -1
  213. package/esm/column-resizing/ColumnResizer.css.js +0 -4
  214. package/esm/column-resizing/ColumnResizer.css.js.map +0 -1
  215. package/esm/column-resizing/ColumnResizer.js +0 -80
  216. package/esm/column-resizing/ColumnResizer.js.map +0 -1
  217. package/esm/column-resizing/useTableColumnResize.js +0 -53
  218. package/esm/column-resizing/useTableColumnResize.js.map +0 -1
  219. package/esm/data-row/DataRow.js +0 -260
  220. package/esm/data-row/DataRow.js.map +0 -1
  221. package/esm/header-cell/GroupHeaderCell.css.js +0 -4
  222. package/esm/header-cell/GroupHeaderCell.css.js.map +0 -1
  223. package/esm/header-cell/GroupHeaderCell.js +0 -125
  224. package/esm/header-cell/GroupHeaderCell.js.map +0 -1
  225. package/esm/header-cell/HeaderCell.css.js +0 -4
  226. package/esm/header-cell/HeaderCell.css.js.map +0 -1
  227. package/esm/header-cell/HeaderCell.js +0 -137
  228. package/esm/header-cell/HeaderCell.js.map +0 -1
  229. package/esm/index.js +0 -27
  230. package/esm/index.js.map +0 -1
  231. package/esm/pagination/PaginationControl.css.js +0 -4
  232. package/esm/pagination/PaginationControl.css.js.map +0 -1
  233. package/esm/pagination/PaginationControl.js +0 -36
  234. package/esm/pagination/PaginationControl.js.map +0 -1
  235. package/esm/pagination/usePagination.js +0 -34
  236. package/esm/pagination/usePagination.js.map +0 -1
  237. package/esm/table-cell/TableCell.css.js +0 -4
  238. package/esm/table-cell/TableCell.css.js.map +0 -1
  239. package/esm/table-cell/TableCell.js +0 -73
  240. package/esm/table-cell/TableCell.js.map +0 -1
  241. package/esm/table-cell/TableGroupCell.css.js +0 -4
  242. package/esm/table-cell/TableGroupCell.css.js.map +0 -1
  243. package/esm/table-cell/TableGroupCell.js +0 -63
  244. package/esm/table-cell/TableGroupCell.js.map +0 -1
  245. package/esm/table-config/useTableConfig.js +0 -65
  246. package/esm/table-config/useTableConfig.js.map +0 -1
  247. package/esm/table-config.js +0 -33
  248. package/esm/table-config.js.map +0 -1
  249. package/esm/table-data-source/DataRowMovingWindow.js +0 -97
  250. package/esm/table-data-source/DataRowMovingWindow.js.map +0 -1
  251. package/esm/table-data-source/useDataSource.js +0 -234
  252. package/esm/table-data-source/useDataSource.js.map +0 -1
  253. package/esm/table-dom-utils.js +0 -188
  254. package/esm/table-dom-utils.js.map +0 -1
  255. package/esm/table-header/HeaderProvider.js +0 -15
  256. package/esm/table-header/HeaderProvider.js.map +0 -1
  257. package/esm/table-header/TableHeader.js +0 -178
  258. package/esm/table-header/TableHeader.js.map +0 -1
  259. package/esm/table-header/useTableHeader.js +0 -85
  260. package/esm/table-header/useTableHeader.js.map +0 -1
  261. package/esm/useCell.js +0 -24
  262. package/esm/useCell.js.map +0 -1
  263. package/esm/useCellEditing.js +0 -75
  264. package/esm/useCellEditing.js.map +0 -1
  265. package/esm/useCellFocus.js +0 -117
  266. package/esm/useCellFocus.js.map +0 -1
  267. package/esm/useControlledTableNavigation.js +0 -43
  268. package/esm/useControlledTableNavigation.js.map +0 -1
  269. package/esm/useEditableCell.js +0 -25
  270. package/esm/useEditableCell.js.map +0 -1
  271. package/esm/useKeyboardNavigation.js +0 -319
  272. package/esm/useKeyboardNavigation.js.map +0 -1
  273. package/esm/useMeasuredHeight.js +0 -49
  274. package/esm/useMeasuredHeight.js.map +0 -1
  275. package/esm/useRowClassNameGenerators.js +0 -32
  276. package/esm/useRowClassNameGenerators.js.map +0 -1
  277. package/esm/useSelection.js +0 -128
  278. package/esm/useSelection.js.map +0 -1
  279. package/esm/useTable.js +0 -740
  280. package/esm/useTable.js.map +0 -1
  281. package/esm/useTableContextMenu.js +0 -73
  282. package/esm/useTableContextMenu.js.map +0 -1
  283. package/esm/useTableModel.js +0 -419
  284. package/esm/useTableModel.js.map +0 -1
  285. package/esm/useTableScroll.js +0 -461
  286. package/esm/useTableScroll.js.map +0 -1
  287. package/esm/useTableViewport.js +0 -135
  288. package/esm/useTableViewport.js.map +0 -1
@@ -1,116 +0,0 @@
1
- import { getAriaColIndex, queryClosest, getAriaRowIndex } from '@vuu-ui/vuu-utils';
2
- import { getAriaCellPos } from '../table-dom-utils.js';
3
-
4
- const isNullCellBox = ({ bottom, left, right, top }) => {
5
- return bottom === -1 && left === -1 && right === -1 && top === -1;
6
- };
7
- const Hi = Number.MAX_SAFE_INTEGER;
8
- const getEndCellDirection = (startBox, endBox) => {
9
- const { bottom: sBottom, left: sLeft, right: sRight, top: sTop } = startBox;
10
- const { bottom: eBottom, left: eLeft, right: eRight, top: eTop } = endBox;
11
- const north = eTop < sTop;
12
- const east = eRight > sRight;
13
- const south = eBottom > sBottom;
14
- const west = eLeft < sLeft;
15
- if (north && east) return "ne";
16
- else if (south && east) return "se";
17
- else if (south && west) return "sw";
18
- else if (north && west) return "nw";
19
- else if (north) return "n";
20
- else if (east) return "e";
21
- else if (south) return "s";
22
- else if (west) return "w";
23
- else return "self";
24
- };
25
- const setElementBox = (el, box) => {
26
- const { bottom, left, right, top } = el.getBoundingClientRect();
27
- box.bottom = bottom;
28
- box.left = left;
29
- box.right = right;
30
- box.top = top;
31
- };
32
- const outsideBox = ({ bottom, left, right, top }, x, y) => x < left || x > right || y < top || y > bottom;
33
- const getRowIndex = (cell) => getAriaRowIndex(queryClosest(cell, ".vuuTableRow"));
34
- const getTableCellBlock = (startCell, endCell) => {
35
- const colStart = getAriaColIndex(startCell);
36
- const colEnd = getAriaColIndex(endCell);
37
- const rowStart = getRowIndex(startCell);
38
- const rowEnd = getRowIndex(endCell);
39
- const columnRange = {
40
- from: Math.min(colStart, colEnd),
41
- to: Math.max(colStart, colEnd)
42
- };
43
- const rowRange = {
44
- from: Math.min(rowStart, rowEnd),
45
- to: Math.max(rowStart, rowEnd)
46
- };
47
- return {
48
- columnRange,
49
- rowRange
50
- };
51
- };
52
- const refState = {
53
- cellBlock: null,
54
- cellBlockClassName: "",
55
- dragState: "pending",
56
- endBox: { bottom: -1, left: Hi, right: -1, top: Hi },
57
- endCell: null,
58
- endPos: [-1, -1],
59
- mousePosX: -1,
60
- mousePosY: -1,
61
- mouseStartX: -1,
62
- mouseStartY: -1,
63
- startBox: { bottom: -1, left: -1, right: -1, top: -1 },
64
- startCell: null,
65
- startPos: [-1, -1]
66
- };
67
- const updateCellBlockClassName = (state) => {
68
- const { cellBlock, cellBlockClassName, startBox, endBox } = state;
69
- const endBlockDirection = getEndCellDirection(startBox, endBox);
70
- const newCellBlockClassName = `cellblock-direction-${endBlockDirection}`;
71
- if (newCellBlockClassName !== cellBlockClassName) {
72
- if (cellBlockClassName) {
73
- cellBlock?.classList.replace(cellBlockClassName, newCellBlockClassName);
74
- } else {
75
- cellBlock?.classList.add(newCellBlockClassName);
76
- }
77
- state.cellBlockClassName = newCellBlockClassName;
78
- }
79
- };
80
- const getTextFromCells = (startCell, endCell) => {
81
- const tableBody = queryClosest(
82
- startCell,
83
- ".vuuTable-body",
84
- true
85
- );
86
- const [startRow, startCol] = getAriaCellPos(startCell);
87
- const [endRow, endCol] = getAriaCellPos(endCell);
88
- const rowRange = {
89
- from: Math.min(startRow, endRow),
90
- to: Math.max(startRow, endRow)
91
- };
92
- const colRange = {
93
- from: Math.min(startCol, endCol),
94
- to: Math.max(startCol, endCol)
95
- };
96
- const results = [];
97
- for (let rowIdx = rowRange.from; rowIdx <= rowRange.to; rowIdx++) {
98
- const row = tableBody.querySelector(
99
- `.vuuTableRow[aria-rowindex='${rowIdx}']`
100
- );
101
- const rowData = [];
102
- for (let colIdx = colRange.from; colIdx <= colRange.to; colIdx++) {
103
- const cell = row?.querySelector(
104
- `.vuuTableCell[aria-colindex='${colIdx}']`
105
- );
106
- if (cell) {
107
- rowData.push(cell.textContent ?? "");
108
- }
109
- }
110
- results.push(rowData);
111
- }
112
- return results.map((r) => r.join(" ")).join("\n");
113
- };
114
-
115
- export { getEndCellDirection, getTableCellBlock, getTextFromCells, isNullCellBox, outsideBox, refState, setElementBox, updateCellBlockClassName };
116
- //# sourceMappingURL=cellblock-utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cellblock-utils.js","sources":["../../../../packages/vuu-table/src/cell-block/cellblock-utils.ts"],"sourcesContent":["import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n queryClosest,\n getAriaColIndex,\n getAriaRowIndex,\n} from \"@vuu-ui/vuu-utils\";\nimport { getAriaCellPos } from \"../table-dom-utils\";\n\nexport type TableCellBlock = {\n columnRange: VuuRange;\n rowRange: VuuRange;\n};\n\nexport type CellBox = {\n bottom: number;\n left: number;\n right: number;\n top: number;\n};\n\nexport const isNullCellBox = ({ bottom, left, right, top }: CellBox) => {\n return bottom === -1 && left === -1 && right === -1 && top === -1;\n};\n\nconst Hi = Number.MAX_SAFE_INTEGER;\n\ntype EndCellDirection =\n | \"self\"\n | \"n\"\n | \"ne\"\n | \"e\"\n | \"se\"\n | \"s\"\n | \"sw\"\n | \"w\"\n | \"nw\";\n\nexport const getEndCellDirection = (\n startBox: CellBox,\n endBox: CellBox,\n): EndCellDirection => {\n const { bottom: sBottom, left: sLeft, right: sRight, top: sTop } = startBox;\n const { bottom: eBottom, left: eLeft, right: eRight, top: eTop } = endBox;\n const north = eTop < sTop;\n const east = eRight > sRight;\n const south = eBottom > sBottom;\n const west = eLeft < sLeft;\n\n if (north && east) return \"ne\";\n else if (south && east) return \"se\";\n else if (south && west) return \"sw\";\n else if (north && west) return \"nw\";\n else if (north) return \"n\";\n else if (east) return \"e\";\n else if (south) return \"s\";\n else if (west) return \"w\";\n else return \"self\";\n};\n\nexport const setElementBox = (el: HTMLElement, box: CellBox) => {\n const { bottom, left, right, top } = el.getBoundingClientRect();\n box.bottom = bottom;\n box.left = left;\n box.right = right;\n box.top = top;\n};\n\nexport const outsideBox = (\n { bottom, left, right, top }: CellBox,\n x: number,\n y: number,\n) => x < left || x > right || y < top || y > bottom;\n\nconst getRowIndex = (cell: HTMLDivElement) =>\n getAriaRowIndex(queryClosest<HTMLDivElement>(cell, \".vuuTableRow\"));\n\nexport const getTableCellBlock = (\n startCell: HTMLDivElement,\n endCell: HTMLDivElement,\n): TableCellBlock => {\n const colStart = getAriaColIndex(startCell);\n const colEnd = getAriaColIndex(endCell);\n const rowStart = getRowIndex(startCell);\n const rowEnd = getRowIndex(endCell);\n\n const columnRange = {\n from: Math.min(colStart, colEnd),\n to: Math.max(colStart, colEnd),\n };\n const rowRange = {\n from: Math.min(rowStart, rowEnd),\n to: Math.max(rowStart, rowEnd),\n };\n\n return {\n columnRange,\n rowRange,\n };\n};\n\nexport type RefState = {\n dragState: \"pending\" | \"active\";\n cellBlock: HTMLDivElement | null;\n cellBlockClassName: string;\n endBox: CellBox;\n endCell: HTMLDivElement | null;\n endPos: PosTuple; // used during keyboard operation\n mousePosX: number;\n mousePosY: number;\n mouseStartX: number;\n mouseStartY: number;\n startCell: HTMLDivElement | null;\n startBox: CellBox;\n startPos: PosTuple; // used during keyboard operation\n};\n\nexport type PosTuple = [number, number];\n\nexport const refState: RefState = {\n cellBlock: null,\n cellBlockClassName: \"\",\n dragState: \"pending\",\n endBox: { bottom: -1, left: Hi, right: -1, top: Hi },\n endCell: null,\n endPos: [-1, -1],\n mousePosX: -1,\n mousePosY: -1,\n mouseStartX: -1,\n mouseStartY: -1,\n startBox: { bottom: -1, left: -1, right: -1, top: -1 },\n startCell: null,\n startPos: [-1, -1],\n} as const;\n\nexport const updateCellBlockClassName = (state: RefState) => {\n const { cellBlock, cellBlockClassName, startBox, endBox } = state;\n const endBlockDirection = getEndCellDirection(startBox, endBox);\n const newCellBlockClassName = `cellblock-direction-${endBlockDirection}`;\n if (newCellBlockClassName !== cellBlockClassName) {\n if (cellBlockClassName) {\n cellBlock?.classList.replace(cellBlockClassName, newCellBlockClassName);\n } else {\n cellBlock?.classList.add(newCellBlockClassName);\n }\n state.cellBlockClassName = newCellBlockClassName;\n }\n};\n\nexport const getTextFromCells = (\n startCell: HTMLDivElement,\n endCell: HTMLDivElement,\n) => {\n const tableBody = queryClosest<HTMLDivElement>(\n startCell,\n \".vuuTable-body\",\n true,\n );\n const [startRow, startCol] = getAriaCellPos(startCell);\n const [endRow, endCol] = getAriaCellPos(endCell);\n\n const rowRange = {\n from: Math.min(startRow, endRow),\n to: Math.max(startRow, endRow),\n };\n\n const colRange = {\n from: Math.min(startCol, endCol),\n to: Math.max(startCol, endCol),\n };\n\n const results: string[][] = [];\n for (let rowIdx = rowRange.from; rowIdx <= rowRange.to; rowIdx++) {\n const row = tableBody.querySelector(\n `.vuuTableRow[aria-rowindex='${rowIdx}']`,\n );\n const rowData = [];\n for (let colIdx = colRange.from; colIdx <= colRange.to; colIdx++) {\n const cell = row?.querySelector(\n `.vuuTableCell[aria-colindex='${colIdx}']`,\n );\n if (cell) {\n rowData.push(cell.textContent ?? \"\");\n }\n }\n results.push(rowData);\n }\n return results.map((r) => r.join(\"\\t\")).join(\"\\n\");\n};\n"],"names":[],"mappings":"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"}
@@ -1,255 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { queryClosest, isArrowKey } from '@vuu-ui/vuu-utils';
3
- import { useState, useRef, useCallback } from 'react';
4
- import { getAriaCellPos, getTableCell, getNextCellPos } from '../table-dom-utils.js';
5
- import { CellBlock } from './CellBlock.js';
6
- import { refState, getTextFromCells, setElementBox, outsideBox, updateCellBlockClassName, getTableCellBlock, isNullCellBox } from './cellblock-utils.js';
7
-
8
- const clone = (posTuple) => posTuple.slice();
9
- const NullHandler = () => console.error("no handler installed");
10
- const mouseHandlers = {
11
- mouseMove: NullHandler,
12
- mouseMovePreDrag: NullHandler,
13
- mouseUp: NullHandler,
14
- mouseUpPreDrag: NullHandler
15
- };
16
- const mouseType = (name) => name.startsWith("mouseMove") ? "mousemove" : "mouseup";
17
- const DRAG_THRESHOLD = 5;
18
- const useCellBlockSelection = ({
19
- allowCellBlockSelection,
20
- columnCount = 0,
21
- containerRef,
22
- onSelectCellBlock,
23
- rowCount = 0
24
- }) => {
25
- const [cellBlock, setCellBlock] = useState(null);
26
- const stateRef = useRef(refState);
27
- const handlersRef = useRef(mouseHandlers);
28
- const handleCopy = useCallback(async () => {
29
- const { startCell, endCell } = stateRef.current;
30
- if (startCell && endCell) {
31
- const tsvText = getTextFromCells(startCell, endCell);
32
- const type = "text/plain";
33
- const blob = new Blob([tsvText], { type });
34
- const data = [new ClipboardItem({ [type]: blob })];
35
- await navigator.clipboard.write(data);
36
- }
37
- }, []);
38
- const cellBlockRef = useCallback((el) => {
39
- stateRef.current.cellBlock = el;
40
- }, []);
41
- const createCellBlock = useCallback(
42
- (method = "mouse") => {
43
- const { startBox, startCell } = stateRef.current;
44
- if (startCell) {
45
- const table = queryClosest(startCell, ".vuuTable");
46
- if (table) {
47
- table.classList.add(`vuu-cellblock-select-in-progress-${method}`);
48
- }
49
- setElementBox(startCell, startBox);
50
- startCell.classList.add("vuu-cellblock-start");
51
- setCellBlock(/* @__PURE__ */ jsx(CellBlock, { onCopy: handleCopy, ref: cellBlockRef }));
52
- }
53
- },
54
- [cellBlockRef, handleCopy]
55
- );
56
- const initializeStateRef = useCallback(() => {
57
- const { cellBlock: cellBlock2, cellBlockClassName, startCell, endCell } = stateRef.current;
58
- if (startCell) {
59
- startCell.classList.remove("vuu-cellblock-start");
60
- }
61
- if (endCell) {
62
- endCell.classList.remove("vuu-cellblock-end");
63
- }
64
- if (cellBlock2?.classList.contains(cellBlockClassName)) {
65
- cellBlock2.classList.remove(cellBlockClassName);
66
- }
67
- const { endBox, startBox } = refState;
68
- stateRef.current = {
69
- ...refState,
70
- cellBlock: cellBlock2,
71
- endBox: { ...endBox },
72
- endPos: [-1, -1],
73
- startBox: { ...startBox },
74
- startPos: [-1, -1]
75
- };
76
- }, []);
77
- const addMouseListener = useCallback(
78
- (mouseOperation, handler) => {
79
- window.addEventListener(mouseType(mouseOperation), handler);
80
- handlersRef.current[mouseOperation] = handler;
81
- },
82
- []
83
- );
84
- const removeMouseListener = useCallback((name) => {
85
- window.removeEventListener(mouseType(name), handlersRef.current[name]);
86
- }, []);
87
- handlersRef.current.mouseMove = useCallback((evt) => {
88
- const { clientX: x, clientY: y } = evt;
89
- const { endBox, startBox } = stateRef.current;
90
- if (outsideBox(startBox, x, y) && outsideBox(endBox, x, y)) {
91
- const cell = queryClosest(
92
- evt.target,
93
- ".vuuTableCell, .vuuCellBlock"
94
- );
95
- if (cell?.classList.contains("vuuTableCell")) {
96
- setElementBox(cell, endBox);
97
- stateRef.current.endCell = cell;
98
- updateCellBlockClassName(stateRef.current);
99
- }
100
- }
101
- }, []);
102
- handlersRef.current.mouseUp = useCallback(
103
- (evt) => {
104
- removeMouseListener("mouseMove");
105
- removeMouseListener("mouseUp");
106
- const { cellBlock: cellBlock2, endCell, startCell } = stateRef.current;
107
- const table = queryClosest(evt.target, ".vuuTable");
108
- endCell?.classList.add("vuu-cellblock-end");
109
- if (table) {
110
- table.classList.remove("vuu-cellblock-select-in-progress-mouse");
111
- }
112
- if (startCell && endCell) {
113
- const tableCellBlock = getTableCellBlock(startCell, endCell);
114
- onSelectCellBlock?.(tableCellBlock);
115
- }
116
- if (cellBlock2) {
117
- cellBlock2.focus();
118
- }
119
- },
120
- [onSelectCellBlock, removeMouseListener]
121
- );
122
- handlersRef.current.mouseMovePreDrag = useCallback(
123
- (evt) => {
124
- const { current: state } = stateRef;
125
- const { mouseStartX, mouseStartY } = state;
126
- const x = state.mousePosX = evt.clientX;
127
- const y = state.mousePosY = evt.clientY;
128
- const distance = Math.max(
129
- Math.abs(x - mouseStartX),
130
- Math.abs(y - mouseStartY)
131
- );
132
- if (distance > DRAG_THRESHOLD) {
133
- createCellBlock("mouse");
134
- const { mouseMove, mouseUp } = handlersRef.current;
135
- removeMouseListener("mouseMovePreDrag");
136
- removeMouseListener("mouseUpPreDrag");
137
- addMouseListener("mouseMove", mouseMove);
138
- addMouseListener("mouseUp", mouseUp);
139
- }
140
- },
141
- [addMouseListener, createCellBlock, removeMouseListener]
142
- );
143
- handlersRef.current.mouseUpPreDrag = useCallback(() => {
144
- removeMouseListener("mouseMovePreDrag");
145
- removeMouseListener("mouseUpPreDrag");
146
- }, [removeMouseListener]);
147
- const handleNativeMouseOver = useCallback((evt) => {
148
- const cell = queryClosest(evt.target, ".vuuTableCell");
149
- if (cell) {
150
- stateRef.current.endPos = getAriaCellPos(cell);
151
- stateRef.current.endCell?.classList.remove("vuu-cellblock-end");
152
- stateRef.current.endCell = cell;
153
- setElementBox(cell, stateRef.current.endBox);
154
- updateCellBlockClassName(stateRef.current);
155
- cell?.classList.add("vuu-cellblock-end");
156
- }
157
- }, []);
158
- const handleNativeMouseUp = useCallback(() => {
159
- window.removeEventListener("mouseover", handleNativeMouseOver);
160
- }, [handleNativeMouseOver]);
161
- const handleMouseDown = useCallback(
162
- (evt) => {
163
- if (evt.button === 0) {
164
- initializeStateRef();
165
- const { current: state } = stateRef;
166
- const cell = queryClosest(evt.target, ".vuuTableCell");
167
- if (cell) {
168
- state.startCell = cell;
169
- state.mouseStartX = evt.clientX;
170
- state.mouseStartY = evt.clientY;
171
- const { mouseMovePreDrag, mouseUpPreDrag } = handlersRef.current;
172
- addMouseListener("mouseMovePreDrag", mouseMovePreDrag);
173
- addMouseListener("mouseUpPreDrag", mouseUpPreDrag);
174
- console.log("register mouse enter");
175
- window.addEventListener("mouseover", handleNativeMouseOver);
176
- window.addEventListener("mouseup", handleNativeMouseUp);
177
- }
178
- }
179
- },
180
- [
181
- addMouseListener,
182
- handleNativeMouseOver,
183
- handleNativeMouseUp,
184
- initializeStateRef
185
- ]
186
- );
187
- const nativeKeyDownHandlerRef = useRef(NullHandler);
188
- const handleNativeKeyUp = useCallback((evt) => {
189
- if (evt.key === "Shift") {
190
- const { endCell } = stateRef.current;
191
- const table = queryClosest(evt.target, ".vuuTable");
192
- endCell?.classList.add("vuu-cellblock-end");
193
- if (table) {
194
- table.classList.remove("vuu-cellblock-select-in-progress-keyboard");
195
- }
196
- window.removeEventListener("keydown", nativeKeyDownHandlerRef.current, {
197
- capture: true
198
- });
199
- window.removeEventListener("keyup", handleNativeKeyUp, {
200
- capture: true
201
- });
202
- }
203
- }, []);
204
- const handleNativeKeyDown = nativeKeyDownHandlerRef.current = useCallback(
205
- ({ key }) => {
206
- if (isArrowKey(key)) {
207
- const { endBox, endPos, startBox } = stateRef.current;
208
- if (isNullCellBox(startBox)) {
209
- createCellBlock("keyboard");
210
- }
211
- const nextCell = getNextCellPos(key, endPos, columnCount, rowCount);
212
- stateRef.current.endPos = nextCell;
213
- const cell = getTableCell(containerRef, nextCell);
214
- stateRef.current.endCell = cell;
215
- setElementBox(cell, endBox);
216
- updateCellBlockClassName(stateRef.current);
217
- }
218
- },
219
- [columnCount, containerRef, createCellBlock, rowCount]
220
- );
221
- const handleKeyDown = useCallback(
222
- (evt) => {
223
- console.log(
224
- `[useCellBlockSelection] handleKeyDown (only interested in Shift key)`
225
- );
226
- if (evt.key === "Shift") {
227
- initializeStateRef();
228
- const cell = queryClosest(evt.target, ".vuuTableCell");
229
- if (cell) {
230
- const startPos = getAriaCellPos(cell);
231
- stateRef.current.startPos = startPos;
232
- stateRef.current.endPos = clone(startPos);
233
- const { current: state } = stateRef;
234
- state.startCell = cell;
235
- window.addEventListener("keydown", handleNativeKeyDown, {
236
- capture: true
237
- });
238
- window.addEventListener("keyup", handleNativeKeyUp, {
239
- capture: true
240
- });
241
- evt.preventDefault();
242
- }
243
- }
244
- },
245
- [handleNativeKeyDown, handleNativeKeyUp, initializeStateRef]
246
- );
247
- return {
248
- cellBlock,
249
- onKeyDown: allowCellBlockSelection ? handleKeyDown : void 0,
250
- onMouseDown: allowCellBlockSelection ? handleMouseDown : void 0
251
- };
252
- };
253
-
254
- export { useCellBlockSelection };
255
- //# sourceMappingURL=useCellBlockSelection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCellBlockSelection.js","sources":["../../../../packages/vuu-table/src/cell-block/useCellBlockSelection.tsx"],"sourcesContent":["import { isArrowKey, queryClosest } from \"@vuu-ui/vuu-utils\";\nimport {\n KeyboardEventHandler,\n MouseEventHandler,\n ReactElement,\n RefCallback,\n RefObject,\n useCallback,\n useRef,\n useState,\n} from \"react\";\nimport {\n getAriaCellPos,\n getNextCellPos,\n getTableCell,\n} from \"../table-dom-utils\";\nimport { CellBlock } from \"./CellBlock\";\nimport {\n PosTuple,\n RefState,\n TableCellBlock,\n getTableCellBlock,\n getTextFromCells,\n isNullCellBox,\n outsideBox,\n refState,\n setElementBox,\n updateCellBlockClassName,\n} from \"./cellblock-utils\";\n\nconst clone = (posTuple: PosTuple) => posTuple.slice() as PosTuple;\n\ntype NativeKeyboardHandler = (evt: KeyboardEvent) => void;\ntype NativeMouseHandler = (evt: MouseEvent) => void;\ntype MouseHandlers = {\n mouseMove: NativeMouseHandler;\n mouseMovePreDrag: NativeMouseHandler;\n mouseUp: NativeMouseHandler;\n mouseUpPreDrag: NativeMouseHandler;\n};\n\nconst NullHandler = () => console.error(\"no handler installed\");\nconst mouseHandlers: MouseHandlers = {\n mouseMove: NullHandler,\n mouseMovePreDrag: NullHandler,\n mouseUp: NullHandler,\n mouseUpPreDrag: NullHandler,\n};\n\ntype MouseOperation = keyof typeof mouseHandlers;\n\nconst mouseType = (name: string) =>\n name.startsWith(\"mouseMove\") ? \"mousemove\" : \"mouseup\";\n\nconst DRAG_THRESHOLD = 5;\n\nexport interface CellblockSelectionHookProps {\n allowCellBlockSelection?: boolean;\n columnCount?: number;\n containerRef: RefObject<HTMLElement | null>;\n onSelectCellBlock?: (cellBlock: TableCellBlock) => void;\n rowCount?: number;\n}\n\nexport const useCellBlockSelection = ({\n allowCellBlockSelection,\n columnCount = 0,\n containerRef,\n onSelectCellBlock,\n rowCount = 0,\n}: CellblockSelectionHookProps) => {\n const [cellBlock, setCellBlock] = useState<ReactElement | null>(null);\n const stateRef = useRef<RefState>(refState);\n const handlersRef = useRef<MouseHandlers>(mouseHandlers);\n\n const handleCopy = useCallback(async () => {\n const { startCell, endCell } = stateRef.current;\n if (startCell && endCell) {\n const tsvText = getTextFromCells(startCell, endCell);\n const type = \"text/plain\";\n const blob = new Blob([tsvText], { type });\n const data = [new ClipboardItem({ [type]: blob })];\n await navigator.clipboard.write(data);\n }\n }, []);\n\n const cellBlockRef = useCallback<RefCallback<HTMLDivElement>>((el) => {\n stateRef.current.cellBlock = el;\n }, []);\n\n const createCellBlock = useCallback(\n (method: \"mouse\" | \"keyboard\" = \"mouse\") => {\n const { startBox, startCell } = stateRef.current;\n if (startCell) {\n const table = queryClosest<HTMLDivElement>(startCell, \".vuuTable\");\n if (table) {\n table.classList.add(`vuu-cellblock-select-in-progress-${method}`);\n }\n setElementBox(startCell, startBox);\n startCell.classList.add(\"vuu-cellblock-start\");\n setCellBlock(<CellBlock onCopy={handleCopy} ref={cellBlockRef} />);\n }\n },\n [cellBlockRef, handleCopy],\n );\n\n const initializeStateRef = useCallback(() => {\n const { cellBlock, cellBlockClassName, startCell, endCell } =\n stateRef.current;\n if (startCell) {\n startCell.classList.remove(\"vuu-cellblock-start\");\n }\n if (endCell) {\n endCell.classList.remove(\"vuu-cellblock-end\");\n }\n if (cellBlock?.classList.contains(cellBlockClassName)) {\n cellBlock.classList.remove(cellBlockClassName);\n }\n\n const { endBox, startBox } = refState;\n\n stateRef.current = {\n ...refState,\n cellBlock,\n endBox: { ...endBox },\n endPos: [-1, -1],\n startBox: { ...startBox },\n startPos: [-1, -1],\n };\n }, []);\n\n const addMouseListener = useCallback(\n (mouseOperation: MouseOperation, handler: NativeMouseHandler) => {\n window.addEventListener(mouseType(mouseOperation), handler);\n handlersRef.current[mouseOperation] = handler;\n },\n [],\n );\n\n const removeMouseListener = useCallback((name: MouseOperation) => {\n window.removeEventListener(mouseType(name), handlersRef.current[name]);\n }, []);\n\n handlersRef.current.mouseMove = useCallback((evt: MouseEvent) => {\n const { clientX: x, clientY: y } = evt;\n const { endBox, startBox } = stateRef.current;\n if (outsideBox(startBox, x, y) && outsideBox(endBox, x, y)) {\n const cell = queryClosest<HTMLDivElement>(\n evt.target,\n \".vuuTableCell, .vuuCellBlock\",\n );\n if (cell?.classList.contains(\"vuuTableCell\")) {\n setElementBox(cell, endBox);\n stateRef.current.endCell = cell;\n updateCellBlockClassName(stateRef.current);\n }\n }\n }, []);\n\n handlersRef.current.mouseUp = useCallback(\n (evt: MouseEvent) => {\n removeMouseListener(\"mouseMove\");\n removeMouseListener(\"mouseUp\");\n\n const { cellBlock, endCell, startCell } = stateRef.current;\n\n const table = queryClosest<HTMLDivElement>(evt.target, \".vuuTable\");\n endCell?.classList.add(\"vuu-cellblock-end\");\n if (table) {\n table.classList.remove(\"vuu-cellblock-select-in-progress-mouse\");\n }\n\n if (startCell && endCell) {\n const tableCellBlock = getTableCellBlock(startCell, endCell);\n onSelectCellBlock?.(tableCellBlock);\n }\n\n if (cellBlock) {\n cellBlock.focus();\n }\n },\n [onSelectCellBlock, removeMouseListener],\n );\n\n handlersRef.current.mouseMovePreDrag = useCallback(\n (evt: MouseEvent) => {\n const { current: state } = stateRef;\n const { mouseStartX, mouseStartY } = state;\n\n const x = (state.mousePosX = evt.clientX);\n const y = (state.mousePosY = evt.clientY);\n\n const distance = Math.max(\n Math.abs(x - mouseStartX),\n Math.abs(y - mouseStartY),\n );\n\n if (distance > DRAG_THRESHOLD) {\n createCellBlock(\"mouse\");\n\n const { mouseMove, mouseUp } = handlersRef.current;\n removeMouseListener(\"mouseMovePreDrag\");\n removeMouseListener(\"mouseUpPreDrag\");\n addMouseListener(\"mouseMove\", mouseMove);\n addMouseListener(\"mouseUp\", mouseUp);\n }\n },\n [addMouseListener, createCellBlock, removeMouseListener],\n );\n\n handlersRef.current.mouseUpPreDrag = useCallback(() => {\n removeMouseListener(\"mouseMovePreDrag\");\n removeMouseListener(\"mouseUpPreDrag\");\n }, [removeMouseListener]);\n\n const handleNativeMouseOver = useCallback((evt: MouseEvent) => {\n const cell = queryClosest<HTMLDivElement>(evt.target, \".vuuTableCell\");\n if (cell) {\n stateRef.current.endPos = getAriaCellPos(cell);\n stateRef.current.endCell?.classList.remove(\"vuu-cellblock-end\");\n stateRef.current.endCell = cell;\n setElementBox(cell, stateRef.current.endBox);\n updateCellBlockClassName(stateRef.current);\n\n cell?.classList.add(\"vuu-cellblock-end\");\n }\n }, []);\n\n const handleNativeMouseUp = useCallback(() => {\n window.removeEventListener(\"mouseover\", handleNativeMouseOver);\n }, [handleNativeMouseOver]);\n\n const handleMouseDown = useCallback<MouseEventHandler>(\n (evt) => {\n if (evt.button === 0) {\n initializeStateRef();\n const { current: state } = stateRef;\n const cell = queryClosest<HTMLDivElement>(evt.target, \".vuuTableCell\");\n if (cell) {\n state.startCell = cell;\n state.mouseStartX = evt.clientX;\n state.mouseStartY = evt.clientY;\n\n const { mouseMovePreDrag, mouseUpPreDrag } = handlersRef.current;\n addMouseListener(\"mouseMovePreDrag\", mouseMovePreDrag);\n addMouseListener(\"mouseUpPreDrag\", mouseUpPreDrag);\n console.log(\"register mouse enter\");\n window.addEventListener(\"mouseover\", handleNativeMouseOver);\n window.addEventListener(\"mouseup\", handleNativeMouseUp);\n }\n }\n },\n [\n addMouseListener,\n handleNativeMouseOver,\n handleNativeMouseUp,\n initializeStateRef,\n ],\n );\n\n const nativeKeyDownHandlerRef = useRef<NativeKeyboardHandler>(NullHandler);\n\n const handleNativeKeyUp = useCallback((evt: KeyboardEvent) => {\n if (evt.key === \"Shift\") {\n const { endCell } = stateRef.current;\n const table = queryClosest<HTMLDivElement>(evt.target, \".vuuTable\");\n endCell?.classList.add(\"vuu-cellblock-end\");\n if (table) {\n table.classList.remove(\"vuu-cellblock-select-in-progress-keyboard\");\n }\n\n window.removeEventListener(\"keydown\", nativeKeyDownHandlerRef.current, {\n capture: true,\n });\n window.removeEventListener(\"keyup\", handleNativeKeyUp, {\n capture: true,\n });\n }\n }, []);\n\n const handleNativeKeyDown = (nativeKeyDownHandlerRef.current = useCallback(\n ({ key }: KeyboardEvent) => {\n if (isArrowKey(key)) {\n const { endBox, endPos, startBox } = stateRef.current;\n if (isNullCellBox(startBox)) {\n createCellBlock(\"keyboard\");\n }\n const nextCell = getNextCellPos(key, endPos, columnCount, rowCount);\n stateRef.current.endPos = nextCell;\n const cell = getTableCell(containerRef, nextCell);\n stateRef.current.endCell = cell as HTMLDivElement;\n setElementBox(cell, endBox);\n updateCellBlockClassName(stateRef.current);\n }\n },\n [columnCount, containerRef, createCellBlock, rowCount],\n ));\n const handleKeyDown = useCallback<KeyboardEventHandler>(\n (evt) => {\n console.log(\n `[useCellBlockSelection] handleKeyDown (only interested in Shift key)`,\n );\n if (evt.key === \"Shift\") {\n initializeStateRef();\n const cell = queryClosest<HTMLDivElement>(evt.target, \".vuuTableCell\");\n if (cell) {\n const startPos = getAriaCellPos(cell);\n stateRef.current.startPos = startPos;\n stateRef.current.endPos = clone(startPos);\n const { current: state } = stateRef;\n state.startCell = cell;\n\n window.addEventListener(\"keydown\", handleNativeKeyDown, {\n capture: true,\n });\n window.addEventListener(\"keyup\", handleNativeKeyUp, {\n capture: true,\n });\n\n evt.preventDefault();\n }\n }\n },\n [handleNativeKeyDown, handleNativeKeyUp, initializeStateRef],\n );\n\n return {\n cellBlock,\n onKeyDown: allowCellBlockSelection ? handleKeyDown : undefined,\n onMouseDown: allowCellBlockSelection ? handleMouseDown : undefined,\n };\n};\n"],"names":["cellBlock"],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- var checkboxCellCss = ".vuuCheckboxCell-checkbox {\n border: solid 2px transparent;\n input:focus-visible + .saltCheckboxIcon {\n outline: none;\n }\n}\n\n.vuuTableCell-editable .vuuCheckboxCell-checkbox:focus-within {\n border: solid 2px var(--salt-focused-outlineColor);\n}\n";
2
-
3
- export { checkboxCellCss as default };
4
- //# sourceMappingURL=CheckboxCell.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,65 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { memo, useCallback } from 'react';
3
- import { Checkbox } from '@salt-ds/core';
4
- import { isRpcSuccess, dispatchCustomEvent, dataColumnAndKeyUnchanged, registerComponent } from '@vuu-ui/vuu-utils';
5
- import { useComponentCssInjection } from '@salt-ds/styles';
6
- import { useWindow } from '@salt-ds/window';
7
- import checkboxCellCss from './CheckboxCell.css.js';
8
-
9
- const classBase = "vuuCheckboxCell";
10
- const CheckboxCell = memo(
11
- ({ column, dataRow, onEdit }) => {
12
- const targetWindow = useWindow();
13
- useComponentCssInjection({
14
- testId: "vuu-checkbox-cell",
15
- css: checkboxCellCss,
16
- window: targetWindow
17
- });
18
- const isChecked = !!dataRow[column.name];
19
- const handleCommit = useCallback(
20
- (value) => async (evt) => {
21
- const res = await onEdit?.(
22
- { previousValue: isChecked, value },
23
- "commit"
24
- );
25
- if (isRpcSuccess(res)) {
26
- dispatchCustomEvent(evt.target, "vuu-commit");
27
- }
28
- return res;
29
- },
30
- [isChecked, onEdit]
31
- );
32
- const handleKeyDown = useCallback(
33
- async (evt) => {
34
- if (evt.key === "Enter") {
35
- const res = await onEdit?.(
36
- { previousValue: isChecked, value: !isChecked },
37
- "commit"
38
- );
39
- if (isRpcSuccess(res)) {
40
- dispatchCustomEvent(evt.target, "vuu-commit");
41
- }
42
- }
43
- },
44
- [isChecked, onEdit]
45
- );
46
- const className = `${classBase}-checkbox`;
47
- return column.editable ? /* @__PURE__ */ jsx(
48
- Checkbox,
49
- {
50
- checked: isChecked,
51
- className,
52
- onClick: handleCommit(!isChecked),
53
- onKeyDown: handleKeyDown
54
- }
55
- ) : /* @__PURE__ */ jsx(Checkbox, { checked: isChecked, className, disabled: true });
56
- },
57
- dataColumnAndKeyUnchanged
58
- );
59
- CheckboxCell.displayName = "CheckboxCell";
60
- registerComponent("checkbox-cell", CheckboxCell, "cell-renderer", {
61
- serverDataType: "boolean"
62
- });
63
-
64
- export { CheckboxCell };
65
- //# sourceMappingURL=CheckboxCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxCell.js","sources":["../../../../../packages/vuu-table/src/cell-renderers/checkbox-cell/CheckboxCell.tsx"],"sourcesContent":["import { MouseEvent, KeyboardEventHandler, memo, useCallback } from \"react\";\nimport { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { Checkbox } from \"@salt-ds/core\";\nimport {\n dataColumnAndKeyUnchanged,\n dispatchCustomEvent,\n isRpcSuccess,\n registerComponent,\n} from \"@vuu-ui/vuu-utils\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport checkboxCellCss from \"./CheckboxCell.css\";\n\nconst classBase = \"vuuCheckboxCell\";\n\nexport const CheckboxCell = memo(\n ({ column, dataRow, onEdit }: TableCellRendererProps) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-cell\",\n css: checkboxCellCss,\n window: targetWindow,\n });\n\n const isChecked = !!dataRow[column.name];\n\n const handleCommit = useCallback(\n (value: boolean) => async (evt: MouseEvent) => {\n const res = await onEdit?.(\n { previousValue: isChecked, value },\n \"commit\",\n );\n if (isRpcSuccess(res)) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n return res;\n },\n [isChecked, onEdit],\n );\n\n const handleKeyDown = useCallback<KeyboardEventHandler>(\n async (evt) => {\n if (evt.key === \"Enter\") {\n const res = await onEdit?.(\n { previousValue: isChecked, value: !isChecked },\n \"commit\",\n );\n if (isRpcSuccess(res)) {\n dispatchCustomEvent(evt.target as HTMLElement, \"vuu-commit\");\n }\n }\n },\n [isChecked, onEdit],\n );\n\n const className = `${classBase}-checkbox`;\n\n return column.editable ? (\n <Checkbox\n checked={isChecked}\n className={className}\n onClick={handleCommit(!isChecked)}\n onKeyDown={handleKeyDown}\n />\n ) : (\n <Checkbox checked={isChecked} className={className} disabled={true} />\n );\n },\n dataColumnAndKeyUnchanged,\n);\nCheckboxCell.displayName = \"CheckboxCell\";\n\nregisterComponent(\"checkbox-cell\", CheckboxCell, \"cell-renderer\", {\n serverDataType: \"boolean\",\n});\n"],"names":[],"mappings":";;;;;;;;AAcA,MAAM,SAAY,GAAA,iBAAA;AAEX,MAAM,YAAe,GAAA,IAAA;AAAA,EAC1B,CAAC,EAAE,MAAQ,EAAA,OAAA,EAAS,QAAqC,KAAA;AACvD,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,mBAAA;AAAA,MACR,GAAK,EAAA,eAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAA,MAAM,SAAY,GAAA,CAAC,CAAC,OAAA,CAAQ,OAAO,IAAI,CAAA;AAEvC,IAAA,MAAM,YAAe,GAAA,WAAA;AAAA,MACnB,CAAC,KAAmB,KAAA,OAAO,GAAoB,KAAA;AAC7C,QAAA,MAAM,MAAM,MAAM,MAAA;AAAA,UAChB,EAAE,aAAe,EAAA,SAAA,EAAW,KAAM,EAAA;AAAA,UAClC;AAAA,SACF;AACA,QAAI,IAAA,YAAA,CAAa,GAAG,CAAG,EAAA;AACrB,UAAoB,mBAAA,CAAA,GAAA,CAAI,QAAuB,YAAY,CAAA;AAAA;AAE7D,QAAO,OAAA,GAAA;AAAA,OACT;AAAA,MACA,CAAC,WAAW,MAAM;AAAA,KACpB;AAEA,IAAA,MAAM,aAAgB,GAAA,WAAA;AAAA,MACpB,OAAO,GAAQ,KAAA;AACb,QAAI,IAAA,GAAA,CAAI,QAAQ,OAAS,EAAA;AACvB,UAAA,MAAM,MAAM,MAAM,MAAA;AAAA,YAChB,EAAE,aAAA,EAAe,SAAW,EAAA,KAAA,EAAO,CAAC,SAAU,EAAA;AAAA,YAC9C;AAAA,WACF;AACA,UAAI,IAAA,YAAA,CAAa,GAAG,CAAG,EAAA;AACrB,YAAoB,mBAAA,CAAA,GAAA,CAAI,QAAuB,YAAY,CAAA;AAAA;AAC7D;AACF,OACF;AAAA,MACA,CAAC,WAAW,MAAM;AAAA,KACpB;AAEA,IAAM,MAAA,SAAA,GAAY,GAAG,SAAS,CAAA,SAAA,CAAA;AAE9B,IAAA,OAAO,OAAO,QACZ,mBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,OAAS,EAAA,SAAA;AAAA,QACT,SAAA;AAAA,QACA,OAAA,EAAS,YAAa,CAAA,CAAC,SAAS,CAAA;AAAA,QAChC,SAAW,EAAA;AAAA;AAAA,wBAGZ,GAAA,CAAA,QAAA,EAAA,EAAS,SAAS,SAAW,EAAA,SAAA,EAAsB,UAAU,IAAM,EAAA,CAAA;AAAA,GAExE;AAAA,EACA;AACF;AACA,YAAA,CAAa,WAAc,GAAA,cAAA;AAE3B,iBAAkB,CAAA,eAAA,EAAiB,cAAc,eAAiB,EAAA;AAAA,EAChE,cAAgB,EAAA;AAClB,CAAC,CAAA;;;;"}
@@ -1,4 +0,0 @@
1
- var checkboxRowSelectorCss = ".vuuTableCell {\n .vuuCheckboxRowSelector {\n align-items: center;\n height: 100%;\n\n .saltCheckboxIcon {\n margin-top: 0;\n }\n }\n .vuuCheckboxRowSelectorIcon {\n margin-top: calc(var(--row-height) / 2 - 6px);\n }\n}\n";
2
-
3
- export { checkboxRowSelectorCss as default };
4
- //# sourceMappingURL=CheckboxRowSelectorCell.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxRowSelectorCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -1,49 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import { registerComponent } from '@vuu-ui/vuu-utils';
3
- import { Checkbox } from '@salt-ds/core';
4
- import { useComponentCssInjection } from '@salt-ds/styles';
5
- import { useWindow } from '@salt-ds/window';
6
- import checkboxRowSelectorCss from './CheckboxRowSelectorCell.css.js';
7
- import { useCallback } from 'react';
8
-
9
- const inputProps = {
10
- "aria-label": "Press space to select row"
11
- };
12
- const CheckboxRowSelectorCell = ({
13
- dataRow
14
- }) => {
15
- const targetWindow = useWindow();
16
- useComponentCssInjection({
17
- testId: "vuu-checkbox-row-selector-cell",
18
- css: checkboxRowSelectorCss,
19
- window: targetWindow
20
- });
21
- const isChecked = !!dataRow.isSelected;
22
- const handleClick = useCallback((e) => {
23
- const target = e.target;
24
- if (target.tagName !== "INPUT") {
25
- e.stopPropagation();
26
- }
27
- }, []);
28
- return /* @__PURE__ */ jsx(
29
- Checkbox,
30
- {
31
- checked: isChecked,
32
- className: "vuuCheckboxRowSelector",
33
- inputProps,
34
- onClick: handleClick
35
- }
36
- );
37
- };
38
- CheckboxRowSelectorCell.displayName = "CheckboxCell";
39
- registerComponent(
40
- "checkbox-row-selector-cell",
41
- CheckboxRowSelectorCell,
42
- "cell-renderer",
43
- {
44
- serverDataType: "boolean"
45
- }
46
- );
47
-
48
- export { CheckboxRowSelectorCell };
49
- //# sourceMappingURL=CheckboxRowSelectorCell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CheckboxRowSelectorCell.js","sources":["../../../../../packages/vuu-table/src/cell-renderers/checkbox-row-selector/CheckboxRowSelectorCell.tsx"],"sourcesContent":["import { TableCellRendererProps } from \"@vuu-ui/vuu-table-types\";\nimport { registerComponent } from \"@vuu-ui/vuu-utils\";\nimport { Checkbox } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport checkboxRowSelectorCss from \"./CheckboxRowSelectorCell.css\";\nimport { MouseEventHandler, useCallback } from \"react\";\n\nconst inputProps = {\n \"aria-label\": \"Press space to select row\",\n};\n\nexport const CheckboxRowSelectorCell: React.FC<TableCellRendererProps> = ({\n dataRow,\n}) => {\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"vuu-checkbox-row-selector-cell\",\n css: checkboxRowSelectorCss,\n window: targetWindow,\n });\n\n const isChecked = !!dataRow.isSelected;\n\n const handleClick = useCallback<MouseEventHandler>((e) => {\n const target = e.target as HTMLElement;\n // Because of the label, click will fire twice.\n if (target.tagName !== \"INPUT\") {\n e.stopPropagation();\n }\n }, []);\n\n return (\n <Checkbox\n checked={isChecked}\n className=\"vuuCheckboxRowSelector\"\n inputProps={inputProps}\n onClick={handleClick}\n />\n );\n};\nCheckboxRowSelectorCell.displayName = \"CheckboxCell\";\n\nregisterComponent(\n \"checkbox-row-selector-cell\",\n CheckboxRowSelectorCell,\n \"cell-renderer\",\n {\n serverDataType: \"boolean\",\n },\n);\n"],"names":[],"mappings":";;;;;;;;AASA,MAAM,UAAa,GAAA;AAAA,EACjB,YAAc,EAAA;AAChB,CAAA;AAEO,MAAM,0BAA4D,CAAC;AAAA,EACxE;AACF,CAAM,KAAA;AACJ,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gCAAA;AAAA,IACR,GAAK,EAAA,sBAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAM,MAAA,SAAA,GAAY,CAAC,CAAC,OAAQ,CAAA,UAAA;AAE5B,EAAM,MAAA,WAAA,GAAc,WAA+B,CAAA,CAAC,CAAM,KAAA;AACxD,IAAA,MAAM,SAAS,CAAE,CAAA,MAAA;AAEjB,IAAI,IAAA,MAAA,CAAO,YAAY,OAAS,EAAA;AAC9B,MAAA,CAAA,CAAE,eAAgB,EAAA;AAAA;AACpB,GACF,EAAG,EAAE,CAAA;AAEL,EACE,uBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,OAAS,EAAA,SAAA;AAAA,MACT,SAAU,EAAA,wBAAA;AAAA,MACV,UAAA;AAAA,MACA,OAAS,EAAA;AAAA;AAAA,GACX;AAEJ;AACA,uBAAA,CAAwB,WAAc,GAAA,cAAA;AAEtC,iBAAA;AAAA,EACE,4BAAA;AAAA,EACA,uBAAA;AAAA,EACA,eAAA;AAAA,EACA;AAAA,IACE,cAAgB,EAAA;AAAA;AAEpB,CAAA;;;;"}
@@ -1,4 +0,0 @@
1
- var inputCellCss = ".vuuTableCell.vuuTableCell-editable {\n .vuuTableInputCell.saltInput-primary {\n --salt-focused-outlineStyle: none;\n --saltInput-height: var(--vuu-table-embedded-control-height);\n --saltInput-minHeight: var(--saltInput-height);\n border-radius: 2px;\n font-weight: 500;\n }\n}\n\n.vuuTableInputCell {\n --edit-indicator-color: var(--salt-editable-borderColor);\n}\n.vuuTableInputCell-icon {\n --vuu-icon-height: 13px;\n --vuu-icon-left: 0;\n --vuu-icon-size: 15px;\n --vuu-icon-width: 12px;\n border-radius: 10px;\n cursor: pointer;\n}\n\n.vuuTableInputCell-error.saltInput-bordered.saltInput {\n border-color: var(--salt-status-error-foreground-informative);\n .saltInput-startAdornmentContainer {\n .vuuTableInputCell-icon {\n --vuu-icon-color: var(--salt-status-error-bold-background);\n }\n }\n .saltInput-endAdornmentContainer {\n .vuuTableInputCell-icon {\n --vuu-icon-color: var(--salt-status-error-bold-background);\n }\n }\n}\n.vuuTableInputCell-warning.saltInput-bordered.saltInput {\n border-color: var(--salt-status-warning-foreground-informative);\n .saltInput-startAdornmentContainer {\n .vuuTableInputCell-icon {\n --vuu-icon-color: var(--salt-status-warning-bold-background);\n }\n }\n .saltInput-endAdornmentContainer {\n .vuuTableInputCell-icon {\n --vuu-icon-color: var(--salt-status-warning-bold-background);\n }\n }\n}\n\n.vuuTableCell-right {\n .saltInput-input {\n text-align: right;\n }\n}\n\n.vuuTableInputCell-edited {\n border-left: solid var(--vuuTableInputCell-edited-color, var(--edit-indicator-color)) 4px !important;\n}\n\n.vuuTableInputCell-error {\n --edit-indicator-color: var(--salt-status-error-foreground-informative);\n outline: var(--vuuTableCell-outline, solid var(--salt-status-error-foreground-informative) 2px);\n outline-offset: -2px;\n}\n\n.vuuTableInputCell-warning {\n --edit-indicator-color: var(--salt-status-warning-foreground-informative);\n outline: var(--vuuTableCell-outline, solid var(--salt-status-warning-foreground-informative) 2px);\n outline-offset: -2px;\n}\n";
2
-
3
- export { inputCellCss as default };
4
- //# sourceMappingURL=InputCell.css.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputCell.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}