@deephaven/grid 0.7.3-beta.8 → 0.8.2-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CellInputField.d.ts +4 -4
- package/dist/CellInputField.d.ts.map +1 -1
- package/dist/CellInputField.js +10 -11
- package/dist/CellInputField.js.map +1 -1
- package/dist/EditableGridModel.d.ts +70 -0
- package/dist/EditableGridModel.d.ts.map +1 -0
- package/dist/EditableGridModel.js +13 -0
- package/dist/EditableGridModel.js.map +1 -0
- package/dist/EventHandlerResult.d.ts +17 -0
- package/dist/EventHandlerResult.d.ts.map +1 -0
- package/dist/EventHandlerResult.js +2 -0
- package/dist/EventHandlerResult.js.map +1 -0
- package/dist/ExpandableGridModel.d.ts +34 -0
- package/dist/ExpandableGridModel.d.ts.map +1 -0
- package/dist/ExpandableGridModel.js +7 -0
- package/dist/ExpandableGridModel.js.map +1 -0
- package/dist/Grid.d.ts +283 -234
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +371 -165
- package/dist/Grid.js.map +1 -1
- package/dist/GridColorUtils.d.ts +22 -12
- package/dist/GridColorUtils.d.ts.map +1 -1
- package/dist/GridColorUtils.js +26 -21
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.d.ts.map +1 -1
- package/dist/GridMetricCalculator.js +8 -41
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridModel.d.ts +54 -60
- package/dist/GridModel.d.ts.map +1 -1
- package/dist/GridModel.js +54 -122
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.d.ts +23 -24
- package/dist/GridMouseHandler.d.ts.map +1 -1
- package/dist/GridMouseHandler.js +6 -14
- package/dist/GridMouseHandler.js.map +1 -1
- package/dist/GridRange.d.ts +2 -2
- package/dist/GridRange.d.ts.map +1 -1
- package/dist/GridRange.js +1 -9
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.d.ts +117 -69
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +183 -168
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridUtils.d.ts +4 -4
- package/dist/GridUtils.js +4 -4
- package/dist/GridUtils.js.map +1 -1
- package/dist/KeyHandler.d.ts +10 -7
- package/dist/KeyHandler.d.ts.map +1 -1
- package/dist/KeyHandler.js +6 -10
- package/dist/KeyHandler.js.map +1 -1
- package/dist/MockGridData.d.ts +1 -1
- package/dist/MockGridData.d.ts.map +1 -1
- package/dist/MockGridData.js.map +1 -1
- package/dist/MockGridModel.d.ts +39 -12
- package/dist/MockGridModel.d.ts.map +1 -1
- package/dist/MockGridModel.js +24 -10
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.d.ts +37 -22
- package/dist/MockTreeGridModel.d.ts.map +1 -1
- package/dist/MockTreeGridModel.js +32 -20
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/errors/AssertionError.d.ts +5 -0
- package/dist/errors/AssertionError.d.ts.map +1 -0
- package/dist/errors/AssertionError.js +12 -0
- package/dist/errors/AssertionError.js.map +1 -0
- package/dist/errors/PasteError.d.ts +1 -1
- package/dist/errors/PasteError.d.ts.map +1 -1
- package/dist/errors/PasteError.js +1 -2
- package/dist/errors/PasteError.js.map +1 -1
- package/dist/errors/assertIsDefined.d.ts +3 -0
- package/dist/errors/assertIsDefined.d.ts.map +1 -0
- package/dist/errors/assertIsDefined.js +8 -0
- package/dist/errors/assertIsDefined.js.map +1 -0
- package/dist/errors/index.d.ts +2 -0
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +2 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.d.ts +3 -2
- package/dist/key-handlers/EditKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +10 -9
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.d.ts +3 -5
- package/dist/key-handlers/PasteKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js +3 -3
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.d.ts +5 -5
- package/dist/key-handlers/SelectionKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +16 -15
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.d.ts +2 -2
- package/dist/key-handlers/TreeKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +14 -12
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/memoizeClear.d.ts +13 -3
- package/dist/memoizeClear.d.ts.map +1 -1
- package/dist/memoizeClear.js +7 -7
- package/dist/memoizeClear.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.d.ts +3 -4
- package/dist/mouse-handlers/EditMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js +3 -2
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +12 -5
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +11 -12
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +24 -3
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts +16 -6
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +40 -38
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts +10 -3
- package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +13 -12
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +24 -3
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +4 -3
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts +8 -3
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +12 -7
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts +9 -3
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +2 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts +15 -9
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +22 -20
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +46 -28
- package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +45 -86
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts +16 -6
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +40 -38
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -3,19 +3,17 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.definePrope
|
|
|
3
3
|
/* eslint class-methods-use-this: "off" */
|
|
4
4
|
|
|
5
5
|
/* eslint no-unused-vars: "off" */
|
|
6
|
+
import { getOrThrow } from "../GridMetricCalculator.js";
|
|
6
7
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
7
|
-
|
|
8
|
+
|
|
8
9
|
/**
|
|
9
10
|
* Abstract class that should be extended for column/row behaviour
|
|
10
11
|
* Override the necessary functions/properties
|
|
11
12
|
*/
|
|
12
|
-
|
|
13
13
|
class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
14
14
|
constructor() {
|
|
15
15
|
super(...arguments);
|
|
16
16
|
|
|
17
|
-
_defineProperty(this, "draggingIndex", null);
|
|
18
|
-
|
|
19
17
|
_defineProperty(this, "resizingItems", []);
|
|
20
18
|
|
|
21
19
|
_defineProperty(this, "hiddenItems", []);
|
|
@@ -23,76 +21,24 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
23
21
|
_defineProperty(this, "targetSizes", new Map());
|
|
24
22
|
|
|
25
23
|
_defineProperty(this, "dragOffset", 0);
|
|
26
|
-
|
|
27
|
-
_defineProperty(this, "cursor", OVERRIDE_STRING);
|
|
28
|
-
|
|
29
|
-
_defineProperty(this, "hiddenCursor", OVERRIDE_STRING);
|
|
30
|
-
|
|
31
|
-
_defineProperty(this, "defaultCursor", OVERRIDE_STRING);
|
|
32
|
-
|
|
33
|
-
_defineProperty(this, "pointProperty", OVERRIDE_STRING);
|
|
34
|
-
|
|
35
|
-
_defineProperty(this, "userSizesProperty", OVERRIDE_STRING);
|
|
36
|
-
|
|
37
|
-
_defineProperty(this, "visibleOffsetProperty", OVERRIDE_STRING);
|
|
38
|
-
|
|
39
|
-
_defineProperty(this, "visibleSizesProperty", OVERRIDE_STRING);
|
|
40
|
-
|
|
41
|
-
_defineProperty(this, "marginProperty", OVERRIDE_STRING);
|
|
42
|
-
|
|
43
|
-
_defineProperty(this, "calculatedSizesProperty", OVERRIDE_STRING);
|
|
44
|
-
|
|
45
|
-
_defineProperty(this, "modelIndexesProperty", OVERRIDE_STRING);
|
|
46
|
-
|
|
47
|
-
_defineProperty(this, "firstIndexProperty", OVERRIDE_STRING);
|
|
48
|
-
|
|
49
|
-
_defineProperty(this, "treePaddingProperty", OVERRIDE_STRING);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
getHiddenItems(itemIndex, metrics) {
|
|
53
|
-
throw new Error('Need to override getHiddenItems');
|
|
54
24
|
}
|
|
55
25
|
|
|
56
|
-
|
|
57
|
-
throw new Error('Need to override getNextShownItem');
|
|
58
|
-
} // eslint-disable-next-line no-unused-vars
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
setSize(metricCalculator, modelIndex, size) {
|
|
62
|
-
throw new Error('Need to override setSize');
|
|
63
|
-
} // eslint-disable-next-line no-unused-vars
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
resetSize(metricCalculator, modelIndex) {
|
|
67
|
-
throw new Error('Need to override resetSize');
|
|
68
|
-
} // eslint-disable-next-line no-unused-vars
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
updateSeparator(grid, separatorIndex) {
|
|
72
|
-
throw new Error('Need to override updateSeparator');
|
|
73
|
-
} // eslint-disable-next-line no-unused-vars
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
getSeparatorIndex(gridPoint, grid) {
|
|
77
|
-
var checkAllowResize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
78
|
-
throw new Error('Need to override getSeparatorIndex');
|
|
79
|
-
} // End of overrides
|
|
80
|
-
|
|
81
|
-
|
|
26
|
+
// End of overrides
|
|
82
27
|
onDown(gridPoint, grid) {
|
|
83
28
|
var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
|
|
84
29
|
|
|
85
30
|
if (separatorIndex != null) {
|
|
86
31
|
var {
|
|
87
|
-
metrics
|
|
32
|
+
metrics: _metrics
|
|
88
33
|
} = grid;
|
|
34
|
+
if (!_metrics) throw new Error('metrics not set');
|
|
89
35
|
this.dragOffset = 0;
|
|
90
36
|
this.draggingIndex = separatorIndex;
|
|
91
37
|
this.resizingItems = [separatorIndex];
|
|
92
|
-
this.hiddenItems = this.getHiddenItems(separatorIndex,
|
|
38
|
+
this.hiddenItems = this.getHiddenItems(separatorIndex, _metrics).reverse();
|
|
93
39
|
this.targetSizes.clear();
|
|
94
|
-
this.addTargetSize(
|
|
95
|
-
this.updateCursor(
|
|
40
|
+
this.addTargetSize(_metrics, separatorIndex);
|
|
41
|
+
this.updateCursor(_metrics, separatorIndex);
|
|
96
42
|
this.updateSeparator(grid, separatorIndex);
|
|
97
43
|
return true;
|
|
98
44
|
}
|
|
@@ -105,9 +51,10 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
105
51
|
|
|
106
52
|
if (separatorIndex != null) {
|
|
107
53
|
var {
|
|
108
|
-
metrics
|
|
54
|
+
metrics: _metrics2
|
|
109
55
|
} = grid;
|
|
110
|
-
|
|
56
|
+
if (!_metrics2) throw new Error('metrics not set');
|
|
57
|
+
this.updateCursor(_metrics2, separatorIndex);
|
|
111
58
|
return true;
|
|
112
59
|
}
|
|
113
60
|
|
|
@@ -124,6 +71,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
124
71
|
metricCalculator,
|
|
125
72
|
metrics
|
|
126
73
|
} = grid;
|
|
74
|
+
if (!metrics) throw new Error('metrics not set');
|
|
127
75
|
var theme = grid.getTheme();
|
|
128
76
|
var visibleOffsets = metrics[this.visibleOffsetProperty];
|
|
129
77
|
var margin = metrics[this.marginProperty];
|
|
@@ -137,13 +85,15 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
137
85
|
var resizeIndex = this.resizingItems[this.resizingItems.length - 1];
|
|
138
86
|
|
|
139
87
|
while (resizeIndex != null) {
|
|
140
|
-
var itemOffset = visibleOffsets
|
|
88
|
+
var itemOffset = getOrThrow(visibleOffsets, resizeIndex);
|
|
141
89
|
var itemSize = point - margin - itemOffset - this.dragOffset;
|
|
142
|
-
|
|
143
|
-
var
|
|
90
|
+
|
|
91
|
+
var _modelIndex = getOrThrow(modelIndexes, resizeIndex);
|
|
92
|
+
|
|
93
|
+
var targetSize = this.targetSizes.get(_modelIndex);
|
|
144
94
|
var isResizingMultiple = this.resizingItems.length > 1;
|
|
145
95
|
var hiddenIndex = this.hiddenItems.indexOf(resizeIndex);
|
|
146
|
-
var calculatedSize = calculatedSizes
|
|
96
|
+
var calculatedSize = getOrThrow(calculatedSizes, _modelIndex);
|
|
147
97
|
|
|
148
98
|
if (resizeIndex === firstIndex) {
|
|
149
99
|
calculatedSize += treePadding;
|
|
@@ -154,7 +104,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
154
104
|
if (Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold) {
|
|
155
105
|
// Snapping behaviour to "natural" width
|
|
156
106
|
newSize = null;
|
|
157
|
-
} else if (itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
|
|
107
|
+
} else if (targetSize !== undefined && itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
|
|
158
108
|
newSize = targetSize;
|
|
159
109
|
} else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {
|
|
160
110
|
// Snapping to hidden item
|
|
@@ -162,26 +112,28 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
162
112
|
}
|
|
163
113
|
|
|
164
114
|
if (newSize !== calculatedSize) {
|
|
165
|
-
newSizes.set(
|
|
115
|
+
newSizes.set(_modelIndex, newSize);
|
|
166
116
|
} else {
|
|
167
|
-
newSizes.set(
|
|
117
|
+
newSizes.set(_modelIndex, null);
|
|
168
118
|
}
|
|
169
119
|
|
|
170
120
|
if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {
|
|
171
121
|
if (hiddenIndex >= 0 && isResizingMultiple) {
|
|
122
|
+
var _this$targetSizes$get;
|
|
123
|
+
|
|
172
124
|
this.resizingItems.pop();
|
|
173
125
|
this.removeTargetSize(metrics, resizeIndex);
|
|
174
126
|
resizeIndex = this.resizingItems[this.resizingItems.length - 1];
|
|
175
|
-
this.dragOffset -= this.targetSizes.get(modelIndexes
|
|
127
|
+
this.dragOffset -= (_this$targetSizes$get = this.targetSizes.get(getOrThrow(modelIndexes, resizeIndex))) !== null && _this$targetSizes$get !== void 0 ? _this$targetSizes$get : 0;
|
|
176
128
|
} else {
|
|
177
129
|
resizeIndex = this.getNextShownItem(resizeIndex, metrics);
|
|
178
130
|
|
|
179
|
-
if (resizeIndex
|
|
131
|
+
if (resizeIndex !== null) {
|
|
180
132
|
this.resizingItems.push(resizeIndex);
|
|
181
133
|
this.addTargetSize(metrics, resizeIndex);
|
|
182
134
|
}
|
|
183
135
|
}
|
|
184
|
-
} else if (itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
|
|
136
|
+
} else if (targetSize !== undefined && itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
|
|
185
137
|
if (hiddenIndex > 0) {
|
|
186
138
|
this.dragOffset += newSize;
|
|
187
139
|
resizeIndex = this.hiddenItems[hiddenIndex - 1];
|
|
@@ -200,15 +152,19 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
200
152
|
}
|
|
201
153
|
|
|
202
154
|
newSizes.forEach((newSize, modelIndex) => {
|
|
203
|
-
|
|
155
|
+
if (newSize !== null) {
|
|
156
|
+
this.setSize(metricCalculator, modelIndex, newSize);
|
|
157
|
+
} else {
|
|
158
|
+
this.resetSize(metricCalculator, modelIndex);
|
|
159
|
+
}
|
|
204
160
|
});
|
|
205
161
|
this.updateCursor(metrics, this.draggingIndex);
|
|
206
162
|
return true;
|
|
207
163
|
}
|
|
208
164
|
|
|
209
|
-
onUp(
|
|
165
|
+
onUp(gridPoint, grid) {
|
|
210
166
|
if (this.draggingIndex != null) {
|
|
211
|
-
this.draggingIndex =
|
|
167
|
+
this.draggingIndex = undefined;
|
|
212
168
|
this.resizingItems = [];
|
|
213
169
|
this.hiddenItems = [];
|
|
214
170
|
this.targetSizes.clear();
|
|
@@ -223,12 +179,15 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
223
179
|
|
|
224
180
|
if (separatorIndex != null) {
|
|
225
181
|
var {
|
|
226
|
-
metricCalculator,
|
|
227
|
-
metrics
|
|
182
|
+
metricCalculator: _metricCalculator,
|
|
183
|
+
metrics: _metrics3
|
|
228
184
|
} = grid;
|
|
229
|
-
|
|
230
|
-
var
|
|
231
|
-
|
|
185
|
+
if (!_metrics3) throw new Error('metrics not set');
|
|
186
|
+
var modelIndexes = _metrics3[this.modelIndexesProperty];
|
|
187
|
+
|
|
188
|
+
var _modelIndex2 = getOrThrow(modelIndexes, separatorIndex);
|
|
189
|
+
|
|
190
|
+
this.resetSize(_metricCalculator, _modelIndex2);
|
|
232
191
|
grid.forceUpdate();
|
|
233
192
|
return true;
|
|
234
193
|
}
|
|
@@ -238,7 +197,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
238
197
|
|
|
239
198
|
updateCursor(metrics, itemIndex) {
|
|
240
199
|
var visibleSizes = metrics[this.visibleSizesProperty];
|
|
241
|
-
var itemSize = visibleSizes
|
|
200
|
+
var itemSize = getOrThrow(visibleSizes, itemIndex);
|
|
242
201
|
|
|
243
202
|
if (itemSize === 0) {
|
|
244
203
|
this.cursor = this.hiddenCursor;
|
|
@@ -252,11 +211,11 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
252
211
|
var userSizes = metrics[this.userSizesProperty];
|
|
253
212
|
var calculatedSizes = metrics[this.calculatedSizesProperty];
|
|
254
213
|
var treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;
|
|
255
|
-
var modelIndex = modelIndexes
|
|
214
|
+
var modelIndex = getOrThrow(modelIndexes, itemIndex);
|
|
256
215
|
var targetSize = userSizes.get(modelIndex);
|
|
257
216
|
|
|
258
217
|
if (targetSize == null || targetSize === 0) {
|
|
259
|
-
targetSize = calculatedSizes
|
|
218
|
+
targetSize = getOrThrow(calculatedSizes, modelIndex) + treePadding;
|
|
260
219
|
}
|
|
261
220
|
|
|
262
221
|
this.targetSizes.set(modelIndex, targetSize);
|
|
@@ -264,7 +223,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
264
223
|
|
|
265
224
|
removeTargetSize(metrics, itemIndex) {
|
|
266
225
|
var modelIndexes = metrics[this.modelIndexesProperty];
|
|
267
|
-
var modelIndex = modelIndexes
|
|
226
|
+
var modelIndex = getOrThrow(modelIndexes, itemIndex);
|
|
268
227
|
this.targetSizes.delete(modelIndex);
|
|
269
228
|
}
|
|
270
229
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.js"],"names":["GridMouseHandler","OVERRIDE_STRING","GridSeparatorMouseHandler","Map","getHiddenItems","itemIndex","metrics","Error","getNextShownItem","setSize","metricCalculator","modelIndex","size","resetSize","updateSeparator","grid","separatorIndex","getSeparatorIndex","gridPoint","checkAllowResize","onDown","dragOffset","draggingIndex","resizingItems","hiddenItems","reverse","targetSizes","clear","addTargetSize","updateCursor","onMove","onDrag","point","pointProperty","theme","getTheme","visibleOffsets","visibleOffsetProperty","margin","marginProperty","calculatedSizes","calculatedSizesProperty","modelIndexes","modelIndexesProperty","firstIndex","firstIndexProperty","treePadding","treePaddingProperty","newSizes","resizeIndex","length","itemOffset","get","itemSize","targetSize","isResizingMultiple","hiddenIndex","indexOf","calculatedSize","newSize","Math","abs","headerResizeSnapThreshold","headerResizeHiddenSnapThreshold","set","pop","removeTargetSize","push","forEach","onUp","_","onDoubleClick","forceUpdate","visibleSizes","visibleSizesProperty","cursor","hiddenCursor","defaultCursor","userSizes","userSizesProperty","delete"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport GridMouseHandler from '../GridMouseHandler';\n\nconst OVERRIDE_STRING = 'NEED_TO_OVERRIDE_PROPERTY';\n\n/**\n * Abstract class that should be extended for column/row behaviour\n * Override the necessary functions/properties\n */\nclass GridSeparatorMouseHandler extends GridMouseHandler {\n // The index where dragging the column separator started\n draggingIndex = null;\n\n // The columns in the order they're being resized\n resizingItems = [];\n\n // Columns that were hidden under the separator when starting a drag\n hiddenItems = [];\n\n // The target width of the columns being resized\n targetSizes = new Map();\n\n dragOffset = 0;\n\n // Override/Implement these properties/functions\n cursor = OVERRIDE_STRING;\n\n hiddenCursor = OVERRIDE_STRING;\n\n defaultCursor = OVERRIDE_STRING;\n\n pointProperty = OVERRIDE_STRING;\n\n userSizesProperty = OVERRIDE_STRING;\n\n visibleOffsetProperty = OVERRIDE_STRING;\n\n visibleSizesProperty = OVERRIDE_STRING;\n\n marginProperty = OVERRIDE_STRING;\n\n calculatedSizesProperty = OVERRIDE_STRING;\n\n modelIndexesProperty = OVERRIDE_STRING;\n\n firstIndexProperty = OVERRIDE_STRING;\n\n treePaddingProperty = OVERRIDE_STRING;\n\n getHiddenItems(itemIndex, metrics) {\n throw new Error('Need to override getHiddenItems');\n }\n\n getNextShownItem(itemIndex, metrics) {\n throw new Error('Need to override getNextShownItem');\n }\n\n // eslint-disable-next-line no-unused-vars\n setSize(metricCalculator, modelIndex, size) {\n throw new Error('Need to override setSize');\n }\n\n // eslint-disable-next-line no-unused-vars\n resetSize(metricCalculator, modelIndex) {\n throw new Error('Need to override resetSize');\n }\n\n // eslint-disable-next-line no-unused-vars\n updateSeparator(grid, separatorIndex) {\n throw new Error('Need to override updateSeparator');\n }\n\n // eslint-disable-next-line no-unused-vars\n getSeparatorIndex(gridPoint, grid, checkAllowResize = true) {\n throw new Error('Need to override getSeparatorIndex');\n }\n // End of overrides\n\n onDown(gridPoint, grid) {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n if (separatorIndex != null) {\n const { metrics } = grid;\n\n this.dragOffset = 0;\n this.draggingIndex = separatorIndex;\n this.resizingItems = [separatorIndex];\n this.hiddenItems = this.getHiddenItems(separatorIndex, metrics).reverse();\n this.targetSizes.clear();\n\n this.addTargetSize(metrics, separatorIndex);\n\n this.updateCursor(metrics, separatorIndex);\n\n this.updateSeparator(grid, separatorIndex);\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint, grid) {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n if (separatorIndex != null) {\n const { metrics } = grid;\n this.updateCursor(metrics, separatorIndex);\n return true;\n }\n return false;\n }\n\n onDrag(gridPoint, grid) {\n if (this.draggingIndex == null) {\n return false;\n }\n\n const point = gridPoint[this.pointProperty];\n const { metricCalculator, metrics } = grid;\n const theme = grid.getTheme();\n\n const visibleOffsets = metrics[this.visibleOffsetProperty];\n const margin = metrics[this.marginProperty];\n const calculatedSizes = metrics[this.calculatedSizesProperty];\n const modelIndexes = metrics[this.modelIndexesProperty];\n const firstIndex = metrics[this.firstIndexProperty];\n const treePadding = metrics[this.treePaddingProperty];\n\n // New sizes are batched and applied after the loop to avoid updating state while calculating next step\n const newSizes = new Map();\n\n // Use a loop as we may need to resize multiple items if they drag quickly\n let resizeIndex = this.resizingItems[this.resizingItems.length - 1];\n while (resizeIndex != null) {\n const itemOffset = visibleOffsets.get(resizeIndex);\n const itemSize = point - margin - itemOffset - this.dragOffset;\n const modelIndex = modelIndexes.get(resizeIndex);\n const targetSize = this.targetSizes.get(modelIndex);\n const isResizingMultiple = this.resizingItems.length > 1;\n const hiddenIndex = this.hiddenItems.indexOf(resizeIndex);\n let calculatedSize = calculatedSizes.get(modelIndex);\n if (resizeIndex === firstIndex) {\n calculatedSize += treePadding;\n }\n let newSize = itemSize;\n if (\n Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold\n ) {\n // Snapping behaviour to \"natural\" width\n newSize = null;\n } else if (\n itemSize > targetSize &&\n ((isResizingMultiple && hiddenIndex !== 0) || hiddenIndex > 0)\n ) {\n newSize = targetSize;\n } else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {\n // Snapping to hidden item\n newSize = 0;\n }\n\n if (newSize !== calculatedSize) {\n newSizes.set(modelIndex, newSize);\n } else {\n newSizes.set(modelIndex, null);\n }\n\n if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {\n if (hiddenIndex >= 0 && isResizingMultiple) {\n this.resizingItems.pop();\n this.removeTargetSize(metrics, resizeIndex);\n resizeIndex = this.resizingItems[this.resizingItems.length - 1];\n this.dragOffset -= this.targetSizes.get(\n modelIndexes.get(resizeIndex)\n );\n } else {\n resizeIndex = this.getNextShownItem(resizeIndex, metrics);\n if (resizeIndex != null) {\n this.resizingItems.push(resizeIndex);\n this.addTargetSize(metrics, resizeIndex);\n }\n }\n } else if (\n itemSize > targetSize + theme.headerResizeSnapThreshold &&\n newSize === targetSize\n ) {\n if (hiddenIndex > 0) {\n this.dragOffset += newSize;\n resizeIndex = this.hiddenItems[hiddenIndex - 1];\n this.resizingItems.push(resizeIndex);\n this.addTargetSize(metrics, resizeIndex);\n } else if (isResizingMultiple) {\n this.resizingItems.pop();\n this.removeTargetSize(metrics, resizeIndex);\n resizeIndex = this.resizingItems[this.resizingItems.length - 1];\n } else {\n resizeIndex = null;\n }\n } else {\n resizeIndex = null;\n }\n }\n\n newSizes.forEach((newSize, modelIndex) => {\n this.setSize(metricCalculator, modelIndex, newSize);\n });\n\n this.updateCursor(metrics, this.draggingIndex);\n\n return true;\n }\n\n onUp(_, grid) {\n if (this.draggingIndex != null) {\n this.draggingIndex = null;\n this.resizingItems = [];\n this.hiddenItems = [];\n this.targetSizes.clear();\n\n this.updateSeparator(grid, null);\n }\n\n return false;\n }\n\n onDoubleClick(gridPoint, grid) {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n\n if (separatorIndex != null) {\n const { metricCalculator, metrics } = grid;\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = modelIndexes.get(separatorIndex);\n\n this.resetSize(metricCalculator, modelIndex);\n\n grid.forceUpdate();\n\n return true;\n }\n return false;\n }\n\n updateCursor(metrics, itemIndex) {\n const visibleSizes = metrics[this.visibleSizesProperty];\n const itemSize = visibleSizes.get(itemIndex);\n if (itemSize === 0) {\n this.cursor = this.hiddenCursor;\n } else {\n this.cursor = this.defaultCursor;\n }\n }\n\n addTargetSize(metrics, itemIndex) {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const userSizes = metrics[this.userSizesProperty];\n const calculatedSizes = metrics[this.calculatedSizesProperty];\n const treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;\n\n const modelIndex = modelIndexes.get(itemIndex);\n let targetSize = userSizes.get(modelIndex);\n if (targetSize == null || targetSize === 0) {\n targetSize = calculatedSizes.get(modelIndex) + treePadding;\n }\n this.targetSizes.set(modelIndex, targetSize);\n }\n\n removeTargetSize(metrics, itemIndex) {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = modelIndexes.get(itemIndex);\n this.targetSizes.delete(modelIndex);\n }\n}\n\nexport default GridSeparatorMouseHandler;\n"],"file":"GridSeparatorMouseHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.ts"],"names":["getOrThrow","GridMouseHandler","GridSeparatorMouseHandler","Map","onDown","gridPoint","grid","separatorIndex","getSeparatorIndex","metrics","Error","dragOffset","draggingIndex","resizingItems","hiddenItems","getHiddenItems","reverse","targetSizes","clear","addTargetSize","updateCursor","updateSeparator","onMove","onDrag","point","pointProperty","metricCalculator","theme","getTheme","visibleOffsets","visibleOffsetProperty","margin","marginProperty","calculatedSizes","calculatedSizesProperty","modelIndexes","modelIndexesProperty","firstIndex","firstIndexProperty","treePadding","treePaddingProperty","newSizes","resizeIndex","length","itemOffset","itemSize","modelIndex","targetSize","get","isResizingMultiple","hiddenIndex","indexOf","calculatedSize","newSize","Math","abs","headerResizeSnapThreshold","undefined","headerResizeHiddenSnapThreshold","set","pop","removeTargetSize","getNextShownItem","push","forEach","setSize","resetSize","onUp","onDoubleClick","forceUpdate","itemIndex","visibleSizes","visibleSizesProperty","cursor","hiddenCursor","defaultCursor","userSizes","userSizesProperty","delete"],"mappings":"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","sourcesContent":["/* eslint class-methods-use-this: \"off\" */\n/* eslint no-unused-vars: \"off\" */\nimport { Grid, GridMetricCalculator } from '..';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMetrics, { ModelIndex, VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n// The different properties that can be used by implementing classes, whether for rows or columns\nexport type PointProperty = 'x' | 'y';\nexport type UserSizeProperty = 'userRowHeights' | 'userColumnWidths';\nexport type VisibleOffsetProperty = 'visibleRowYs' | 'visibleColumnXs';\nexport type VisibleSizeProperty = 'visibleRowHeights' | 'visibleColumnWidths';\nexport type MarginProperty = 'columnHeaderHeight' | 'rowHeaderWidth';\nexport type CalculatedSizeProperty =\n | 'calculatedRowHeights'\n | 'calculatedColumnWidths';\nexport type ModelIndexesProperty = 'modelRows' | 'modelColumns';\nexport type FirstIndexProperty = 'firstRow' | 'firstColumn';\nexport type TreePaddingProperty = 'treePaddingX' | 'treePaddingY';\n\n/**\n * Abstract class that should be extended for column/row behaviour\n * Override the necessary functions/properties\n */\nabstract class GridSeparatorMouseHandler extends GridMouseHandler {\n // The index where dragging the column separator started\n protected draggingIndex?: VisibleIndex;\n\n // The columns in the order they're being resized\n protected resizingItems: VisibleIndex[] = [];\n\n // Columns that were hidden under the separator when starting a drag\n protected hiddenItems: VisibleIndex[] = [];\n\n // The target width of the columns being resized\n protected targetSizes: Map<ModelIndex, number> = new Map();\n\n protected dragOffset = 0;\n\n // Override/Implement these properties/functions\n abstract hiddenCursor: string;\n\n abstract defaultCursor: string;\n\n abstract pointProperty: PointProperty;\n\n abstract userSizesProperty: UserSizeProperty;\n\n abstract visibleOffsetProperty: VisibleOffsetProperty;\n\n abstract visibleSizesProperty: VisibleSizeProperty;\n\n abstract marginProperty: MarginProperty;\n\n abstract calculatedSizesProperty: CalculatedSizeProperty;\n\n abstract modelIndexesProperty: ModelIndexesProperty;\n\n abstract firstIndexProperty: FirstIndexProperty;\n\n abstract treePaddingProperty: TreePaddingProperty;\n\n abstract getHiddenItems(\n itemIndex: VisibleIndex,\n metrics: GridMetrics\n ): VisibleIndex[];\n\n abstract getNextShownItem(\n itemIndex: VisibleIndex,\n metrics: GridMetrics\n ): VisibleIndex | null;\n\n abstract setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void;\n\n abstract resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void;\n\n abstract updateSeparator(\n grid: Grid,\n separatorIndex: VisibleIndex | null\n ): void;\n\n abstract getSeparatorIndex(\n gridPoint: GridPoint,\n grid: Grid,\n checkAllowResize?: boolean\n ): VisibleIndex | null;\n // End of overrides\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n if (separatorIndex != null) {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n this.dragOffset = 0;\n this.draggingIndex = separatorIndex;\n this.resizingItems = [separatorIndex];\n this.hiddenItems = this.getHiddenItems(separatorIndex, metrics).reverse();\n this.targetSizes.clear();\n\n this.addTargetSize(metrics, separatorIndex);\n\n this.updateCursor(metrics, separatorIndex);\n\n this.updateSeparator(grid, separatorIndex);\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n if (separatorIndex != null) {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n this.updateCursor(metrics, separatorIndex);\n return true;\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingIndex == null) {\n return false;\n }\n\n const point = gridPoint[this.pointProperty];\n const { metricCalculator, metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const theme = grid.getTheme();\n\n const visibleOffsets = metrics[this.visibleOffsetProperty];\n const margin = metrics[this.marginProperty];\n const calculatedSizes = metrics[this.calculatedSizesProperty];\n const modelIndexes = metrics[this.modelIndexesProperty];\n const firstIndex = metrics[this.firstIndexProperty];\n const treePadding = metrics[this.treePaddingProperty];\n\n // New sizes are batched and applied after the loop to avoid updating state while calculating next step\n const newSizes: Map<ModelIndex, number | null> = new Map();\n\n // Use a loop as we may need to resize multiple items if they drag quickly\n let resizeIndex: number | null = this.resizingItems[\n this.resizingItems.length - 1\n ];\n while (resizeIndex != null) {\n const itemOffset = getOrThrow(visibleOffsets, resizeIndex);\n const itemSize = point - margin - itemOffset - this.dragOffset;\n const modelIndex = getOrThrow(modelIndexes, resizeIndex);\n const targetSize = this.targetSizes.get(modelIndex);\n const isResizingMultiple = this.resizingItems.length > 1;\n const hiddenIndex = this.hiddenItems.indexOf(resizeIndex);\n let calculatedSize = getOrThrow(calculatedSizes, modelIndex);\n if (resizeIndex === firstIndex) {\n calculatedSize += treePadding;\n }\n let newSize: number | null = itemSize;\n if (\n Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold\n ) {\n // Snapping behaviour to \"natural\" width\n newSize = null;\n } else if (\n targetSize !== undefined &&\n itemSize > targetSize &&\n ((isResizingMultiple && hiddenIndex !== 0) || hiddenIndex > 0)\n ) {\n newSize = targetSize;\n } else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {\n // Snapping to hidden item\n newSize = 0;\n }\n\n if (newSize !== calculatedSize) {\n newSizes.set(modelIndex, newSize);\n } else {\n newSizes.set(modelIndex, null);\n }\n\n if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {\n if (hiddenIndex >= 0 && isResizingMultiple) {\n this.resizingItems.pop();\n this.removeTargetSize(metrics, resizeIndex);\n resizeIndex = this.resizingItems[this.resizingItems.length - 1];\n this.dragOffset -=\n this.targetSizes.get(getOrThrow(modelIndexes, resizeIndex)) ?? 0;\n } else {\n resizeIndex = this.getNextShownItem(resizeIndex, metrics);\n if (resizeIndex !== null) {\n this.resizingItems.push(resizeIndex);\n this.addTargetSize(metrics, resizeIndex);\n }\n }\n } else if (\n targetSize !== undefined &&\n itemSize > targetSize + theme.headerResizeSnapThreshold &&\n newSize === targetSize\n ) {\n if (hiddenIndex > 0) {\n this.dragOffset += newSize;\n resizeIndex = this.hiddenItems[hiddenIndex - 1];\n this.resizingItems.push(resizeIndex);\n this.addTargetSize(metrics, resizeIndex);\n } else if (isResizingMultiple) {\n this.resizingItems.pop();\n this.removeTargetSize(metrics, resizeIndex);\n resizeIndex = this.resizingItems[this.resizingItems.length - 1];\n } else {\n resizeIndex = null;\n }\n } else {\n resizeIndex = null;\n }\n }\n\n newSizes.forEach((newSize, modelIndex) => {\n if (newSize !== null) {\n this.setSize(metricCalculator, modelIndex, newSize);\n } else {\n this.resetSize(metricCalculator, modelIndex);\n }\n });\n\n this.updateCursor(metrics, this.draggingIndex);\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingIndex != null) {\n this.draggingIndex = undefined;\n this.resizingItems = [];\n this.hiddenItems = [];\n this.targetSizes.clear();\n\n this.updateSeparator(grid, null);\n }\n\n return false;\n }\n\n onDoubleClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const separatorIndex = this.getSeparatorIndex(gridPoint, grid);\n\n if (separatorIndex != null) {\n const { metricCalculator, metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = getOrThrow(modelIndexes, separatorIndex);\n\n this.resetSize(metricCalculator, modelIndex);\n\n grid.forceUpdate();\n\n return true;\n }\n return false;\n }\n\n updateCursor(metrics: GridMetrics, itemIndex: VisibleIndex): void {\n const visibleSizes = metrics[this.visibleSizesProperty];\n const itemSize = getOrThrow(visibleSizes, itemIndex);\n if (itemSize === 0) {\n this.cursor = this.hiddenCursor;\n } else {\n this.cursor = this.defaultCursor;\n }\n }\n\n addTargetSize(metrics: GridMetrics, itemIndex: VisibleIndex): void {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const userSizes = metrics[this.userSizesProperty];\n const calculatedSizes = metrics[this.calculatedSizesProperty];\n const treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;\n\n const modelIndex = getOrThrow(modelIndexes, itemIndex);\n let targetSize = userSizes.get(modelIndex);\n if (targetSize == null || targetSize === 0) {\n targetSize = getOrThrow(calculatedSizes, modelIndex) + treePadding;\n }\n this.targetSizes.set(modelIndex, targetSize);\n }\n\n removeTargetSize(metrics: GridMetrics, itemIndex: VisibleIndex): void {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = getOrThrow(modelIndexes, itemIndex);\n this.targetSizes.delete(modelIndex);\n }\n}\n\nexport default GridSeparatorMouseHandler;\n"],"file":"GridSeparatorMouseHandler.js"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
|
|
1
|
+
import { EventHandlerResult } from '../EventHandlerResult';
|
|
2
|
+
import Grid from '../Grid';
|
|
3
|
+
import { VisibleIndex } from '../GridMetrics';
|
|
4
|
+
import GridMouseHandler from '../GridMouseHandler';
|
|
5
|
+
import { GridPoint } from '../GridUtils';
|
|
2
6
|
declare class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
3
|
-
static getTopWithOffsetFromRawTop(grid:
|
|
4
|
-
top:
|
|
7
|
+
static getTopWithOffsetFromRawTop(grid: Grid, rawTop: number): {
|
|
8
|
+
top: VisibleIndex;
|
|
5
9
|
topOffset: number;
|
|
6
10
|
};
|
|
7
|
-
dragOffset
|
|
8
|
-
|
|
11
|
+
private dragOffset?;
|
|
12
|
+
cursor: string;
|
|
13
|
+
isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean;
|
|
14
|
+
onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
15
|
+
onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
16
|
+
onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
17
|
+
onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
18
|
+
onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
9
19
|
}
|
|
10
|
-
|
|
20
|
+
export default GridVerticalScrollBarMouseHandler;
|
|
11
21
|
//# sourceMappingURL=GridVerticalScrollBarMouseHandler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.
|
|
1
|
+
{"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,cAAM,iCAAkC,SAAQ,gBAAgB;IAC9D,MAAM,CAAC,0BAA0B,CAC/B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAuB3C,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,MAAM,SAAa;IAEnB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAoBxD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA+C5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAmC5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAS1D,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAG9D;AAED,eAAe,iCAAiC,CAAC"}
|
|
@@ -1,17 +1,49 @@
|
|
|
1
1
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
2
|
|
|
3
3
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
4
|
-
/* eslint class-methods-use-this: "off" */
|
|
5
4
|
|
|
5
|
+
/* eslint class-methods-use-this: "off" */
|
|
6
6
|
class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
9
|
|
|
10
|
-
_defineProperty(this, "dragOffset", null);
|
|
11
|
-
|
|
12
10
|
_defineProperty(this, "cursor", 'default');
|
|
13
11
|
}
|
|
14
12
|
|
|
13
|
+
static getTopWithOffsetFromRawTop(grid, rawTop) {
|
|
14
|
+
var theme = grid.getTheme();
|
|
15
|
+
var {
|
|
16
|
+
metrics,
|
|
17
|
+
metricCalculator
|
|
18
|
+
} = grid;
|
|
19
|
+
if (!metrics) throw new Error('metrics not set');
|
|
20
|
+
|
|
21
|
+
if (theme.scrollSnapToRow) {
|
|
22
|
+
var _top = Math.round(rawTop);
|
|
23
|
+
|
|
24
|
+
var _topOffset = 0;
|
|
25
|
+
return {
|
|
26
|
+
top: _top,
|
|
27
|
+
topOffset: _topOffset
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
var top = Math.floor(rawTop);
|
|
32
|
+
var topOffsetPercent = rawTop - top;
|
|
33
|
+
var rowHeight = metrics.visibleRowHeights.get(top);
|
|
34
|
+
|
|
35
|
+
if (rowHeight == null) {
|
|
36
|
+
var metricState = grid.getMetricState();
|
|
37
|
+
rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var topOffset = rowHeight * topOffsetPercent;
|
|
41
|
+
return {
|
|
42
|
+
top,
|
|
43
|
+
topOffset
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
15
47
|
isInScrollBar(gridPoint, grid) {
|
|
16
48
|
var theme = grid.getTheme();
|
|
17
49
|
var {
|
|
@@ -21,6 +53,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
21
53
|
var {
|
|
22
54
|
metrics
|
|
23
55
|
} = grid;
|
|
56
|
+
if (!metrics) throw new Error('metrics not set');
|
|
24
57
|
var {
|
|
25
58
|
x,
|
|
26
59
|
y
|
|
@@ -40,6 +73,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
40
73
|
var {
|
|
41
74
|
metrics
|
|
42
75
|
} = grid;
|
|
76
|
+
if (!metrics) throw new Error('metrics not set');
|
|
43
77
|
var {
|
|
44
78
|
y
|
|
45
79
|
} = gridPoint;
|
|
@@ -94,6 +128,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
94
128
|
var {
|
|
95
129
|
metrics
|
|
96
130
|
} = grid;
|
|
131
|
+
if (!metrics) throw new Error('metrics not set');
|
|
97
132
|
var {
|
|
98
133
|
barHeight,
|
|
99
134
|
handleHeight,
|
|
@@ -119,8 +154,8 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
119
154
|
}
|
|
120
155
|
|
|
121
156
|
onUp(gridPoint, grid) {
|
|
122
|
-
if (this.dragOffset
|
|
123
|
-
this.dragOffset =
|
|
157
|
+
if (this.dragOffset !== undefined) {
|
|
158
|
+
this.dragOffset = undefined;
|
|
124
159
|
grid.setState({
|
|
125
160
|
isDraggingVerticalScrollBar: false,
|
|
126
161
|
isDragging: false
|
|
@@ -134,39 +169,6 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
134
169
|
return this.isInScrollBar(gridPoint, grid);
|
|
135
170
|
}
|
|
136
171
|
|
|
137
|
-
static getTopWithOffsetFromRawTop(grid, rawTop) {
|
|
138
|
-
var theme = grid.getTheme();
|
|
139
|
-
var {
|
|
140
|
-
metrics,
|
|
141
|
-
metricCalculator
|
|
142
|
-
} = grid;
|
|
143
|
-
|
|
144
|
-
if (theme.scrollSnapToRow) {
|
|
145
|
-
var _top = Math.round(rawTop);
|
|
146
|
-
|
|
147
|
-
var _topOffset = 0;
|
|
148
|
-
return {
|
|
149
|
-
top: _top,
|
|
150
|
-
topOffset: _topOffset
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
var top = Math.floor(rawTop);
|
|
155
|
-
var topOffsetPercent = rawTop - top;
|
|
156
|
-
var rowHeight = metrics.visibleRowHeights.get(top);
|
|
157
|
-
|
|
158
|
-
if (rowHeight == null) {
|
|
159
|
-
var metricState = grid.getMetricState();
|
|
160
|
-
rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
var topOffset = rowHeight * topOffsetPercent;
|
|
164
|
-
return {
|
|
165
|
-
top,
|
|
166
|
-
topOffset
|
|
167
|
-
};
|
|
168
|
-
}
|
|
169
|
-
|
|
170
172
|
}
|
|
171
173
|
|
|
172
174
|
export default GridVerticalScrollBarMouseHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":["GridMouseHandler","GridVerticalScrollBarMouseHandler","getTopWithOffsetFromRawTop","grid","rawTop","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToRow","top","Math","round","topOffset","floor","topOffsetPercent","rowHeight","visibleRowHeights","get","metricState","getMetricState","getVisibleRowHeight","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","lastLeft","lastTop","columnHeaderHeight","height","width","scrollBarHeight","onDown","barHeight","handleHeight","scrollY","mouseBarY","dragOffset","setState","isDraggingVerticalScrollBar","min","max","newTop","newTopOffset","setViewState","isDragging","onMove","onDrag","onUp","undefined","onClick"],"mappings":"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","sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/* eslint class-methods-use-this: \"off\" */\nclass GridVerticalScrollBarMouseHandler extends GridMouseHandler {\n static getTopWithOffsetFromRawTop(\n grid: Grid,\n rawTop: number\n ): { top: VisibleIndex; topOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToRow) {\n const top = Math.round(rawTop);\n const topOffset = 0;\n\n return { top, topOffset };\n }\n const top = Math.floor(rawTop);\n const topOffsetPercent = rawTop - top;\n let rowHeight = metrics.visibleRowHeights.get(top);\n if (rowHeight == null) {\n const metricState = grid.getMetricState();\n rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);\n }\n const topOffset = rowHeight * topOffsetPercent;\n\n return { top, topOffset };\n }\n\n private dragOffset?: number;\n\n // to trigger pointer event blocking\n cursor = 'default';\n\n isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n\n const { scrollBarSize, scrollBarHoverSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { lastLeft, lastTop, columnHeaderHeight, height, width } = metrics;\n const scrollBarHeight = lastLeft > 0 ? height - scrollBarSize : height;\n return (\n scrollBarSize > 0 &&\n lastTop > 0 &&\n x >= width - scrollBarHoverSize &&\n x < width &&\n y > columnHeaderHeight &&\n y < scrollBarHeight\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { y } = gridPoint;\n const {\n barHeight,\n handleHeight,\n lastTop,\n columnHeaderHeight,\n scrollY,\n } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarY = y - columnHeaderHeight;\n if (mouseBarY >= scrollY && mouseBarY <= scrollY + handleHeight) {\n // Grabbed the vertical handle\n this.dragOffset = mouseBarY - scrollY;\n grid.setState({ isDraggingVerticalScrollBar: true });\n } else {\n // clicked elsewhere in bar\n this.dragOffset = 0;\n const rawTop = Math.min(\n Math.max(0, (mouseBarY / (barHeight - handleHeight)) * lastTop),\n lastTop\n );\n\n const {\n top: newTop,\n topOffset: newTopOffset,\n } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\n );\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const { y } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { barHeight, handleHeight, lastTop, columnHeaderHeight } = metrics;\n const mouseBarY = y - columnHeaderHeight;\n\n const rawTop = Math.min(\n Math.max(\n 0,\n ((mouseBarY - this.dragOffset) / (barHeight - handleHeight)) * lastTop\n ),\n lastTop\n );\n\n const {\n top: newTop,\n topOffset: newTopOffset,\n } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\n );\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n return true;\n }\n return false;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({ isDraggingVerticalScrollBar: false, isDragging: false });\n }\n\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n}\n\nexport default GridVerticalScrollBarMouseHandler;\n"],"file":"GridVerticalScrollBarMouseHandler.js"}
|