@vuu-ui/vuu-table 0.8.34 → 0.8.35

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 (180) hide show
  1. package/package.json +8 -10
  2. package/cjs/Row.css +0 -115
  3. package/cjs/Row.js +0 -115
  4. package/cjs/Row.js.map +0 -1
  5. package/cjs/Table.css +0 -151
  6. package/cjs/Table.js +0 -276
  7. package/cjs/Table.js.map +0 -1
  8. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.css +0 -5
  9. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js +0 -33
  10. package/cjs/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  11. package/cjs/cell-renderers/input-cell/InputCell.css +0 -31
  12. package/cjs/cell-renderers/input-cell/InputCell.js +0 -49
  13. package/cjs/cell-renderers/input-cell/InputCell.js.map +0 -1
  14. package/cjs/cell-renderers/toggle-cell/ToggleCell.css +0 -32
  15. package/cjs/cell-renderers/toggle-cell/ToggleCell.js +0 -59
  16. package/cjs/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  17. package/cjs/column-header-pill/ColumnHeaderPill.css +0 -30
  18. package/cjs/column-header-pill/ColumnHeaderPill.js +0 -44
  19. package/cjs/column-header-pill/ColumnHeaderPill.js.map +0 -1
  20. package/cjs/column-header-pill/GroupColumnPill.css +0 -7
  21. package/cjs/column-header-pill/GroupColumnPill.js +0 -20
  22. package/cjs/column-header-pill/GroupColumnPill.js.map +0 -1
  23. package/cjs/column-header-pill/SortIndicator.css +0 -7
  24. package/cjs/column-header-pill/SortIndicator.js +0 -18
  25. package/cjs/column-header-pill/SortIndicator.js.map +0 -1
  26. package/cjs/column-menu/ColumnMenu.css +0 -21
  27. package/cjs/column-menu/ColumnMenu.js +0 -21
  28. package/cjs/column-menu/ColumnMenu.js.map +0 -1
  29. package/cjs/column-resizing/ColumnResizer.css +0 -28
  30. package/cjs/column-resizing/ColumnResizer.js +0 -63
  31. package/cjs/column-resizing/ColumnResizer.js.map +0 -1
  32. package/cjs/column-resizing/useTableColumnResize.js +0 -55
  33. package/cjs/column-resizing/useTableColumnResize.js.map +0 -1
  34. package/cjs/context-menu/buildContextMenuDescriptors.js +0 -214
  35. package/cjs/context-menu/buildContextMenuDescriptors.js.map +0 -1
  36. package/cjs/context-menu/useHandleTableContextMenu.js +0 -81
  37. package/cjs/context-menu/useHandleTableContextMenu.js.map +0 -1
  38. package/cjs/header-cell/GroupHeaderCell.css +0 -65
  39. package/cjs/header-cell/GroupHeaderCell.js +0 -108
  40. package/cjs/header-cell/GroupHeaderCell.js.map +0 -1
  41. package/cjs/header-cell/HeaderCell.css +0 -146
  42. package/cjs/header-cell/HeaderCell.js +0 -100
  43. package/cjs/header-cell/HeaderCell.js.map +0 -1
  44. package/cjs/index.js.map +0 -1
  45. package/cjs/moving-window.js +0 -61
  46. package/cjs/moving-window.js.map +0 -1
  47. package/cjs/table-cell/TableCell.css +0 -41
  48. package/cjs/table-cell/TableCell.js +0 -63
  49. package/cjs/table-cell/TableCell.js.map +0 -1
  50. package/cjs/table-cell/TableGroupCell.css +0 -26
  51. package/cjs/table-cell/TableGroupCell.js +0 -45
  52. package/cjs/table-cell/TableGroupCell.js.map +0 -1
  53. package/cjs/table-config.js +0 -25
  54. package/cjs/table-config.js.map +0 -1
  55. package/cjs/table-dom-utils.js +0 -60
  56. package/cjs/table-dom-utils.js.map +0 -1
  57. package/cjs/table-header/TableHeader.js +0 -87
  58. package/cjs/table-header/TableHeader.js.map +0 -1
  59. package/cjs/table-header/useTableHeader.js +0 -72
  60. package/cjs/table-header/useTableHeader.js.map +0 -1
  61. package/cjs/useCell.js +0 -28
  62. package/cjs/useCell.js.map +0 -1
  63. package/cjs/useCellEditing.js +0 -79
  64. package/cjs/useCellEditing.js.map +0 -1
  65. package/cjs/useControlledTableNavigation.js +0 -43
  66. package/cjs/useControlledTableNavigation.js.map +0 -1
  67. package/cjs/useDataSource.js +0 -104
  68. package/cjs/useDataSource.js.map +0 -1
  69. package/cjs/useInitialValue.js +0 -11
  70. package/cjs/useInitialValue.js.map +0 -1
  71. package/cjs/useKeyboardNavigation.js +0 -304
  72. package/cjs/useKeyboardNavigation.js.map +0 -1
  73. package/cjs/useRowClassNameGenerators.js +0 -34
  74. package/cjs/useRowClassNameGenerators.js.map +0 -1
  75. package/cjs/useRowHeight.js +0 -43
  76. package/cjs/useRowHeight.js.map +0 -1
  77. package/cjs/useSelection.js +0 -64
  78. package/cjs/useSelection.js.map +0 -1
  79. package/cjs/useTable.js +0 -553
  80. package/cjs/useTable.js.map +0 -1
  81. package/cjs/useTableAndColumnSettings.js +0 -128
  82. package/cjs/useTableAndColumnSettings.js.map +0 -1
  83. package/cjs/useTableContextMenu.js +0 -42
  84. package/cjs/useTableContextMenu.js.map +0 -1
  85. package/cjs/useTableModel.js +0 -297
  86. package/cjs/useTableModel.js.map +0 -1
  87. package/cjs/useTableScroll.js +0 -396
  88. package/cjs/useTableScroll.js.map +0 -1
  89. package/cjs/useTableViewport.js +0 -122
  90. package/cjs/useTableViewport.js.map +0 -1
  91. package/esm/Row.css +0 -115
  92. package/esm/Row.js +0 -112
  93. package/esm/Row.js.map +0 -1
  94. package/esm/Table.css +0 -151
  95. package/esm/Table.js +0 -274
  96. package/esm/Table.js.map +0 -1
  97. package/esm/cell-renderers/checkbox-cell/CheckboxCell.css +0 -5
  98. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js +0 -31
  99. package/esm/cell-renderers/checkbox-cell/CheckboxCell.js.map +0 -1
  100. package/esm/cell-renderers/input-cell/InputCell.css +0 -31
  101. package/esm/cell-renderers/input-cell/InputCell.js +0 -47
  102. package/esm/cell-renderers/input-cell/InputCell.js.map +0 -1
  103. package/esm/cell-renderers/toggle-cell/ToggleCell.css +0 -32
  104. package/esm/cell-renderers/toggle-cell/ToggleCell.js +0 -57
  105. package/esm/cell-renderers/toggle-cell/ToggleCell.js.map +0 -1
  106. package/esm/column-header-pill/ColumnHeaderPill.css +0 -30
  107. package/esm/column-header-pill/ColumnHeaderPill.js +0 -42
  108. package/esm/column-header-pill/ColumnHeaderPill.js.map +0 -1
  109. package/esm/column-header-pill/GroupColumnPill.css +0 -7
  110. package/esm/column-header-pill/GroupColumnPill.js +0 -18
  111. package/esm/column-header-pill/GroupColumnPill.js.map +0 -1
  112. package/esm/column-header-pill/SortIndicator.css +0 -7
  113. package/esm/column-header-pill/SortIndicator.js +0 -16
  114. package/esm/column-header-pill/SortIndicator.js.map +0 -1
  115. package/esm/column-menu/ColumnMenu.css +0 -21
  116. package/esm/column-menu/ColumnMenu.js +0 -19
  117. package/esm/column-menu/ColumnMenu.js.map +0 -1
  118. package/esm/column-resizing/ColumnResizer.css +0 -28
  119. package/esm/column-resizing/ColumnResizer.js +0 -61
  120. package/esm/column-resizing/ColumnResizer.js.map +0 -1
  121. package/esm/column-resizing/useTableColumnResize.js +0 -53
  122. package/esm/column-resizing/useTableColumnResize.js.map +0 -1
  123. package/esm/context-menu/buildContextMenuDescriptors.js +0 -212
  124. package/esm/context-menu/buildContextMenuDescriptors.js.map +0 -1
  125. package/esm/context-menu/useHandleTableContextMenu.js +0 -79
  126. package/esm/context-menu/useHandleTableContextMenu.js.map +0 -1
  127. package/esm/header-cell/GroupHeaderCell.css +0 -65
  128. package/esm/header-cell/GroupHeaderCell.js +0 -106
  129. package/esm/header-cell/GroupHeaderCell.js.map +0 -1
  130. package/esm/header-cell/HeaderCell.css +0 -146
  131. package/esm/header-cell/HeaderCell.js +0 -98
  132. package/esm/header-cell/HeaderCell.js.map +0 -1
  133. package/esm/index.js +0 -14
  134. package/esm/index.js.map +0 -1
  135. package/esm/moving-window.js +0 -59
  136. package/esm/moving-window.js.map +0 -1
  137. package/esm/table-cell/TableCell.css +0 -41
  138. package/esm/table-cell/TableCell.js +0 -61
  139. package/esm/table-cell/TableCell.js.map +0 -1
  140. package/esm/table-cell/TableGroupCell.css +0 -26
  141. package/esm/table-cell/TableGroupCell.js +0 -43
  142. package/esm/table-cell/TableGroupCell.js.map +0 -1
  143. package/esm/table-config.js +0 -23
  144. package/esm/table-config.js.map +0 -1
  145. package/esm/table-dom-utils.js +0 -51
  146. package/esm/table-dom-utils.js.map +0 -1
  147. package/esm/table-header/TableHeader.js +0 -85
  148. package/esm/table-header/TableHeader.js.map +0 -1
  149. package/esm/table-header/useTableHeader.js +0 -70
  150. package/esm/table-header/useTableHeader.js.map +0 -1
  151. package/esm/useCell.js +0 -26
  152. package/esm/useCell.js.map +0 -1
  153. package/esm/useCellEditing.js +0 -77
  154. package/esm/useCellEditing.js.map +0 -1
  155. package/esm/useControlledTableNavigation.js +0 -41
  156. package/esm/useControlledTableNavigation.js.map +0 -1
  157. package/esm/useDataSource.js +0 -101
  158. package/esm/useDataSource.js.map +0 -1
  159. package/esm/useInitialValue.js +0 -9
  160. package/esm/useInitialValue.js.map +0 -1
  161. package/esm/useKeyboardNavigation.js +0 -300
  162. package/esm/useKeyboardNavigation.js.map +0 -1
  163. package/esm/useRowClassNameGenerators.js +0 -32
  164. package/esm/useRowClassNameGenerators.js.map +0 -1
  165. package/esm/useRowHeight.js +0 -41
  166. package/esm/useRowHeight.js.map +0 -1
  167. package/esm/useSelection.js +0 -62
  168. package/esm/useSelection.js.map +0 -1
  169. package/esm/useTable.js +0 -551
  170. package/esm/useTable.js.map +0 -1
  171. package/esm/useTableAndColumnSettings.js +0 -126
  172. package/esm/useTableAndColumnSettings.js.map +0 -1
  173. package/esm/useTableContextMenu.js +0 -40
  174. package/esm/useTableContextMenu.js.map +0 -1
  175. package/esm/useTableModel.js +0 -293
  176. package/esm/useTableModel.js.map +0 -1
  177. package/esm/useTableScroll.js +0 -393
  178. package/esm/useTableScroll.js.map +0 -1
  179. package/esm/useTableViewport.js +0 -120
  180. package/esm/useTableViewport.js.map +0 -1
package/esm/useTable.js DELETED
@@ -1,551 +0,0 @@
1
- import { useDragDrop } from '@vuu-ui/vuu-ui-controls';
2
- import { useLayoutEffectSkipFirst, buildColumnMap, updateColumn, toggleOrApplySort, isValidNumber, isJsonGroup, isGroupColumn, asDataSourceRowObject, getIndexFromRowElement, metadataKeys } from '@vuu-ui/vuu-utils';
3
- import { useState, useMemo, useCallback, useEffect, useRef } from 'react';
4
- import { buildContextMenuDescriptors } from './context-menu/buildContextMenuDescriptors.js';
5
- import { useHandleTableContextMenu } from './context-menu/useHandleTableContextMenu.js';
6
- import { updateTableConfig } from './table-config.js';
7
- import { useCellEditing } from './useCellEditing.js';
8
- import { useDataSource } from './useDataSource.js';
9
- import { useInitialValue } from './useInitialValue.js';
10
- import { useKeyboardNavigation } from './useKeyboardNavigation.js';
11
- import { useSelection } from './useSelection.js';
12
- import { useTableContextMenu } from './useTableContextMenu.js';
13
- import { useTableModel, isShowColumnSettings, isShowTableSettings } from './useTableModel.js';
14
- import { useTableScroll } from './useTableScroll.js';
15
- import { useTableViewport } from './useTableViewport.js';
16
- import { useTableAndColumnSettings } from './useTableAndColumnSettings.js';
17
- import { useRowClassNameGenerators } from './useRowClassNameGenerators.js';
18
-
19
- const stripInternalProperties = (tableConfig) => {
20
- return tableConfig;
21
- };
22
- const { KEY, IS_EXPANDED, IS_LEAF } = metadataKeys;
23
- const NULL_DRAG_DROP = {
24
- draggable: void 0,
25
- onMouseDown: void 0
26
- };
27
- const useNullDragDrop = () => NULL_DRAG_DROP;
28
- const addColumn = (tableConfig, column) => ({
29
- ...tableConfig,
30
- columns: tableConfig.columns.concat(column)
31
- });
32
- const useTable = ({
33
- allowDragDrop = false,
34
- availableColumns,
35
- config,
36
- containerRef,
37
- dataSource,
38
- disableFocus,
39
- headerHeight = 25,
40
- highlightedIndex: highlightedIndexProp,
41
- id,
42
- navigationStyle = "cell",
43
- onAvailableColumnsChange,
44
- onConfigChange,
45
- onDragStart,
46
- onDrop,
47
- onFeatureInvocation,
48
- onHighlight,
49
- onRowClick: onRowClickProp,
50
- onSelect,
51
- onSelectionChange,
52
- renderBufferSize = 0,
53
- rowHeight = 20,
54
- scrollingApiRef,
55
- selectionModel,
56
- size
57
- }) => {
58
- const [rowCount, setRowCount] = useState(dataSource.size);
59
- if (dataSource === void 0) {
60
- throw Error("no data source provided to Vuu Table");
61
- }
62
- const rowClassNameGenerator = useRowClassNameGenerators(config);
63
- const useRowDragDrop = allowDragDrop ? useDragDrop : useNullDragDrop;
64
- const menuBuilder = useMemo(
65
- () => buildContextMenuDescriptors(dataSource),
66
- [dataSource]
67
- );
68
- const onDataRowcountChange = useCallback((size2) => {
69
- setRowCount(size2);
70
- }, []);
71
- const {
72
- columns,
73
- dispatchTableModelAction,
74
- headings,
75
- tableAttributes,
76
- tableConfig
77
- } = useTableModel(config, dataSource);
78
- useLayoutEffectSkipFirst(() => {
79
- dispatchTableModelAction({
80
- type: "init",
81
- tableConfig: config,
82
- dataSource
83
- });
84
- }, [config, dataSource, dispatchTableModelAction]);
85
- const applyTableConfigChange = useCallback(
86
- (config2) => {
87
- dispatchTableModelAction({
88
- type: "init",
89
- tableConfig: config2,
90
- dataSource
91
- });
92
- onConfigChange?.(stripInternalProperties(config2));
93
- },
94
- [dataSource, dispatchTableModelAction, onConfigChange]
95
- );
96
- const columnMap = useMemo(
97
- () => buildColumnMap(dataSource.columns),
98
- [dataSource.columns]
99
- );
100
- const onSubscribed = useCallback(
101
- ({ tableSchema }) => {
102
- if (tableSchema) {
103
- dispatchTableModelAction({
104
- type: "setTableSchema",
105
- tableSchema
106
- });
107
- } else {
108
- console.log("subscription message with no schema");
109
- }
110
- },
111
- [dispatchTableModelAction]
112
- );
113
- const {
114
- getRowAtPosition,
115
- getRowOffset,
116
- setInSituRowOffset: viewportHookSetInSituRowOffset,
117
- setScrollTop: viewportHookSetScrollTop,
118
- ...viewportMeasurements
119
- } = useTableViewport({
120
- columns,
121
- headerHeight,
122
- headings,
123
- rowCount,
124
- rowHeight,
125
- size
126
- });
127
- const initialRange = useInitialValue({
128
- from: 0,
129
- to: viewportMeasurements.rowCount
130
- });
131
- const { data, dataRef, getSelectedRows, range, setRange } = useDataSource({
132
- dataSource,
133
- // We need to factor this out of Table
134
- onFeatureInvocation,
135
- renderBufferSize,
136
- onSizeChange: onDataRowcountChange,
137
- onSubscribed,
138
- range: initialRange
139
- });
140
- const { requestScroll, ...scrollProps } = useTableScroll({
141
- columns,
142
- getRowAtPosition,
143
- rowHeight,
144
- scrollingApiRef,
145
- setRange,
146
- onVerticalScroll: viewportHookSetScrollTop,
147
- onVerticalScrollInSitu: viewportHookSetInSituRowOffset,
148
- viewportMeasurements
149
- });
150
- const handleConfigEditedInSettingsPanel = useCallback(
151
- (tableConfig2) => {
152
- dispatchTableModelAction({
153
- type: "init",
154
- tableConfig: tableConfig2,
155
- dataSource
156
- });
157
- onConfigChange?.(stripInternalProperties(tableConfig2));
158
- },
159
- [dataSource, dispatchTableModelAction, onConfigChange]
160
- );
161
- const handleDataSourceConfigChanged = useCallback(
162
- (dataSourceConfig) => {
163
- dataSource.config = {
164
- ...dataSource.config,
165
- ...dataSourceConfig
166
- };
167
- },
168
- [dataSource]
169
- );
170
- useEffect(() => {
171
- dataSource.on("config", (config2, confirmed, changes) => {
172
- const scrollSensitiveChanges = changes?.filterChanged || changes?.groupByChanged;
173
- if (scrollSensitiveChanges && dataSource.range.from > 0) {
174
- requestScroll({
175
- type: "scroll-end",
176
- direction: "home"
177
- });
178
- }
179
- dispatchTableModelAction({
180
- type: "tableConfig",
181
- ...config2,
182
- confirmed
183
- });
184
- });
185
- }, [dataSource, dispatchTableModelAction, requestScroll]);
186
- const handleCreateCalculatedColumn = useCallback(
187
- (column) => {
188
- dataSource.columns = dataSource.columns.concat(column.name);
189
- applyTableConfigChange(addColumn(tableConfig, column));
190
- },
191
- [dataSource, tableConfig, applyTableConfigChange]
192
- );
193
- const hideColumns = useCallback(
194
- (action) => {
195
- const { columns: columns2 } = action;
196
- const hiddenColumns = columns2.map((c) => c.name);
197
- const newTableConfig = {
198
- ...tableConfig,
199
- columns: tableConfig.columns.map(
200
- (col) => hiddenColumns.includes(col.name) ? { ...col, hidden: true } : col
201
- )
202
- };
203
- applyTableConfigChange(newTableConfig);
204
- },
205
- [tableConfig, applyTableConfigChange]
206
- );
207
- const pinColumn = useCallback(
208
- (action) => {
209
- applyTableConfigChange({
210
- ...tableConfig,
211
- columns: updateColumn(tableConfig.columns, {
212
- ...action.column,
213
- pin: action.pin
214
- })
215
- });
216
- },
217
- [tableConfig, applyTableConfigChange]
218
- );
219
- const { showColumnSettingsPanel, showTableSettingsPanel } = useTableAndColumnSettings({
220
- availableColumns: availableColumns ?? tableConfig.columns.map(({ name, serverDataType = "string" }) => ({
221
- name,
222
- serverDataType
223
- })),
224
- onAvailableColumnsChange,
225
- onConfigChange: handleConfigEditedInSettingsPanel,
226
- onCreateCalculatedColumn: handleCreateCalculatedColumn,
227
- onDataSourceConfigChange: handleDataSourceConfigChanged,
228
- tableConfig
229
- });
230
- const onPersistentColumnOperation = useCallback(
231
- (action) => {
232
- if (isShowColumnSettings(action)) {
233
- showColumnSettingsPanel(action);
234
- } else if (isShowTableSettings(action)) {
235
- showTableSettingsPanel();
236
- } else {
237
- switch (action.type) {
238
- case "hideColumns":
239
- return hideColumns(action);
240
- case "pinColumn":
241
- return pinColumn(action);
242
- default:
243
- dispatchTableModelAction(action);
244
- }
245
- }
246
- },
247
- [
248
- dispatchTableModelAction,
249
- hideColumns,
250
- pinColumn,
251
- showColumnSettingsPanel,
252
- showTableSettingsPanel
253
- ]
254
- );
255
- const handleContextMenuAction = useHandleTableContextMenu({
256
- dataSource,
257
- onPersistentColumnOperation
258
- });
259
- const handleSort = useCallback(
260
- (column, extendSort = false, sortType) => {
261
- if (dataSource) {
262
- dataSource.sort = toggleOrApplySort(
263
- dataSource.sort,
264
- column,
265
- extendSort,
266
- sortType
267
- );
268
- }
269
- },
270
- [dataSource]
271
- );
272
- const resizeCells = useRef();
273
- const onResizeColumn = useCallback(
274
- (phase, columnName, width) => {
275
- const column = columns.find((column2) => column2.name === columnName);
276
- if (column) {
277
- if (phase === "resize") {
278
- resizeCells.current?.forEach((cell) => {
279
- cell.style.width = `${width}px`;
280
- });
281
- } else if (phase === "end") {
282
- resizeCells.current = void 0;
283
- if (isValidNumber(width)) {
284
- dispatchTableModelAction({
285
- type: "resizeColumn",
286
- phase,
287
- column,
288
- width
289
- });
290
- onConfigChange?.(
291
- stripInternalProperties(
292
- updateTableConfig(tableConfig, {
293
- type: "col-size",
294
- column,
295
- width
296
- })
297
- )
298
- );
299
- }
300
- } else {
301
- const byColIndex = `[aria-colindex='${column.index}']`;
302
- resizeCells.current = Array.from(
303
- containerRef.current?.querySelectorAll(
304
- `.vuuTableCell${byColIndex},.vuuTableHeaderCell${byColIndex}`
305
- ) ?? []
306
- );
307
- dispatchTableModelAction({
308
- type: "resizeColumn",
309
- phase,
310
- column,
311
- width
312
- });
313
- }
314
- } else {
315
- throw Error(
316
- `useDataTable.handleColumnResize, column ${columnName} not found`
317
- );
318
- }
319
- },
320
- [
321
- columns,
322
- dispatchTableModelAction,
323
- onConfigChange,
324
- tableConfig,
325
- containerRef
326
- ]
327
- );
328
- const onToggleGroup = useCallback(
329
- (row, column) => {
330
- const isJson = isJsonGroup(column, row, columnMap);
331
- const key = row[KEY];
332
- if (row[IS_EXPANDED]) {
333
- dataSource.closeTreeNode(key, true);
334
- if (isJson) {
335
- const idx = columns.indexOf(column);
336
- const rows = dataSource.getRowsAtDepth?.(idx + 1);
337
- if (rows && !rows.some((row2) => row2[IS_EXPANDED] || row2[IS_LEAF])) {
338
- dispatchTableModelAction({
339
- type: "hideColumns",
340
- columns: columns.slice(idx + 2)
341
- });
342
- }
343
- }
344
- } else {
345
- dataSource.openTreeNode(key);
346
- if (isJson) {
347
- const childRows = dataSource.getChildRows?.(key);
348
- const idx = columns.indexOf(column) + 1;
349
- const columnsToShow = [columns[idx]];
350
- if (childRows && childRows.some((row2) => row2[IS_LEAF])) {
351
- columnsToShow.push(columns[idx + 1]);
352
- }
353
- if (columnsToShow.some((col) => col.hidden)) {
354
- dispatchTableModelAction({
355
- type: "showColumns",
356
- columns: columnsToShow
357
- });
358
- }
359
- }
360
- }
361
- },
362
- [columnMap, columns, dataSource, dispatchTableModelAction]
363
- );
364
- const {
365
- highlightedIndexRef,
366
- navigate,
367
- onFocus: navigationFocus,
368
- onKeyDown: navigationKeyDown,
369
- ...containerProps
370
- } = useKeyboardNavigation({
371
- columnCount: columns.filter((c) => c.hidden !== true).length,
372
- containerRef,
373
- disableFocus,
374
- highlightedIndex: highlightedIndexProp,
375
- navigationStyle,
376
- requestScroll,
377
- rowCount: dataSource?.size,
378
- onHighlight,
379
- viewportRange: range,
380
- viewportRowCount: viewportMeasurements.rowCount
381
- });
382
- const {
383
- onBlur: editingBlur,
384
- onDoubleClick: editingDoubleClick,
385
- onKeyDown: editingKeyDown,
386
- onFocus: editingFocus
387
- } = useCellEditing({
388
- navigate
389
- });
390
- const handleFocus = useCallback(
391
- (e) => {
392
- navigationFocus();
393
- if (!e.defaultPrevented) {
394
- editingFocus(e);
395
- }
396
- },
397
- [editingFocus, navigationFocus]
398
- );
399
- const onContextMenu = useTableContextMenu({
400
- columns,
401
- data,
402
- dataSource,
403
- getSelectedRows
404
- });
405
- const onMoveGroupColumn = useCallback(
406
- (columns2) => {
407
- dataSource.groupBy = columns2.map((col) => col.name);
408
- },
409
- [dataSource]
410
- );
411
- const onRemoveGroupColumn = useCallback(
412
- (column) => {
413
- if (isGroupColumn(column)) {
414
- dataSource.groupBy = [];
415
- } else {
416
- if (dataSource && dataSource.groupBy.includes(column.name)) {
417
- dataSource.groupBy = dataSource.groupBy.filter(
418
- (columnName) => columnName !== column.name
419
- );
420
- }
421
- }
422
- },
423
- [dataSource]
424
- );
425
- const handleSelectionChange = useCallback(
426
- (selected) => {
427
- dataSource.select(selected);
428
- onSelectionChange?.(selected);
429
- },
430
- [dataSource, onSelectionChange]
431
- );
432
- const handleSelect = useCallback(
433
- (row) => {
434
- if (onSelect) {
435
- onSelect(row === null ? null : asDataSourceRowObject(row, columnMap));
436
- }
437
- },
438
- [columnMap, onSelect]
439
- );
440
- const {
441
- onKeyDown: selectionHookKeyDown,
442
- onRowClick: selectionHookOnRowClick
443
- } = useSelection({
444
- highlightedIndexRef,
445
- onSelect: handleSelect,
446
- onSelectionChange: handleSelectionChange,
447
- selectionModel
448
- });
449
- const handleRowClick = useCallback(
450
- (evt, row, rangeSelect, keepExistingSelection) => {
451
- selectionHookOnRowClick(evt, row, rangeSelect, keepExistingSelection);
452
- onRowClickProp?.(evt, asDataSourceRowObject(row, columnMap));
453
- },
454
- [columnMap, onRowClickProp, selectionHookOnRowClick]
455
- );
456
- const handleKeyDown = useCallback(
457
- (e) => {
458
- navigationKeyDown(e);
459
- if (!e.defaultPrevented) {
460
- editingKeyDown(e);
461
- }
462
- if (!e.defaultPrevented) {
463
- selectionHookKeyDown(e);
464
- }
465
- },
466
- [navigationKeyDown, editingKeyDown, selectionHookKeyDown]
467
- );
468
- const onMoveColumn = useCallback(
469
- (columns2) => {
470
- const newTableConfig = {
471
- ...tableConfig,
472
- columns: columns2
473
- };
474
- dispatchTableModelAction({
475
- type: "init",
476
- tableConfig: newTableConfig,
477
- dataSource
478
- });
479
- onConfigChange?.(stripInternalProperties(newTableConfig));
480
- },
481
- [dataSource, dispatchTableModelAction, onConfigChange, tableConfig]
482
- );
483
- const handleDropRow = useCallback(
484
- (dragDropState) => {
485
- onDrop?.(dragDropState);
486
- },
487
- [onDrop]
488
- );
489
- const handleDataEdited = useCallback(
490
- async (row, columnName, value) => dataSource.applyEdit(row, columnName, value),
491
- [dataSource]
492
- );
493
- const handleDragStartRow = useCallback(
494
- (dragDropState) => {
495
- const { initialDragElement } = dragDropState;
496
- const rowIndex = getIndexFromRowElement(initialDragElement);
497
- const row = dataRef.current.find((row2) => row2[0] === rowIndex);
498
- if (row) {
499
- dragDropState.setPayload(row);
500
- }
501
- onDragStart?.(dragDropState);
502
- },
503
- [dataRef, onDragStart]
504
- );
505
- const { onMouseDown: rowDragMouseDown, draggable: draggableRow } = useRowDragDrop({
506
- allowDragDrop,
507
- containerRef,
508
- draggableClassName: `vuuTable`,
509
- id,
510
- onDragStart: handleDragStartRow,
511
- onDrop: handleDropRow,
512
- orientation: "vertical",
513
- itemQuery: ".vuuTableRow"
514
- });
515
- return {
516
- ...containerProps,
517
- "aria-rowcount": dataSource.size,
518
- rowClassNameGenerator,
519
- draggableRow,
520
- onBlur: editingBlur,
521
- onDoubleClick: editingDoubleClick,
522
- onFocus: handleFocus,
523
- onKeyDown: handleKeyDown,
524
- onMouseDown: rowDragMouseDown,
525
- columnMap,
526
- columns,
527
- data,
528
- getRowOffset,
529
- handleContextMenuAction,
530
- headings,
531
- highlightedIndex: highlightedIndexRef.current,
532
- menuBuilder,
533
- onContextMenu,
534
- onDataEdited: handleDataEdited,
535
- onMoveColumn,
536
- onMoveGroupColumn,
537
- onRemoveGroupColumn,
538
- onRowClick: handleRowClick,
539
- onSortColumn: handleSort,
540
- onResizeColumn,
541
- onToggleGroup,
542
- scrollProps,
543
- // TODO don't think we need these ...
544
- tableAttributes,
545
- tableConfig,
546
- viewportMeasurements
547
- };
548
- };
549
-
550
- export { useTable };
551
- //# sourceMappingURL=useTable.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTable.js","sources":["../src/useTable.ts"],"sourcesContent":["import {\n DataSourceConfig,\n DataSourceRow,\n DataSourceSubscribedMessage,\n SelectionChangeHandler,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n ColumnDescriptor,\n DataCellEditHandler,\n TableRowClickHandlerInternal,\n RuntimeColumnDescriptor,\n TableColumnResizeHandler,\n TableConfig,\n TableSelectionModel,\n TableRowSelectHandlerInternal,\n} from \"@vuu-ui/vuu-table-types\";\nimport { VuuRange, VuuSortType } from \"@vuu-ui/vuu-protocol-types\";\nimport {\n DragStartHandler,\n MeasuredProps,\n MeasuredSize,\n useDragDrop,\n} from \"@vuu-ui/vuu-ui-controls\";\nimport {\n toggleOrApplySort,\n asDataSourceRowObject,\n buildColumnMap,\n getIndexFromRowElement,\n isGroupColumn,\n isJsonGroup,\n isValidNumber,\n metadataKeys,\n updateColumn,\n useLayoutEffectSkipFirst,\n} from \"@vuu-ui/vuu-utils\";\nimport {\n FocusEvent,\n KeyboardEvent,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n buildContextMenuDescriptors,\n useHandleTableContextMenu,\n} from \"./context-menu\";\nimport { TableProps } from \"./Table\";\nimport { updateTableConfig } from \"./table-config\";\nimport { useCellEditing } from \"./useCellEditing\";\nimport { useDataSource } from \"./useDataSource\";\nimport { useInitialValue } from \"./useInitialValue\";\nimport { useKeyboardNavigation } from \"./useKeyboardNavigation\";\nimport { useSelection } from \"./useSelection\";\nimport { useTableContextMenu } from \"./useTableContextMenu\";\nimport {\n ColumnActionHide,\n ColumnActionPin,\n isShowColumnSettings,\n isShowTableSettings,\n PersistentColumnAction,\n useTableModel,\n} from \"./useTableModel\";\nimport { useTableScroll } from \"./useTableScroll\";\nimport { useTableViewport } from \"./useTableViewport\";\nimport { useTableAndColumnSettings } from \"./useTableAndColumnSettings\";\nimport { useRowClassNameGenerators } from \"./useRowClassNameGenerators\";\n\nconst stripInternalProperties = (tableConfig: TableConfig): TableConfig => {\n return tableConfig;\n};\n\nexport interface TableHookProps\n extends MeasuredProps,\n Pick<\n TableProps,\n | \"allowDragDrop\"\n | \"availableColumns\"\n | \"config\"\n | \"dataSource\"\n | \"disableFocus\"\n | \"highlightedIndex\"\n | \"id\"\n | \"navigationStyle\"\n | \"onAvailableColumnsChange\"\n | \"onConfigChange\"\n | \"onDragStart\"\n | \"onDrop\"\n | \"onFeatureInvocation\"\n | \"onHighlight\"\n | \"onSelect\"\n | \"onSelectionChange\"\n | \"onRowClick\"\n | \"renderBufferSize\"\n | \"scrollingApiRef\"\n > {\n containerRef: RefObject<HTMLDivElement>;\n headerHeight: number;\n rowHeight: number;\n selectionModel: TableSelectionModel;\n size: MeasuredSize;\n}\n\nconst { KEY, IS_EXPANDED, IS_LEAF } = metadataKeys;\n\nconst NULL_DRAG_DROP = {\n draggable: undefined,\n onMouseDown: undefined,\n};\nconst useNullDragDrop = () => NULL_DRAG_DROP;\n\nconst addColumn = (\n tableConfig: TableConfig,\n column: ColumnDescriptor\n): TableConfig => ({\n ...tableConfig,\n columns: tableConfig.columns.concat(column),\n});\n\nexport const useTable = ({\n allowDragDrop = false,\n availableColumns,\n config,\n containerRef,\n dataSource,\n disableFocus,\n headerHeight = 25,\n highlightedIndex: highlightedIndexProp,\n id,\n navigationStyle = \"cell\",\n onAvailableColumnsChange,\n onConfigChange,\n onDragStart,\n onDrop,\n onFeatureInvocation,\n onHighlight,\n onRowClick: onRowClickProp,\n onSelect,\n onSelectionChange,\n renderBufferSize = 0,\n rowHeight = 20,\n scrollingApiRef,\n selectionModel,\n size,\n}: TableHookProps) => {\n const [rowCount, setRowCount] = useState<number>(dataSource.size);\n if (dataSource === undefined) {\n throw Error(\"no data source provided to Vuu Table\");\n }\n\n const rowClassNameGenerator = useRowClassNameGenerators(config);\n\n const useRowDragDrop = allowDragDrop ? useDragDrop : useNullDragDrop;\n\n const menuBuilder = useMemo(\n () => buildContextMenuDescriptors(dataSource),\n [dataSource]\n );\n\n const onDataRowcountChange = useCallback((size: number) => {\n setRowCount(size);\n }, []);\n\n const {\n columns,\n dispatchTableModelAction,\n headings,\n tableAttributes,\n tableConfig,\n } = useTableModel(config, dataSource);\n\n useLayoutEffectSkipFirst(() => {\n dispatchTableModelAction({\n type: \"init\",\n tableConfig: config,\n dataSource,\n });\n }, [config, dataSource, dispatchTableModelAction]);\n\n const applyTableConfigChange = useCallback(\n (config: TableConfig) => {\n dispatchTableModelAction({\n type: \"init\",\n tableConfig: config,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(config));\n },\n [dataSource, dispatchTableModelAction, onConfigChange]\n );\n\n const columnMap = useMemo(\n () => buildColumnMap(dataSource.columns),\n [dataSource.columns]\n );\n\n const onSubscribed = useCallback(\n ({ tableSchema }: DataSourceSubscribedMessage) => {\n if (tableSchema) {\n dispatchTableModelAction({\n type: \"setTableSchema\",\n tableSchema,\n });\n } else {\n console.log(\"subscription message with no schema\");\n }\n },\n [dispatchTableModelAction]\n );\n\n const {\n getRowAtPosition,\n getRowOffset,\n setInSituRowOffset: viewportHookSetInSituRowOffset,\n setScrollTop: viewportHookSetScrollTop,\n ...viewportMeasurements\n } = useTableViewport({\n columns,\n headerHeight,\n headings,\n rowCount,\n rowHeight,\n size: size,\n });\n\n const initialRange = useInitialValue<VuuRange>({\n from: 0,\n to: viewportMeasurements.rowCount,\n });\n\n const { data, dataRef, getSelectedRows, range, setRange } = useDataSource({\n dataSource,\n // We need to factor this out of Table\n onFeatureInvocation,\n renderBufferSize,\n onSizeChange: onDataRowcountChange,\n onSubscribed,\n range: initialRange,\n });\n\n const { requestScroll, ...scrollProps } = useTableScroll({\n columns,\n getRowAtPosition,\n rowHeight,\n scrollingApiRef,\n setRange,\n onVerticalScroll: viewportHookSetScrollTop,\n onVerticalScrollInSitu: viewportHookSetInSituRowOffset,\n viewportMeasurements,\n });\n\n // TODO does this belong here ?\n const handleConfigEditedInSettingsPanel = useCallback(\n (tableConfig: TableConfig) => {\n dispatchTableModelAction({\n type: \"init\",\n tableConfig,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(tableConfig));\n },\n [dataSource, dispatchTableModelAction, onConfigChange]\n );\n\n const handleDataSourceConfigChanged = useCallback(\n (dataSourceConfig: DataSourceConfig) => {\n dataSource.config = {\n ...dataSource.config,\n ...dataSourceConfig,\n };\n },\n [dataSource]\n );\n\n useEffect(() => {\n dataSource.on(\"config\", (config, confirmed, changes) => {\n const scrollSensitiveChanges =\n changes?.filterChanged || changes?.groupByChanged;\n if (scrollSensitiveChanges && dataSource.range.from > 0) {\n requestScroll({\n type: \"scroll-end\",\n direction: \"home\",\n });\n }\n dispatchTableModelAction({\n type: \"tableConfig\",\n ...config,\n confirmed,\n });\n });\n }, [dataSource, dispatchTableModelAction, requestScroll]);\n\n const handleCreateCalculatedColumn = useCallback(\n (column: ColumnDescriptor) => {\n dataSource.columns = dataSource.columns.concat(column.name);\n applyTableConfigChange(addColumn(tableConfig, column));\n },\n [dataSource, tableConfig, applyTableConfigChange]\n );\n\n const hideColumns = useCallback(\n (action: ColumnActionHide) => {\n const { columns } = action;\n const hiddenColumns = columns.map((c) => c.name);\n const newTableConfig = {\n ...tableConfig,\n columns: tableConfig.columns.map((col) =>\n hiddenColumns.includes(col.name) ? { ...col, hidden: true } : col\n ),\n };\n applyTableConfigChange(newTableConfig);\n },\n [tableConfig, applyTableConfigChange]\n );\n\n const pinColumn = useCallback(\n (action: ColumnActionPin) => {\n applyTableConfigChange({\n ...tableConfig,\n columns: updateColumn(tableConfig.columns, {\n ...action.column,\n pin: action.pin,\n }),\n });\n },\n [tableConfig, applyTableConfigChange]\n );\n\n const { showColumnSettingsPanel, showTableSettingsPanel } =\n useTableAndColumnSettings({\n availableColumns:\n availableColumns ??\n tableConfig.columns.map(({ name, serverDataType = \"string\" }) => ({\n name,\n serverDataType,\n })),\n onAvailableColumnsChange,\n onConfigChange: handleConfigEditedInSettingsPanel,\n onCreateCalculatedColumn: handleCreateCalculatedColumn,\n onDataSourceConfigChange: handleDataSourceConfigChanged,\n tableConfig,\n });\n\n const onPersistentColumnOperation = useCallback(\n (action: PersistentColumnAction) => {\n if (isShowColumnSettings(action)) {\n showColumnSettingsPanel(action);\n } else if (isShowTableSettings(action)) {\n showTableSettingsPanel();\n } else {\n switch (action.type) {\n case \"hideColumns\":\n return hideColumns(action);\n case \"pinColumn\":\n return pinColumn(action);\n default:\n dispatchTableModelAction(action);\n }\n }\n },\n [\n dispatchTableModelAction,\n hideColumns,\n pinColumn,\n showColumnSettingsPanel,\n showTableSettingsPanel,\n ]\n );\n\n const handleContextMenuAction = useHandleTableContextMenu({\n dataSource,\n onPersistentColumnOperation,\n });\n\n const handleSort = useCallback(\n (column: ColumnDescriptor, extendSort = false, sortType?: VuuSortType) => {\n if (dataSource) {\n dataSource.sort = toggleOrApplySort(\n dataSource.sort,\n column,\n extendSort,\n sortType\n );\n }\n },\n [dataSource]\n );\n\n const resizeCells = useRef<HTMLElement[] | undefined>();\n\n const onResizeColumn: TableColumnResizeHandler = useCallback(\n (phase, columnName, width) => {\n const column = columns.find((column) => column.name === columnName);\n if (column) {\n if (phase === \"resize\") {\n resizeCells.current?.forEach((cell) => {\n cell.style.width = `${width}px`;\n });\n } else if (phase === \"end\") {\n resizeCells.current = undefined;\n if (isValidNumber(width)) {\n dispatchTableModelAction({\n type: \"resizeColumn\",\n phase,\n column,\n width,\n });\n onConfigChange?.(\n stripInternalProperties(\n updateTableConfig(tableConfig, {\n type: \"col-size\",\n column,\n width,\n })\n )\n );\n }\n } else {\n const byColIndex = `[aria-colindex='${column.index}']`;\n resizeCells.current = Array.from(\n containerRef.current?.querySelectorAll(\n `.vuuTableCell${byColIndex},.vuuTableHeaderCell${byColIndex}`\n ) ?? []\n );\n dispatchTableModelAction({\n type: \"resizeColumn\",\n phase,\n column,\n width,\n });\n }\n } else {\n throw Error(\n `useDataTable.handleColumnResize, column ${columnName} not found`\n );\n }\n },\n [\n columns,\n dispatchTableModelAction,\n onConfigChange,\n tableConfig,\n containerRef,\n ]\n );\n\n const onToggleGroup = useCallback(\n (row: DataSourceRow, column: RuntimeColumnDescriptor) => {\n const isJson = isJsonGroup(column, row, columnMap);\n const key = row[KEY];\n\n if (row[IS_EXPANDED]) {\n dataSource.closeTreeNode(key, true);\n if (isJson) {\n const idx = columns.indexOf(column);\n const rows = dataSource.getRowsAtDepth?.(idx + 1);\n if (rows && !rows.some((row) => row[IS_EXPANDED] || row[IS_LEAF])) {\n dispatchTableModelAction({\n type: \"hideColumns\",\n columns: columns.slice(idx + 2),\n });\n }\n }\n } else {\n dataSource.openTreeNode(key);\n if (isJson) {\n const childRows = dataSource.getChildRows?.(key);\n const idx = columns.indexOf(column) + 1;\n const columnsToShow = [columns[idx]];\n if (childRows && childRows.some((row) => row[IS_LEAF])) {\n columnsToShow.push(columns[idx + 1]);\n }\n if (columnsToShow.some((col) => col.hidden)) {\n dispatchTableModelAction({\n type: \"showColumns\",\n columns: columnsToShow,\n });\n }\n }\n }\n },\n [columnMap, columns, dataSource, dispatchTableModelAction]\n );\n\n const {\n highlightedIndexRef,\n navigate,\n onFocus: navigationFocus,\n onKeyDown: navigationKeyDown,\n ...containerProps\n } = useKeyboardNavigation({\n columnCount: columns.filter((c) => c.hidden !== true).length,\n containerRef,\n disableFocus,\n highlightedIndex: highlightedIndexProp,\n navigationStyle,\n requestScroll,\n rowCount: dataSource?.size,\n onHighlight,\n viewportRange: range,\n viewportRowCount: viewportMeasurements.rowCount,\n });\n\n const {\n onBlur: editingBlur,\n onDoubleClick: editingDoubleClick,\n onKeyDown: editingKeyDown,\n onFocus: editingFocus,\n } = useCellEditing({\n navigate,\n });\n\n const handleFocus = useCallback(\n (e: FocusEvent<HTMLElement>) => {\n navigationFocus();\n if (!e.defaultPrevented) {\n editingFocus(e);\n }\n },\n [editingFocus, navigationFocus]\n );\n\n const onContextMenu = useTableContextMenu({\n columns,\n data,\n dataSource,\n getSelectedRows,\n });\n\n const onMoveGroupColumn = useCallback(\n (columns: ColumnDescriptor[]) => {\n dataSource.groupBy = columns.map((col) => col.name);\n },\n [dataSource]\n );\n\n const onRemoveGroupColumn = useCallback(\n (column: RuntimeColumnDescriptor) => {\n if (isGroupColumn(column)) {\n dataSource.groupBy = [];\n } else {\n if (dataSource && dataSource.groupBy.includes(column.name)) {\n dataSource.groupBy = dataSource.groupBy.filter(\n (columnName) => columnName !== column.name\n );\n }\n }\n },\n [dataSource]\n );\n\n const handleSelectionChange: SelectionChangeHandler = useCallback(\n (selected) => {\n dataSource.select(selected);\n onSelectionChange?.(selected);\n },\n [dataSource, onSelectionChange]\n );\n\n const handleSelect = useCallback<TableRowSelectHandlerInternal>(\n (row) => {\n if (onSelect) {\n onSelect(row === null ? null : asDataSourceRowObject(row, columnMap));\n }\n },\n [columnMap, onSelect]\n );\n\n const {\n onKeyDown: selectionHookKeyDown,\n onRowClick: selectionHookOnRowClick,\n } = useSelection({\n highlightedIndexRef,\n onSelect: handleSelect,\n onSelectionChange: handleSelectionChange,\n selectionModel,\n });\n\n const handleRowClick = useCallback<TableRowClickHandlerInternal>(\n (evt, row, rangeSelect, keepExistingSelection) => {\n selectionHookOnRowClick(evt, row, rangeSelect, keepExistingSelection);\n onRowClickProp?.(evt, asDataSourceRowObject(row, columnMap));\n },\n [columnMap, onRowClickProp, selectionHookOnRowClick]\n );\n\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLElement>) => {\n navigationKeyDown(e);\n if (!e.defaultPrevented) {\n editingKeyDown(e);\n }\n if (!e.defaultPrevented) {\n selectionHookKeyDown(e);\n }\n },\n [navigationKeyDown, editingKeyDown, selectionHookKeyDown]\n );\n\n const onMoveColumn = useCallback(\n (columns: ColumnDescriptor[]) => {\n const newTableConfig = {\n ...tableConfig,\n columns,\n };\n\n dispatchTableModelAction({\n type: \"init\",\n tableConfig: newTableConfig,\n dataSource,\n });\n onConfigChange?.(stripInternalProperties(newTableConfig));\n },\n [dataSource, dispatchTableModelAction, onConfigChange, tableConfig]\n );\n\n const handleDropRow = useCallback(\n (dragDropState) => {\n onDrop?.(dragDropState);\n },\n [onDrop]\n );\n\n const handleDataEdited = useCallback<DataCellEditHandler>(\n async (row, columnName, value) =>\n dataSource.applyEdit(row, columnName, value),\n [dataSource]\n );\n\n const handleDragStartRow = useCallback<DragStartHandler>(\n (dragDropState) => {\n const { initialDragElement } = dragDropState;\n const rowIndex = getIndexFromRowElement(initialDragElement);\n const row = dataRef.current.find((row) => row[0] === rowIndex);\n if (row) {\n dragDropState.setPayload(row);\n } else {\n // should we abort the operation ?\n }\n onDragStart?.(dragDropState);\n },\n [dataRef, onDragStart]\n );\n\n // Drag Drop rows\n const { onMouseDown: rowDragMouseDown, draggable: draggableRow } =\n useRowDragDrop({\n allowDragDrop,\n containerRef,\n draggableClassName: `vuuTable`,\n id,\n onDragStart: handleDragStartRow,\n onDrop: handleDropRow,\n orientation: \"vertical\",\n itemQuery: \".vuuTableRow\",\n });\n\n return {\n ...containerProps,\n \"aria-rowcount\": dataSource.size,\n rowClassNameGenerator,\n draggableRow,\n onBlur: editingBlur,\n onDoubleClick: editingDoubleClick,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onMouseDown: rowDragMouseDown,\n columnMap,\n columns,\n data,\n getRowOffset,\n handleContextMenuAction,\n headings,\n highlightedIndex: highlightedIndexRef.current,\n menuBuilder,\n onContextMenu,\n onDataEdited: handleDataEdited,\n onMoveColumn,\n onMoveGroupColumn,\n onRemoveGroupColumn,\n onRowClick: handleRowClick,\n onSortColumn: handleSort,\n onResizeColumn,\n onToggleGroup,\n scrollProps,\n // TODO don't think we need these ...\n tableAttributes,\n tableConfig,\n viewportMeasurements,\n };\n};\n"],"names":["size","config","tableConfig","columns","column","row"],"mappings":"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"}