@deephaven/iris-grid 1.8.1-beta.8 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IrisGrid.d.ts +19 -0
- package/dist/IrisGrid.d.ts.map +1 -1
- package/dist/IrisGrid.js +17 -9
- package/dist/IrisGrid.js.map +1 -1
- package/dist/IrisGridMetricCalculator.d.ts +34 -1
- package/dist/IrisGridMetricCalculator.d.ts.map +1 -1
- package/dist/IrisGridMetricCalculator.js +136 -1
- package/dist/IrisGridMetricCalculator.js.map +1 -1
- package/dist/LazyIrisGrid.d.ts +1 -0
- package/dist/LazyIrisGrid.d.ts.map +1 -1
- package/dist/TreeRebalanceUtil.d.ts +50 -0
- package/dist/TreeRebalanceUtil.d.ts.map +1 -0
- package/dist/TreeRebalanceUtil.js +105 -0
- package/dist/TreeRebalanceUtil.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts +12 -0
- package/dist/sidebar/visibility-ordering-builder/SearchItem.d.ts.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js +55 -0
- package/dist/sidebar/visibility-ordering-builder/SearchItem.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css +408 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.css.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts +14 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.d.ts.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js +235 -0
- package/dist/sidebar/visibility-ordering-builder/SearchWithModal.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts +43 -43
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js +427 -466
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingBuilder.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts +7 -2
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js +7 -4
- package/dist/sidebar/visibility-ordering-builder/VisibilityOrderingItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts +7 -15
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js +53 -137
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTree.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts +14 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.d.ts.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js +245 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeDndContext.js.map +1 -0
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts +4 -3
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js +2 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css +45 -22
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.css.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts +13 -14
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js +9 -7
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/TreeItem.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js +8 -7
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/keyboardCoordinates.js.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts +4 -4
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.d.ts.map +1 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js +5 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/utilities.js.map +1 -1
- package/package.json +20 -19
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts +0 -21
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.d.ts.map +0 -1
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js +0 -149
- package/dist/sidebar/visibility-ordering-builder/sortable-tree/SortableTreeInner.js.map +0 -1
|
@@ -1,10 +1,34 @@
|
|
|
1
|
-
import { GridMetricCalculator, type GridMetrics, type GridMetricState, type ModelSizeMap } from '@deephaven/grid';
|
|
1
|
+
import { GridMetricCalculator, type GridMetrics, type GridMetricState, type ModelIndex, type ModelSizeMap } from '@deephaven/grid';
|
|
2
|
+
import type IrisGridModel from './IrisGridModel';
|
|
2
3
|
import { type IrisGridStateOverride } from './CommonTypes';
|
|
4
|
+
import type ColumnHeaderGroup from './ColumnHeaderGroup';
|
|
3
5
|
export type IrisGridMetricState = GridMetricState & IrisGridStateOverride;
|
|
4
6
|
export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
5
7
|
private userColumnWidthsByName;
|
|
6
8
|
private cachedModelColumnNames;
|
|
9
|
+
private cachedHeaderGroupNames;
|
|
10
|
+
private cachedPaddingMaps;
|
|
11
|
+
static getModelColumnRoot(model: IrisGridModel, modelColumn: ModelIndex): ColumnHeaderGroup | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* Builds a TreeNode from the model header groups and columns for padding calculation
|
|
14
|
+
* @param name The name of the root node to build the tree for
|
|
15
|
+
* @param model The IrisGridModel containing columns and header groups
|
|
16
|
+
* @param getLeafValue Function to get the value for leaf nodes (columns)
|
|
17
|
+
* @param getGroupValue Function to get the value for group nodes (header groups)
|
|
18
|
+
* @returns The TreeNode structure
|
|
19
|
+
*/
|
|
20
|
+
private static buildNode;
|
|
21
|
+
/**
|
|
22
|
+
* Gets the header padding for a specific column based on the widths of its group tree nodes.
|
|
23
|
+
* We only adjust paddings on the column, because the group widths are automatically sized to fit their children.
|
|
24
|
+
* @param state The current IrisGridMetricState
|
|
25
|
+
* @param modelColumn The column index to get the padding for
|
|
26
|
+
* @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes
|
|
27
|
+
* @returns The calculated header padding for the column
|
|
28
|
+
*/
|
|
29
|
+
private getHeaderPadding;
|
|
7
30
|
private getCachedCurrentModelColumnNames;
|
|
31
|
+
private getCachedCurrentHeaderGroupNames;
|
|
8
32
|
private updateCalculatedColumnWidths;
|
|
9
33
|
/**
|
|
10
34
|
* Updates the user column widths based on the current model state
|
|
@@ -44,6 +68,15 @@ export declare class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
44
68
|
*/
|
|
45
69
|
getUserColumnWidths(): ModelSizeMap;
|
|
46
70
|
getCalculatedColumnWidths(): ModelSizeMap;
|
|
71
|
+
/**
|
|
72
|
+
* Calculate the width of the specified column's header
|
|
73
|
+
* @param modelColumn ModelIndex of the column to get the header width for
|
|
74
|
+
* @param state The grid metric state
|
|
75
|
+
* @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes
|
|
76
|
+
* @returns The calculated width of the column header
|
|
77
|
+
*/
|
|
78
|
+
calculateColumnHeaderWidth(modelColumn: ModelIndex, state: IrisGridMetricState, maxColumnWidth: number): number;
|
|
79
|
+
getColumnHeaderGroupWidth(modelColumn: ModelIndex, depth: number, state: IrisGridMetricState, maxColumnWidth: number): number;
|
|
47
80
|
}
|
|
48
81
|
export default IrisGridMetricCalculator;
|
|
49
82
|
//# sourceMappingURL=IrisGridMetricCalculator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.d.ts","sourceRoot":"","sources":["../src/IrisGridMetricCalculator.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,UAAU,EACf,KAAK,YAAY,EAGlB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,eAAe,CAAC;AAC5E,OAAO,KAAK,iBAAiB,MAAM,qBAAqB,CAAC;AAGzD,MAAM,MAAM,mBAAmB,GAAG,eAAe,GAAG,qBAAqB,CAAC;AAE1E,qBAAa,wBAAyB,SAAQ,oBAAoB;IAEhE,OAAO,CAAC,sBAAsB,CAAsC;IAGpE,OAAO,CAAC,sBAAsB,CAAoC;IAElE,OAAO,CAAC,sBAAsB,CAAgC;IAG9D,OAAO,CAAC,iBAAiB,CAA+C;IAExE,MAAM,CAAC,kBAAkB,CACvB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,UAAU,GACtB,iBAAiB,GAAG,SAAS;IAchC;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM,CAAC,SAAS;IAoCxB;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IA6CxB,OAAO,CAAC,gCAAgC,CAEtC;IAEF,OAAO,CAAC,gCAAgC,CAGtC;IAEF,OAAO,CAAC,4BAA4B;IAmBpC;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAU9B;;;OAGG;IACH,OAAO,CAAC,6BAA6B;IAiCrC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM;IA2B5C;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,WAAW;IAQnD;;;;OAIG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAalD;;;OAGG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAYtC;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAK5B;;;OAGG;IACH,mBAAmB,IAAI,YAAY;IAKnC,yBAAyB,IAAI,YAAY;IAIzC;;;;;;OAMG;IACH,0BAA0B,CACxB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,MAAM,GACrB,MAAM;IA2BT,yBAAyB,CACvB,WAAW,EAAE,UAAU,EACvB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,mBAAmB,EAC1B,cAAc,EAAE,MAAM,GACrB,MAAM;CA+BV;AAED,eAAe,wBAAwB,CAAC"}
|
|
@@ -3,8 +3,9 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
3
3
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
4
|
import deepEqual from 'fast-deep-equal';
|
|
5
5
|
import memoizeOne from 'memoize-one';
|
|
6
|
-
import { GridMetricCalculator, trimMap } from '@deephaven/grid';
|
|
6
|
+
import { GridMetricCalculator, trimMap, isExpandableColumnGridModel } from '@deephaven/grid';
|
|
7
7
|
import { assertNotNull } from '@deephaven/utils';
|
|
8
|
+
import { rebalanceTree } from "./TreeRebalanceUtil.js";
|
|
8
9
|
export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
9
10
|
constructor() {
|
|
10
11
|
super(...arguments);
|
|
@@ -12,7 +13,89 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
12
13
|
_defineProperty(this, "userColumnWidthsByName", new Map());
|
|
13
14
|
// Cached model column names to detect when the column width map update is necessary
|
|
14
15
|
_defineProperty(this, "cachedModelColumnNames", void 0);
|
|
16
|
+
_defineProperty(this, "cachedHeaderGroupNames", void 0);
|
|
17
|
+
// Cached padding maps for column header groups
|
|
18
|
+
_defineProperty(this, "cachedPaddingMaps", new Map());
|
|
15
19
|
_defineProperty(this, "getCachedCurrentModelColumnNames", memoizeOne(columns => columns.map(col => col.name)));
|
|
20
|
+
_defineProperty(this, "getCachedCurrentHeaderGroupNames", memoizeOne(columnHeaderGroups => columnHeaderGroups.map(group => group.name)));
|
|
21
|
+
}
|
|
22
|
+
static getModelColumnRoot(model, modelColumn) {
|
|
23
|
+
var depth = 0;
|
|
24
|
+
var current = model.getColumnHeaderParentGroup(modelColumn, depth);
|
|
25
|
+
var root = current;
|
|
26
|
+
while (current != null) {
|
|
27
|
+
root = current;
|
|
28
|
+
depth += 1;
|
|
29
|
+
current = model.getColumnHeaderParentGroup(modelColumn, depth);
|
|
30
|
+
}
|
|
31
|
+
return root;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Builds a TreeNode from the model header groups and columns for padding calculation
|
|
36
|
+
* @param name The name of the root node to build the tree for
|
|
37
|
+
* @param model The IrisGridModel containing columns and header groups
|
|
38
|
+
* @param getLeafValue Function to get the value for leaf nodes (columns)
|
|
39
|
+
* @param getGroupValue Function to get the value for group nodes (header groups)
|
|
40
|
+
* @returns The TreeNode structure
|
|
41
|
+
*/
|
|
42
|
+
static buildNode(name, model, getLeafValue, getGroupValue) {
|
|
43
|
+
var _getLeafValue;
|
|
44
|
+
var headerGroup = model.columnHeaderGroupMap.get(name);
|
|
45
|
+
if (headerGroup) {
|
|
46
|
+
var value = getGroupValue(name);
|
|
47
|
+
var children = headerGroup.children.map(childName => IrisGridMetricCalculator.buildNode(childName, model, getLeafValue, getGroupValue));
|
|
48
|
+
|
|
49
|
+
// Group node
|
|
50
|
+
return {
|
|
51
|
+
name,
|
|
52
|
+
children,
|
|
53
|
+
value
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Leaf node
|
|
58
|
+
return {
|
|
59
|
+
name,
|
|
60
|
+
children: [],
|
|
61
|
+
value: (_getLeafValue = getLeafValue(name)) !== null && _getLeafValue !== void 0 ? _getLeafValue : 0
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Gets the header padding for a specific column based on the widths of its group tree nodes.
|
|
67
|
+
* We only adjust paddings on the column, because the group widths are automatically sized to fit their children.
|
|
68
|
+
* @param state The current IrisGridMetricState
|
|
69
|
+
* @param modelColumn The column index to get the padding for
|
|
70
|
+
* @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes
|
|
71
|
+
* @returns The calculated header padding for the column
|
|
72
|
+
*/
|
|
73
|
+
getHeaderPadding(state, modelColumn, maxColumnWidth) {
|
|
74
|
+
var _paddingMap$get;
|
|
75
|
+
var {
|
|
76
|
+
model
|
|
77
|
+
} = state;
|
|
78
|
+
var root = IrisGridMetricCalculator.getModelColumnRoot(model, modelColumn);
|
|
79
|
+
if (root == null) {
|
|
80
|
+
return 0;
|
|
81
|
+
}
|
|
82
|
+
var cachedMap = this.cachedPaddingMaps.get(root.name);
|
|
83
|
+
if (cachedMap != null) {
|
|
84
|
+
var _cachedMap$get;
|
|
85
|
+
return (_cachedMap$get = cachedMap.get(model.columns[modelColumn].name)) !== null && _cachedMap$get !== void 0 ? _cachedMap$get : 0;
|
|
86
|
+
}
|
|
87
|
+
var groupTree = IrisGridMetricCalculator.buildNode(root.name, model, name => {
|
|
88
|
+
var columnIndex = model.getColumnIndexByName(name);
|
|
89
|
+
assertNotNull(columnIndex, "".concat(name, " not found in model columns"));
|
|
90
|
+
return super.calculateColumnHeaderWidth(columnIndex, state, maxColumnWidth);
|
|
91
|
+
}, name => {
|
|
92
|
+
var group = model.columnHeaderGroupMap.get(name);
|
|
93
|
+
assertNotNull(group, "".concat(name, " not found in columnHeaderGroupMap"));
|
|
94
|
+
return this.getColumnHeaderGroupWidth(group.childIndexes[0], group.depth, state, maxColumnWidth);
|
|
95
|
+
});
|
|
96
|
+
var paddingMap = rebalanceTree(groupTree);
|
|
97
|
+
this.cachedPaddingMaps.set(root.name, paddingMap);
|
|
98
|
+
return (_paddingMap$get = paddingMap.get(model.columns[modelColumn].name)) !== null && _paddingMap$get !== void 0 ? _paddingMap$get : 0;
|
|
16
99
|
}
|
|
17
100
|
updateCalculatedColumnWidths(model) {
|
|
18
101
|
assertNotNull(this.cachedModelColumnNames);
|
|
@@ -59,8 +142,14 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
59
142
|
// Preserve column widths when possible to minimize visual shifts in the grid layout
|
|
60
143
|
this.updateCalculatedColumnWidths(model);
|
|
61
144
|
this.updateUserColumnWidths(model);
|
|
145
|
+
this.cachedPaddingMaps.clear();
|
|
62
146
|
}
|
|
63
147
|
this.cachedModelColumnNames = modelColumnNames;
|
|
148
|
+
if (this.cachedHeaderGroupNames != null && !deepEqual(this.getCachedCurrentHeaderGroupNames(model.columnHeaderGroups), this.cachedHeaderGroupNames)) {
|
|
149
|
+
this.resetCalculatedColumnWidths();
|
|
150
|
+
this.cachedPaddingMaps.clear();
|
|
151
|
+
}
|
|
152
|
+
this.cachedHeaderGroupNames = model.columnHeaderGroups.map(group => group.name);
|
|
64
153
|
}
|
|
65
154
|
getGridY(state) {
|
|
66
155
|
// The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,
|
|
@@ -146,6 +235,52 @@ export class IrisGridMetricCalculator extends GridMetricCalculator {
|
|
|
146
235
|
getCalculatedColumnWidths() {
|
|
147
236
|
return this.calculatedColumnWidths;
|
|
148
237
|
}
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* Calculate the width of the specified column's header
|
|
241
|
+
* @param modelColumn ModelIndex of the column to get the header width for
|
|
242
|
+
* @param state The grid metric state
|
|
243
|
+
* @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes
|
|
244
|
+
* @returns The calculated width of the column header
|
|
245
|
+
*/
|
|
246
|
+
calculateColumnHeaderWidth(modelColumn, state, maxColumnWidth) {
|
|
247
|
+
var {
|
|
248
|
+
model
|
|
249
|
+
} = state;
|
|
250
|
+
var parent = model.getColumnHeaderParentGroup(modelColumn, 0);
|
|
251
|
+
var baseHeaderWidth = super.calculateColumnHeaderWidth(modelColumn, state, maxColumnWidth);
|
|
252
|
+
|
|
253
|
+
// Column header with no grouping, use base implementation
|
|
254
|
+
if (parent == null) {
|
|
255
|
+
return baseHeaderWidth;
|
|
256
|
+
}
|
|
257
|
+
var headerPadding = this.getHeaderPadding(state, modelColumn, maxColumnWidth);
|
|
258
|
+
return baseHeaderWidth + headerPadding;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// Original width of column header group content, including title, padding, icons, etc.
|
|
262
|
+
// Does not include any rebalancing adjustments
|
|
263
|
+
getColumnHeaderGroupWidth(modelColumn, depth, state, maxColumnWidth) {
|
|
264
|
+
var {
|
|
265
|
+
model,
|
|
266
|
+
theme,
|
|
267
|
+
context
|
|
268
|
+
} = state;
|
|
269
|
+
var {
|
|
270
|
+
headerHorizontalPadding,
|
|
271
|
+
headerFont
|
|
272
|
+
} = theme;
|
|
273
|
+
this.calculateLowerFontWidth(headerFont, context);
|
|
274
|
+
this.calculateUpperFontWidth(headerFont, context);
|
|
275
|
+
var padding = headerHorizontalPadding * 2;
|
|
276
|
+
var headerText = model.textForColumnHeader(modelColumn, depth);
|
|
277
|
+
var isColumnExpandable = isExpandableColumnGridModel(model) && model.isColumnExpandable(modelColumn);
|
|
278
|
+
var expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;
|
|
279
|
+
if (headerText !== undefined && headerText !== '') {
|
|
280
|
+
return this.calculateTextWidth(context, headerFont, headerText, maxColumnWidth - padding) + padding + expandCollapseIconWidth;
|
|
281
|
+
}
|
|
282
|
+
return padding + expandCollapseIconWidth;
|
|
283
|
+
}
|
|
149
284
|
}
|
|
150
285
|
export default IrisGridMetricCalculator;
|
|
151
286
|
//# sourceMappingURL=IrisGridMetricCalculator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","assertNotNull","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","updateCalculatedColumnWidths","model","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","get","set","resetCalculatedColumnWidths","width","getColumnIndexByName","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","getGridY","state","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n type GridMetrics,\n type GridMetricState,\n type ModelIndex,\n type ModelSizeMap,\n trimMap,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridStateOverride, type ColumnName } from './CommonTypes';\n\nexport type IrisGridMetricState = GridMetricState & IrisGridStateOverride;\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n private userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n }\n this.cachedModelColumnNames = modelColumnNames;\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IrisGridMetricCalculator.js","names":["deepEqual","memoizeOne","GridMetricCalculator","trimMap","isExpandableColumnGridModel","assertNotNull","rebalanceTree","IrisGridMetricCalculator","constructor","arguments","_defineProperty","Map","columns","map","col","name","columnHeaderGroups","group","getModelColumnRoot","model","modelColumn","depth","current","getColumnHeaderParentGroup","root","buildNode","getLeafValue","getGroupValue","_getLeafValue","headerGroup","columnHeaderGroupMap","get","value","children","childName","getHeaderPadding","state","maxColumnWidth","_paddingMap$get","cachedMap","cachedPaddingMaps","_cachedMap$get","groupTree","columnIndex","getColumnIndexByName","concat","calculateColumnHeaderWidth","getColumnHeaderGroupWidth","childIndexes","paddingMap","set","updateCalculatedColumnWidths","cachedModelColumnNames","calculatedColumnWidthsByName","forEach","index","prevColumnWidth","calculatedColumnWidths","resetCalculatedColumnWidths","width","updateUserColumnWidths","userColumnWidths","userColumnWidthsByName","modelIndex","setColumnWidth","updateColumnWidthsIfNecessary","modelColumnNames","getCachedCurrentModelColumnNames","clear","cachedHeaderGroupNames","getCachedCurrentHeaderGroupNames","getGridY","gridY","isFilterBarShown","theme","advancedFilters","quickFilters","sorts","reverse","filterBarHeight","size","filterBarCollapsedHeight","length","reverseHeaderBarHeight","getMetrics","column","resetColumnWidth","delete","resetAllColumnWidths","getUserColumnWidths","getCalculatedColumnWidths","parent","baseHeaderWidth","headerPadding","context","headerHorizontalPadding","headerFont","calculateLowerFontWidth","calculateUpperFontWidth","padding","headerText","textForColumnHeader","isColumnExpandable","expandCollapseIconWidth","iconSize","undefined","calculateTextWidth"],"sources":["../src/IrisGridMetricCalculator.ts"],"sourcesContent":["import deepEqual from 'fast-deep-equal';\nimport memoizeOne from 'memoize-one';\nimport {\n GridMetricCalculator,\n type GridMetrics,\n type GridMetricState,\n type ModelIndex,\n type ModelSizeMap,\n trimMap,\n isExpandableColumnGridModel,\n} from '@deephaven/grid';\nimport type { dh } from '@deephaven/jsapi-types';\nimport { assertNotNull } from '@deephaven/utils';\nimport type IrisGridModel from './IrisGridModel';\nimport { type IrisGridStateOverride, type ColumnName } from './CommonTypes';\nimport type ColumnHeaderGroup from './ColumnHeaderGroup';\nimport { rebalanceTree, type TreeNode } from './TreeRebalanceUtil';\n\nexport type IrisGridMetricState = GridMetricState & IrisGridStateOverride;\n\nexport class IrisGridMetricCalculator extends GridMetricCalculator {\n // Column widths by name to keep track of columns going in and out of viewport\n private userColumnWidthsByName: Map<ColumnName, number> = new Map();\n\n // Cached model column names to detect when the column width map update is necessary\n private cachedModelColumnNames: readonly ColumnName[] | undefined;\n\n private cachedHeaderGroupNames: readonly string[] | undefined;\n\n // Cached padding maps for column header groups\n private cachedPaddingMaps: Map<string, Map<string, number>> = new Map();\n\n static getModelColumnRoot(\n model: IrisGridModel,\n modelColumn: ModelIndex\n ): ColumnHeaderGroup | undefined {\n let depth = 0;\n let current = model.getColumnHeaderParentGroup(modelColumn, depth);\n let root = current;\n\n while (current != null) {\n root = current;\n depth += 1;\n current = model.getColumnHeaderParentGroup(modelColumn, depth);\n }\n\n return root;\n }\n\n /**\n * Builds a TreeNode from the model header groups and columns for padding calculation\n * @param name The name of the root node to build the tree for\n * @param model The IrisGridModel containing columns and header groups\n * @param getLeafValue Function to get the value for leaf nodes (columns)\n * @param getGroupValue Function to get the value for group nodes (header groups)\n * @returns The TreeNode structure\n */\n private static buildNode(\n name: string,\n model: IrisGridModel,\n getLeafValue: (name: string) => number,\n getGroupValue: (name: string) => number\n ): TreeNode {\n const headerGroup = model.columnHeaderGroupMap.get(name);\n\n if (headerGroup) {\n const value = getGroupValue(name);\n\n const children = headerGroup.children.map(childName =>\n IrisGridMetricCalculator.buildNode(\n childName,\n model,\n getLeafValue,\n getGroupValue\n )\n );\n\n // Group node\n return {\n name,\n children,\n value,\n };\n }\n\n // Leaf node\n return {\n name,\n children: [],\n value: getLeafValue(name) ?? 0,\n };\n }\n\n /**\n * Gets the header padding for a specific column based on the widths of its group tree nodes.\n * We only adjust paddings on the column, because the group widths are automatically sized to fit their children.\n * @param state The current IrisGridMetricState\n * @param modelColumn The column index to get the padding for\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated header padding for the column\n */\n private getHeaderPadding(\n state: IrisGridMetricState,\n modelColumn: ModelIndex,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n const root = IrisGridMetricCalculator.getModelColumnRoot(\n model,\n modelColumn\n );\n if (root == null) {\n return 0;\n }\n const cachedMap = this.cachedPaddingMaps.get(root.name);\n if (cachedMap != null) {\n return cachedMap.get(model.columns[modelColumn].name) ?? 0;\n }\n const groupTree = IrisGridMetricCalculator.buildNode(\n root.name,\n model,\n name => {\n const columnIndex = model.getColumnIndexByName(name);\n assertNotNull(columnIndex, `${name} not found in model columns`);\n return super.calculateColumnHeaderWidth(\n columnIndex,\n state,\n maxColumnWidth\n );\n },\n name => {\n const group = model.columnHeaderGroupMap.get(name);\n assertNotNull(group, `${name} not found in columnHeaderGroupMap`);\n return this.getColumnHeaderGroupWidth(\n group.childIndexes[0],\n group.depth,\n state,\n maxColumnWidth\n );\n }\n );\n const paddingMap = rebalanceTree(groupTree);\n this.cachedPaddingMaps.set(root.name, paddingMap);\n return paddingMap.get(model.columns[modelColumn].name) ?? 0;\n }\n\n private getCachedCurrentModelColumnNames = memoizeOne(\n (columns: readonly dh.Column[]) => columns.map(col => col.name)\n );\n\n private getCachedCurrentHeaderGroupNames = memoizeOne(\n (columnHeaderGroups: readonly ColumnHeaderGroup[]) =>\n columnHeaderGroups.map(group => group.name)\n );\n\n private updateCalculatedColumnWidths(model: IrisGridModel): void {\n assertNotNull(this.cachedModelColumnNames);\n const calculatedColumnWidthsByName = new Map<ColumnName, number>();\n this.cachedModelColumnNames.forEach((name, index) => {\n const prevColumnWidth = this.calculatedColumnWidths.get(index);\n if (prevColumnWidth != null) {\n calculatedColumnWidthsByName.set(name, prevColumnWidth);\n }\n });\n this.resetCalculatedColumnWidths();\n calculatedColumnWidthsByName.forEach((width, name) => {\n const index = model.getColumnIndexByName(name);\n if (index != null) {\n this.calculatedColumnWidths.set(index, width);\n }\n });\n trimMap(this.calculatedColumnWidths);\n }\n\n /**\n * Updates the user column widths based on the current model state\n * @param model The current IrisGridModel\n */\n private updateUserColumnWidths(model: IrisGridModel): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName.forEach((width, name) => {\n const modelIndex = model.getColumnIndexByName(name);\n if (modelIndex != null) {\n super.setColumnWidth(modelIndex, width);\n }\n });\n }\n\n /**\n * Updates the user and calculated column widths if the model columns have changed\n * @param model The current IrisGridModel\n */\n private updateColumnWidthsIfNecessary(model: IrisGridModel): void {\n // Comparing model.columns references wouldn't work here because\n // the reference can change in the model without the actual column definitions changing\n const modelColumnNames = this.getCachedCurrentModelColumnNames(\n model.columns\n );\n if (\n this.cachedModelColumnNames != null &&\n this.cachedModelColumnNames !== modelColumnNames &&\n !deepEqual(modelColumnNames, this.cachedModelColumnNames)\n ) {\n // Preserve column widths when possible to minimize visual shifts in the grid layout\n this.updateCalculatedColumnWidths(model);\n this.updateUserColumnWidths(model);\n this.cachedPaddingMaps.clear();\n }\n this.cachedModelColumnNames = modelColumnNames;\n\n if (\n this.cachedHeaderGroupNames != null &&\n !deepEqual(\n this.getCachedCurrentHeaderGroupNames(model.columnHeaderGroups),\n this.cachedHeaderGroupNames\n )\n ) {\n this.resetCalculatedColumnWidths();\n this.cachedPaddingMaps.clear();\n }\n this.cachedHeaderGroupNames = model.columnHeaderGroups.map(\n group => group.name\n );\n }\n\n getGridY(state: IrisGridMetricState): number {\n // The state here seems to be a GridMetricState with stateOverrides passed from IrisGrid in the props,\n // not guaranteed to be IrisGridMetricState\n let gridY = super.getGridY(state);\n const {\n isFilterBarShown,\n theme,\n advancedFilters,\n quickFilters,\n sorts,\n reverse,\n } = state;\n if (isFilterBarShown) {\n gridY += theme.filterBarHeight;\n } else if (\n (quickFilters != null && quickFilters.size > 0) ||\n (advancedFilters != null && advancedFilters.size > 0)\n ) {\n gridY += theme.filterBarCollapsedHeight;\n }\n if (reverse && sorts != null && sorts.length > 0) {\n gridY += theme.reverseHeaderBarHeight;\n }\n\n return gridY;\n }\n\n /**\n * Gets the metrics for the current state. This method has to be called before setColumnSize or resetColumnSize.\n * @param state The current IrisGridMetricState\n * @returns The metrics for the current state\n */\n getMetrics(state: IrisGridMetricState): GridMetrics {\n const { model } = state;\n // Update column widths if columns in the cached model don't match the current model passed in the state\n this.updateColumnWidthsIfNecessary(model);\n\n return super.getMetrics(state);\n }\n\n /**\n * Sets the width for a specific column by index\n * @param column The index of the column to set\n * @param size The new width for the column\n */\n setColumnWidth(column: number, size: number): void {\n super.setColumnWidth(column, size);\n assertNotNull(\n this.cachedModelColumnNames,\n 'setColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.set(name, size);\n trimMap(this.userColumnWidthsByName);\n }\n }\n\n /**\n * Resets the width for a specific column by index\n * @param column The index of the column to reset\n */\n resetColumnWidth(column: number): void {\n super.resetColumnWidth(column);\n assertNotNull(\n this.cachedModelColumnNames,\n 'resetColumnWidth should be called after getMetrics'\n );\n const name = this.cachedModelColumnNames[column];\n if (name != null) {\n this.userColumnWidthsByName.delete(name);\n }\n }\n\n /**\n * Resets all user column widths\n */\n resetAllColumnWidths(): void {\n this.userColumnWidths = new Map<ModelIndex, number>();\n this.userColumnWidthsByName = new Map<ColumnName, number>();\n }\n\n /**\n * Gets the user column widths\n * @returns A map of user column widths\n */\n getUserColumnWidths(): ModelSizeMap {\n // This might return stale data if getMetrics hasn't been called\n return this.userColumnWidths;\n }\n\n getCalculatedColumnWidths(): ModelSizeMap {\n return this.calculatedColumnWidths;\n }\n\n /**\n * Calculate the width of the specified column's header\n * @param modelColumn ModelIndex of the column to get the header width for\n * @param state The grid metric state\n * @param maxColumnWidth Maximum allowed column width, applies only to leaf nodes\n * @returns The calculated width of the column header\n */\n calculateColumnHeaderWidth(\n modelColumn: ModelIndex,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model } = state;\n\n const parent = model.getColumnHeaderParentGroup(modelColumn, 0);\n\n const baseHeaderWidth = super.calculateColumnHeaderWidth(\n modelColumn,\n state,\n maxColumnWidth\n );\n\n // Column header with no grouping, use base implementation\n if (parent == null) {\n return baseHeaderWidth;\n }\n\n const headerPadding = this.getHeaderPadding(\n state,\n modelColumn,\n maxColumnWidth\n );\n\n return baseHeaderWidth + headerPadding;\n }\n\n // Original width of column header group content, including title, padding, icons, etc.\n // Does not include any rebalancing adjustments\n getColumnHeaderGroupWidth(\n modelColumn: ModelIndex,\n depth: number,\n state: IrisGridMetricState,\n maxColumnWidth: number\n ): number {\n const { model, theme, context } = state;\n const { headerHorizontalPadding, headerFont } = theme;\n this.calculateLowerFontWidth(headerFont, context);\n this.calculateUpperFontWidth(headerFont, context);\n\n const padding = headerHorizontalPadding * 2;\n\n const headerText = model.textForColumnHeader(modelColumn, depth);\n\n const isColumnExpandable =\n isExpandableColumnGridModel(model) &&\n model.isColumnExpandable(modelColumn);\n\n const expandCollapseIconWidth = isColumnExpandable ? theme.iconSize : 0;\n\n if (headerText !== undefined && headerText !== '') {\n return (\n this.calculateTextWidth(\n context,\n headerFont,\n headerText,\n maxColumnWidth - padding\n ) +\n padding +\n expandCollapseIconWidth\n );\n }\n\n return padding + expandCollapseIconWidth;\n }\n}\n\nexport default IrisGridMetricCalculator;\n"],"mappings":"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","ignoreList":[]}
|
package/dist/LazyIrisGrid.d.ts
CHANGED
|
@@ -54,6 +54,7 @@ declare const LazyIrisGrid: import("react").ForwardRefExoticComponent<Pick<IrisG
|
|
|
54
54
|
keyHandlers?: readonly import("@deephaven/grid").KeyHandler[] | undefined;
|
|
55
55
|
mouseHandlers?: import("./IrisGrid").MouseHandlersProp | undefined;
|
|
56
56
|
density?: ("compact" | "regular" | "spacious") | undefined;
|
|
57
|
+
getMetricCalculator?: import("./IrisGrid").GetMetricCalculatorType | undefined;
|
|
57
58
|
} & {} & import("react").RefAttributes<IrisGridType>>;
|
|
58
59
|
export default LazyIrisGrid;
|
|
59
60
|
//# sourceMappingURL=LazyIrisGrid.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LazyIrisGrid.d.ts","sourceRoot":"","sources":["../src/LazyIrisGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"LazyIrisGrid.d.ts","sourceRoot":"","sources":["../src/LazyIrisGrid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,YAAY,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAgBjB,CAAC;AAIF,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for tree nodes used in rebalancing
|
|
3
|
+
*/
|
|
4
|
+
export interface TreeNode {
|
|
5
|
+
name: string;
|
|
6
|
+
children: TreeNode[];
|
|
7
|
+
value: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Helper function to rebalance a tree according to the following rules:
|
|
11
|
+
* - Each node value must equal the sum of its immediate children with adjustments
|
|
12
|
+
* - Can only add to nodes, no subtraction
|
|
13
|
+
* - Excess value from parents is distributed evenly among all children
|
|
14
|
+
* - Minimize the sum of all leaf nodes
|
|
15
|
+
*
|
|
16
|
+
* The function does not mutate the tree. Instead, it returns an adjustments map
|
|
17
|
+
* indicating how much to add to each node to achieve the balanced state.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* Tree structure:
|
|
21
|
+
* root(20)
|
|
22
|
+
* / \
|
|
23
|
+
* a(4) b(6)
|
|
24
|
+
* / \ / \
|
|
25
|
+
* c(5) d(1) e(2) f(3)
|
|
26
|
+
*
|
|
27
|
+
* After rebalancing, the adjusted values would be:
|
|
28
|
+
* root(20)
|
|
29
|
+
* / \
|
|
30
|
+
* a(10) b(10)
|
|
31
|
+
* / \ / \
|
|
32
|
+
* c(7) d(3) e(4.5) f(5.5)
|
|
33
|
+
*
|
|
34
|
+
* The resulting adjustments map:
|
|
35
|
+
* {
|
|
36
|
+
* "root": 0,
|
|
37
|
+
* "a": 6,
|
|
38
|
+
* "b": 4,
|
|
39
|
+
* "c": 2,
|
|
40
|
+
* "d": 2,
|
|
41
|
+
* "e": 2.5,
|
|
42
|
+
* "f": 2.5
|
|
43
|
+
* }
|
|
44
|
+
*
|
|
45
|
+
* @param node The root of the tree to rebalance
|
|
46
|
+
* @returns A map of node names to adjustment values
|
|
47
|
+
*/
|
|
48
|
+
export declare function rebalanceTree(node: TreeNode): Map<string, number>;
|
|
49
|
+
export default rebalanceTree;
|
|
50
|
+
//# sourceMappingURL=TreeRebalanceUtil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeRebalanceUtil.d.ts","sourceRoot":"","sources":["../src/TreeRebalanceUtil.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAIjE;AAwED,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interface for tree nodes used in rebalancing
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Helper function to rebalance a tree according to the following rules:
|
|
7
|
+
* - Each node value must equal the sum of its immediate children with adjustments
|
|
8
|
+
* - Can only add to nodes, no subtraction
|
|
9
|
+
* - Excess value from parents is distributed evenly among all children
|
|
10
|
+
* - Minimize the sum of all leaf nodes
|
|
11
|
+
*
|
|
12
|
+
* The function does not mutate the tree. Instead, it returns an adjustments map
|
|
13
|
+
* indicating how much to add to each node to achieve the balanced state.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* Tree structure:
|
|
17
|
+
* root(20)
|
|
18
|
+
* / \
|
|
19
|
+
* a(4) b(6)
|
|
20
|
+
* / \ / \
|
|
21
|
+
* c(5) d(1) e(2) f(3)
|
|
22
|
+
*
|
|
23
|
+
* After rebalancing, the adjusted values would be:
|
|
24
|
+
* root(20)
|
|
25
|
+
* / \
|
|
26
|
+
* a(10) b(10)
|
|
27
|
+
* / \ / \
|
|
28
|
+
* c(7) d(3) e(4.5) f(5.5)
|
|
29
|
+
*
|
|
30
|
+
* The resulting adjustments map:
|
|
31
|
+
* {
|
|
32
|
+
* "root": 0,
|
|
33
|
+
* "a": 6,
|
|
34
|
+
* "b": 4,
|
|
35
|
+
* "c": 2,
|
|
36
|
+
* "d": 2,
|
|
37
|
+
* "e": 2.5,
|
|
38
|
+
* "f": 2.5
|
|
39
|
+
* }
|
|
40
|
+
*
|
|
41
|
+
* @param node The root of the tree to rebalance
|
|
42
|
+
* @returns A map of node names to adjustment values
|
|
43
|
+
*/
|
|
44
|
+
export function rebalanceTree(node) {
|
|
45
|
+
var adjustments = new Map();
|
|
46
|
+
processNode(node, adjustments);
|
|
47
|
+
return adjustments;
|
|
48
|
+
}
|
|
49
|
+
function isLeaf(node) {
|
|
50
|
+
return node.children.length === 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Add a value to a subtree, distributing it evenly among all nodes
|
|
55
|
+
* @param node Current node to process
|
|
56
|
+
* @param amount Amount to add to this subtree
|
|
57
|
+
* @param adjustments Mutable map to store adjustments
|
|
58
|
+
*/
|
|
59
|
+
function addToSubtree(node, amount, adjustments) {
|
|
60
|
+
var _adjustments$get;
|
|
61
|
+
// Add the amount to this node's adjustment
|
|
62
|
+
var prevAdjustment = (_adjustments$get = adjustments.get(node.name)) !== null && _adjustments$get !== void 0 ? _adjustments$get : 0;
|
|
63
|
+
adjustments.set(node.name, prevAdjustment + amount);
|
|
64
|
+
if (!isLeaf(node)) {
|
|
65
|
+
// Distribute the addition evenly among children
|
|
66
|
+
var additionPerChild = amount / node.children.length;
|
|
67
|
+
node.children.forEach(child => addToSubtree(child, additionPerChild, adjustments));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Calculate adjustments map for a subtree
|
|
73
|
+
* @param node Node to process
|
|
74
|
+
* @param adjustments Mutable map to store adjustments
|
|
75
|
+
* @returns The adjusted value for the current node
|
|
76
|
+
*/
|
|
77
|
+
function processNode(node, adjustments) {
|
|
78
|
+
if (isLeaf(node)) {
|
|
79
|
+
return node.value;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Recursively process children first and get their adjusted values
|
|
83
|
+
var childrenAdjustedValues = node.children.map(child => processNode(child, adjustments));
|
|
84
|
+
|
|
85
|
+
// Calculate the adjusted sum of children
|
|
86
|
+
var adjustedChildrenSum = childrenAdjustedValues.reduce((sum, value) => sum + value, 0);
|
|
87
|
+
|
|
88
|
+
// Ensure this node's value is at least the sum of children
|
|
89
|
+
if (node.value <= adjustedChildrenSum) {
|
|
90
|
+
var _adjustments$get2;
|
|
91
|
+
var adjustment = adjustedChildrenSum - node.value;
|
|
92
|
+
var prevAdjustment = (_adjustments$get2 = adjustments.get(node.name)) !== null && _adjustments$get2 !== void 0 ? _adjustments$get2 : 0;
|
|
93
|
+
adjustments.set(node.name, prevAdjustment + adjustment);
|
|
94
|
+
return adjustedChildrenSum;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// Node value exceeds children sum, distribute the excess evenly among all children
|
|
98
|
+
var additionPerChild = (node.value - adjustedChildrenSum) / node.children.length;
|
|
99
|
+
node.children.forEach(child => {
|
|
100
|
+
addToSubtree(child, additionPerChild, adjustments);
|
|
101
|
+
});
|
|
102
|
+
return node.value;
|
|
103
|
+
}
|
|
104
|
+
export default rebalanceTree;
|
|
105
|
+
//# sourceMappingURL=TreeRebalanceUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeRebalanceUtil.js","names":["rebalanceTree","node","adjustments","Map","processNode","isLeaf","children","length","addToSubtree","amount","_adjustments$get","prevAdjustment","get","name","set","additionPerChild","forEach","child","value","childrenAdjustedValues","map","adjustedChildrenSum","reduce","sum","_adjustments$get2","adjustment"],"sources":["../src/TreeRebalanceUtil.ts"],"sourcesContent":["/**\n * Interface for tree nodes used in rebalancing\n */\nexport interface TreeNode {\n name: string;\n children: TreeNode[];\n value: number;\n}\n\n/**\n * Helper function to rebalance a tree according to the following rules:\n * - Each node value must equal the sum of its immediate children with adjustments\n * - Can only add to nodes, no subtraction\n * - Excess value from parents is distributed evenly among all children\n * - Minimize the sum of all leaf nodes\n *\n * The function does not mutate the tree. Instead, it returns an adjustments map\n * indicating how much to add to each node to achieve the balanced state.\n *\n * @example\n * Tree structure:\n * root(20)\n * / \\\n * a(4) b(6)\n * / \\ / \\\n * c(5) d(1) e(2) f(3)\n *\n * After rebalancing, the adjusted values would be:\n * root(20)\n * / \\\n * a(10) b(10)\n * / \\ / \\\n * c(7) d(3) e(4.5) f(5.5)\n *\n * The resulting adjustments map:\n * {\n * \"root\": 0,\n * \"a\": 6,\n * \"b\": 4,\n * \"c\": 2,\n * \"d\": 2,\n * \"e\": 2.5,\n * \"f\": 2.5\n * }\n *\n * @param node The root of the tree to rebalance\n * @returns A map of node names to adjustment values\n */\nexport function rebalanceTree(node: TreeNode): Map<string, number> {\n const adjustments = new Map<string, number>();\n processNode(node, adjustments);\n return adjustments;\n}\n\nfunction isLeaf(node: TreeNode): boolean {\n return node.children.length === 0;\n}\n\n/**\n * Add a value to a subtree, distributing it evenly among all nodes\n * @param node Current node to process\n * @param amount Amount to add to this subtree\n * @param adjustments Mutable map to store adjustments\n */\nfunction addToSubtree(\n node: TreeNode,\n amount: number,\n adjustments: Map<string, number>\n): void {\n // Add the amount to this node's adjustment\n const prevAdjustment = adjustments.get(node.name) ?? 0;\n adjustments.set(node.name, prevAdjustment + amount);\n\n if (!isLeaf(node)) {\n // Distribute the addition evenly among children\n const additionPerChild = amount / node.children.length;\n\n node.children.forEach(child =>\n addToSubtree(child, additionPerChild, adjustments)\n );\n }\n}\n\n/**\n * Calculate adjustments map for a subtree\n * @param node Node to process\n * @param adjustments Mutable map to store adjustments\n * @returns The adjusted value for the current node\n */\nfunction processNode(node: TreeNode, adjustments: Map<string, number>): number {\n if (isLeaf(node)) {\n return node.value;\n }\n\n // Recursively process children first and get their adjusted values\n const childrenAdjustedValues = node.children.map(child =>\n processNode(child, adjustments)\n );\n\n // Calculate the adjusted sum of children\n const adjustedChildrenSum = childrenAdjustedValues.reduce(\n (sum, value) => sum + value,\n 0\n );\n\n // Ensure this node's value is at least the sum of children\n if (node.value <= adjustedChildrenSum) {\n const adjustment = adjustedChildrenSum - node.value;\n const prevAdjustment = adjustments.get(node.name) ?? 0;\n adjustments.set(node.name, prevAdjustment + adjustment);\n\n return adjustedChildrenSum;\n }\n\n // Node value exceeds children sum, distribute the excess evenly among all children\n const additionPerChild =\n (node.value - adjustedChildrenSum) / node.children.length;\n node.children.forEach(child => {\n addToSubtree(child, additionPerChild, adjustments);\n });\n\n return node.value;\n}\n\nexport default rebalanceTree;\n"],"mappings":"AAAA;AACA;AACA;;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,aAAaA,CAACC,IAAc,EAAuB;EACjE,IAAMC,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;EAC7CC,WAAW,CAACH,IAAI,EAAEC,WAAW,CAAC;EAC9B,OAAOA,WAAW;AACpB;AAEA,SAASG,MAAMA,CAACJ,IAAc,EAAW;EACvC,OAAOA,IAAI,CAACK,QAAQ,CAACC,MAAM,KAAK,CAAC;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,YAAYA,CACnBP,IAAc,EACdQ,MAAc,EACdP,WAAgC,EAC1B;EAAA,IAAAQ,gBAAA;EACN;EACA,IAAMC,cAAc,IAAAD,gBAAA,GAAGR,WAAW,CAACU,GAAG,CAACX,IAAI,CAACY,IAAI,CAAC,cAAAH,gBAAA,cAAAA,gBAAA,GAAI,CAAC;EACtDR,WAAW,CAACY,GAAG,CAACb,IAAI,CAACY,IAAI,EAAEF,cAAc,GAAGF,MAAM,CAAC;EAEnD,IAAI,CAACJ,MAAM,CAACJ,IAAI,CAAC,EAAE;IACjB;IACA,IAAMc,gBAAgB,GAAGN,MAAM,GAAGR,IAAI,CAACK,QAAQ,CAACC,MAAM;IAEtDN,IAAI,CAACK,QAAQ,CAACU,OAAO,CAACC,KAAK,IACzBT,YAAY,CAACS,KAAK,EAAEF,gBAAgB,EAAEb,WAAW,CACnD,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,WAAWA,CAACH,IAAc,EAAEC,WAAgC,EAAU;EAC7E,IAAIG,MAAM,CAACJ,IAAI,CAAC,EAAE;IAChB,OAAOA,IAAI,CAACiB,KAAK;EACnB;;EAEA;EACA,IAAMC,sBAAsB,GAAGlB,IAAI,CAACK,QAAQ,CAACc,GAAG,CAACH,KAAK,IACpDb,WAAW,CAACa,KAAK,EAAEf,WAAW,CAChC,CAAC;;EAED;EACA,IAAMmB,mBAAmB,GAAGF,sBAAsB,CAACG,MAAM,CACvD,CAACC,GAAG,EAAEL,KAAK,KAAKK,GAAG,GAAGL,KAAK,EAC3B,CACF,CAAC;;EAED;EACA,IAAIjB,IAAI,CAACiB,KAAK,IAAIG,mBAAmB,EAAE;IAAA,IAAAG,iBAAA;IACrC,IAAMC,UAAU,GAAGJ,mBAAmB,GAAGpB,IAAI,CAACiB,KAAK;IACnD,IAAMP,cAAc,IAAAa,iBAAA,GAAGtB,WAAW,CAACU,GAAG,CAACX,IAAI,CAACY,IAAI,CAAC,cAAAW,iBAAA,cAAAA,iBAAA,GAAI,CAAC;IACtDtB,WAAW,CAACY,GAAG,CAACb,IAAI,CAACY,IAAI,EAAEF,cAAc,GAAGc,UAAU,CAAC;IAEvD,OAAOJ,mBAAmB;EAC5B;;EAEA;EACA,IAAMN,gBAAgB,GACpB,CAACd,IAAI,CAACiB,KAAK,GAAGG,mBAAmB,IAAIpB,IAAI,CAACK,QAAQ,CAACC,MAAM;EAC3DN,IAAI,CAACK,QAAQ,CAACU,OAAO,CAACC,KAAK,IAAI;IAC7BT,YAAY,CAACS,KAAK,EAAEF,gBAAgB,EAAEb,WAAW,CAAC;EACpD,CAAC,CAAC;EAEF,OAAOD,IAAI,CAACiB,KAAK;AACnB;AAEA,eAAelB,aAAa","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';
|
|
3
|
+
type SearchItemProps = {
|
|
4
|
+
value: string;
|
|
5
|
+
item: FlattenedIrisGridTreeItem;
|
|
6
|
+
onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;
|
|
7
|
+
onKeyDown: (name: string, event: React.KeyboardEvent<HTMLElement>) => void;
|
|
8
|
+
handleProps?: Record<string, unknown>;
|
|
9
|
+
};
|
|
10
|
+
declare const MemoizedSearchItem: React.MemoExoticComponent<React.ForwardRefExoticComponent<SearchItemProps & React.RefAttributes<HTMLDivElement>>>;
|
|
11
|
+
export default MemoizedSearchItem;
|
|
12
|
+
//# sourceMappingURL=SearchItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchItem.d.ts","sourceRoot":"","sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAC;AAK7D,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAE3E,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,yBAAyB,CAAC;IAChC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACtE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC3E,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC,CAAC;AA6CF,QAAA,MAAM,kBAAkB,mHAAmB,CAAC;AAE5C,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
import React, { forwardRef, memo, useCallback } from 'react';
|
|
7
|
+
import classNames from 'classnames';
|
|
8
|
+
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
9
|
+
import { vsGripper } from '@deephaven/icons';
|
|
10
|
+
import { Tooltip } from '@deephaven/components';
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
+
var SearchItem = /*#__PURE__*/forwardRef(function SearchItem(props, ref) {
|
|
13
|
+
var {
|
|
14
|
+
value,
|
|
15
|
+
item,
|
|
16
|
+
onClick,
|
|
17
|
+
onKeyDown,
|
|
18
|
+
handleProps
|
|
19
|
+
} = props;
|
|
20
|
+
var handleClick = useCallback(event => {
|
|
21
|
+
onClick(value, event);
|
|
22
|
+
}, [onClick, value]);
|
|
23
|
+
var handleKeyDown = useCallback(event => {
|
|
24
|
+
onKeyDown(value, event);
|
|
25
|
+
}, [onKeyDown, value]);
|
|
26
|
+
return (
|
|
27
|
+
/*#__PURE__*/
|
|
28
|
+
// eslint-disable-next-line jsx-a11y/no-static-element-interactions
|
|
29
|
+
_jsxs("div", _objectSpread(_objectSpread({
|
|
30
|
+
ref: ref,
|
|
31
|
+
className: classNames('tree-item', {
|
|
32
|
+
isSelected: item.selected
|
|
33
|
+
}),
|
|
34
|
+
onClick: handleClick,
|
|
35
|
+
onKeyDownCapture: handleKeyDown,
|
|
36
|
+
"data-index": item.index
|
|
37
|
+
// eslint-disable-next-line react/jsx-props-no-spreading
|
|
38
|
+
}, handleProps), {}, {
|
|
39
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
40
|
+
title: value,
|
|
41
|
+
className: classNames('column-name'),
|
|
42
|
+
children: value
|
|
43
|
+
}), /*#__PURE__*/_jsxs("div", {
|
|
44
|
+
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
45
|
+
children: "Drag to re-order"
|
|
46
|
+
}), /*#__PURE__*/_jsx(FontAwesomeIcon, {
|
|
47
|
+
icon: vsGripper
|
|
48
|
+
})]
|
|
49
|
+
})]
|
|
50
|
+
}))
|
|
51
|
+
);
|
|
52
|
+
});
|
|
53
|
+
var MemoizedSearchItem = /*#__PURE__*/memo(SearchItem);
|
|
54
|
+
export default MemoizedSearchItem;
|
|
55
|
+
//# sourceMappingURL=SearchItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchItem.js","names":["React","forwardRef","memo","useCallback","classNames","FontAwesomeIcon","vsGripper","Tooltip","jsx","_jsx","jsxs","_jsxs","SearchItem","props","ref","value","item","onClick","onKeyDown","handleProps","handleClick","event","handleKeyDown","_objectSpread","className","isSelected","selected","onKeyDownCapture","index","children","title","icon","MemoizedSearchItem"],"sources":["../../../src/sidebar/visibility-ordering-builder/SearchItem.tsx"],"sourcesContent":["import React, { forwardRef, memo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { vsGripper } from '@deephaven/icons';\nimport { Tooltip } from '@deephaven/components';\nimport { type FlattenedIrisGridTreeItem } from './sortable-tree/utilities';\n\ntype SearchItemProps = {\n value: string;\n item: FlattenedIrisGridTreeItem;\n onClick: (name: string, event: React.MouseEvent<HTMLElement>) => void;\n onKeyDown: (name: string, event: React.KeyboardEvent<HTMLElement>) => void;\n handleProps?: Record<string, unknown>;\n};\n\nconst SearchItem = forwardRef<HTMLDivElement, SearchItemProps>(\n function SearchItem(props, ref) {\n const { value, item, onClick, onKeyDown, handleProps } = props;\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n onClick(value, event);\n },\n [onClick, value]\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent<HTMLElement>) => {\n onKeyDown(value, event);\n },\n [onKeyDown, value]\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n <div\n ref={ref}\n className={classNames('tree-item', {\n isSelected: item.selected,\n })}\n onClick={handleClick}\n onKeyDownCapture={handleKeyDown}\n data-index={item.index}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...handleProps}\n >\n <span title={value} className={classNames('column-name')}>\n {value}\n </span>\n <div>\n <Tooltip>Drag to re-order</Tooltip>\n <FontAwesomeIcon icon={vsGripper} />\n </div>\n </div>\n );\n }\n);\n\nconst MemoizedSearchItem = memo(SearchItem);\n\nexport default MemoizedSearchItem;\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,IAAI,EAAEC,WAAW,QAAQ,OAAO;AAC5D,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,OAAO,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAWhD,IAAMC,UAAU,gBAAGX,UAAU,CAC3B,SAASW,UAAUA,CAACC,KAAK,EAAEC,GAAG,EAAE;EAC9B,IAAM;IAAEC,KAAK;IAAEC,IAAI;IAAEC,OAAO;IAAEC,SAAS;IAAEC;EAAY,CAAC,GAAGN,KAAK;EAE9D,IAAMO,WAAW,GAAGjB,WAAW,CAC5BkB,KAAoC,IAAK;IACxCJ,OAAO,CAACF,KAAK,EAAEM,KAAK,CAAC;EACvB,CAAC,EACD,CAACJ,OAAO,EAAEF,KAAK,CACjB,CAAC;EAED,IAAMO,aAAa,GAAGnB,WAAW,CAC9BkB,KAAuC,IAAK;IAC3CH,SAAS,CAACH,KAAK,EAAEM,KAAK,CAAC;EACzB,CAAC,EACD,CAACH,SAAS,EAAEH,KAAK,CACnB,CAAC;EAED;IAAA;IACE;IACAJ,KAAA,QAAAY,aAAA,CAAAA,aAAA;MACET,GAAG,EAAEA,GAAI;MACTU,SAAS,EAAEpB,UAAU,CAAC,WAAW,EAAE;QACjCqB,UAAU,EAAET,IAAI,CAACU;MACnB,CAAC,CAAE;MACHT,OAAO,EAAEG,WAAY;MACrBO,gBAAgB,EAAEL,aAAc;MAChC,cAAYN,IAAI,CAACY;MACjB;IAAA,GACIT,WAAW;MAAAU,QAAA,gBAEfpB,IAAA;QAAMqB,KAAK,EAAEf,KAAM;QAACS,SAAS,EAAEpB,UAAU,CAAC,aAAa,CAAE;QAAAyB,QAAA,EACtDd;MAAK,CACF,CAAC,eACPJ,KAAA;QAAAkB,QAAA,gBACEpB,IAAA,CAACF,OAAO;UAAAsB,QAAA,EAAC;QAAgB,CAAS,CAAC,eACnCpB,IAAA,CAACJ,eAAe;UAAC0B,IAAI,EAAEzB;QAAU,CAAE,CAAC;MAAA,CACjC,CAAC;IAAA,EACH;EAAC;AAEV,CACF,CAAC;AAED,IAAM0B,kBAAkB,gBAAG9B,IAAI,CAACU,UAAU,CAAC;AAE3C,eAAeoB,kBAAkB","ignoreList":[]}
|