@deephaven/grid 0.7.3-beta.4 → 0.8.2-beta.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/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 +397 -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 -4
- 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 +8 -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 -1
- 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 -5
- 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 +43 -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 +38 -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 +13 -10
- 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 +41 -37
- 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 +14 -11
- 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 +26 -16
- 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 +57 -74
- 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 +41 -37
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -3,18 +3,18 @@ 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",
|
|
17
|
+
_defineProperty(this, "draggingIndex", void 0);
|
|
18
18
|
|
|
19
19
|
_defineProperty(this, "resizingItems", []);
|
|
20
20
|
|
|
@@ -24,75 +24,45 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
24
24
|
|
|
25
25
|
_defineProperty(this, "dragOffset", 0);
|
|
26
26
|
|
|
27
|
-
_defineProperty(this, "
|
|
28
|
-
|
|
29
|
-
_defineProperty(this, "hiddenCursor", OVERRIDE_STRING);
|
|
27
|
+
_defineProperty(this, "hiddenCursor", void 0);
|
|
30
28
|
|
|
31
|
-
_defineProperty(this, "defaultCursor",
|
|
29
|
+
_defineProperty(this, "defaultCursor", void 0);
|
|
32
30
|
|
|
33
|
-
_defineProperty(this, "pointProperty",
|
|
31
|
+
_defineProperty(this, "pointProperty", void 0);
|
|
34
32
|
|
|
35
|
-
_defineProperty(this, "userSizesProperty",
|
|
33
|
+
_defineProperty(this, "userSizesProperty", void 0);
|
|
36
34
|
|
|
37
|
-
_defineProperty(this, "visibleOffsetProperty",
|
|
35
|
+
_defineProperty(this, "visibleOffsetProperty", void 0);
|
|
38
36
|
|
|
39
|
-
_defineProperty(this, "visibleSizesProperty",
|
|
37
|
+
_defineProperty(this, "visibleSizesProperty", void 0);
|
|
40
38
|
|
|
41
|
-
_defineProperty(this, "marginProperty",
|
|
39
|
+
_defineProperty(this, "marginProperty", void 0);
|
|
42
40
|
|
|
43
|
-
_defineProperty(this, "calculatedSizesProperty",
|
|
41
|
+
_defineProperty(this, "calculatedSizesProperty", void 0);
|
|
44
42
|
|
|
45
|
-
_defineProperty(this, "modelIndexesProperty",
|
|
43
|
+
_defineProperty(this, "modelIndexesProperty", void 0);
|
|
46
44
|
|
|
47
|
-
_defineProperty(this, "firstIndexProperty",
|
|
45
|
+
_defineProperty(this, "firstIndexProperty", void 0);
|
|
48
46
|
|
|
49
|
-
_defineProperty(this, "treePaddingProperty",
|
|
47
|
+
_defineProperty(this, "treePaddingProperty", void 0);
|
|
50
48
|
}
|
|
51
49
|
|
|
52
|
-
|
|
53
|
-
throw new Error('Need to override getHiddenItems');
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
getNextShownItem(itemIndex, metrics) {
|
|
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
|
-
|
|
50
|
+
// End of overrides
|
|
82
51
|
onDown(gridPoint, grid) {
|
|
83
52
|
var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
|
|
84
53
|
|
|
85
54
|
if (separatorIndex != null) {
|
|
86
55
|
var {
|
|
87
|
-
metrics
|
|
56
|
+
metrics: _metrics
|
|
88
57
|
} = grid;
|
|
58
|
+
if (!_metrics) throw new Error('metrics not set');
|
|
89
59
|
this.dragOffset = 0;
|
|
90
60
|
this.draggingIndex = separatorIndex;
|
|
91
61
|
this.resizingItems = [separatorIndex];
|
|
92
|
-
this.hiddenItems = this.getHiddenItems(separatorIndex,
|
|
62
|
+
this.hiddenItems = this.getHiddenItems(separatorIndex, _metrics).reverse();
|
|
93
63
|
this.targetSizes.clear();
|
|
94
|
-
this.addTargetSize(
|
|
95
|
-
this.updateCursor(
|
|
64
|
+
this.addTargetSize(_metrics, separatorIndex);
|
|
65
|
+
this.updateCursor(_metrics, separatorIndex);
|
|
96
66
|
this.updateSeparator(grid, separatorIndex);
|
|
97
67
|
return true;
|
|
98
68
|
}
|
|
@@ -105,9 +75,10 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
105
75
|
|
|
106
76
|
if (separatorIndex != null) {
|
|
107
77
|
var {
|
|
108
|
-
metrics
|
|
78
|
+
metrics: _metrics2
|
|
109
79
|
} = grid;
|
|
110
|
-
|
|
80
|
+
if (!_metrics2) throw new Error('metrics not set');
|
|
81
|
+
this.updateCursor(_metrics2, separatorIndex);
|
|
111
82
|
return true;
|
|
112
83
|
}
|
|
113
84
|
|
|
@@ -124,6 +95,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
124
95
|
metricCalculator,
|
|
125
96
|
metrics
|
|
126
97
|
} = grid;
|
|
98
|
+
if (!metrics) throw new Error('metrics not set');
|
|
127
99
|
var theme = grid.getTheme();
|
|
128
100
|
var visibleOffsets = metrics[this.visibleOffsetProperty];
|
|
129
101
|
var margin = metrics[this.marginProperty];
|
|
@@ -137,13 +109,15 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
137
109
|
var resizeIndex = this.resizingItems[this.resizingItems.length - 1];
|
|
138
110
|
|
|
139
111
|
while (resizeIndex != null) {
|
|
140
|
-
var itemOffset = visibleOffsets
|
|
112
|
+
var itemOffset = getOrThrow(visibleOffsets, resizeIndex);
|
|
141
113
|
var itemSize = point - margin - itemOffset - this.dragOffset;
|
|
142
|
-
|
|
143
|
-
var
|
|
114
|
+
|
|
115
|
+
var _modelIndex = getOrThrow(modelIndexes, resizeIndex);
|
|
116
|
+
|
|
117
|
+
var targetSize = this.targetSizes.get(_modelIndex);
|
|
144
118
|
var isResizingMultiple = this.resizingItems.length > 1;
|
|
145
119
|
var hiddenIndex = this.hiddenItems.indexOf(resizeIndex);
|
|
146
|
-
var calculatedSize = calculatedSizes
|
|
120
|
+
var calculatedSize = getOrThrow(calculatedSizes, _modelIndex);
|
|
147
121
|
|
|
148
122
|
if (resizeIndex === firstIndex) {
|
|
149
123
|
calculatedSize += treePadding;
|
|
@@ -154,7 +128,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
154
128
|
if (Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold) {
|
|
155
129
|
// Snapping behaviour to "natural" width
|
|
156
130
|
newSize = null;
|
|
157
|
-
} else if (itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
|
|
131
|
+
} else if (targetSize !== undefined && itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
|
|
158
132
|
newSize = targetSize;
|
|
159
133
|
} else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {
|
|
160
134
|
// Snapping to hidden item
|
|
@@ -162,26 +136,28 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
162
136
|
}
|
|
163
137
|
|
|
164
138
|
if (newSize !== calculatedSize) {
|
|
165
|
-
newSizes.set(
|
|
139
|
+
newSizes.set(_modelIndex, newSize);
|
|
166
140
|
} else {
|
|
167
|
-
newSizes.set(
|
|
141
|
+
newSizes.set(_modelIndex, null);
|
|
168
142
|
}
|
|
169
143
|
|
|
170
144
|
if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {
|
|
171
145
|
if (hiddenIndex >= 0 && isResizingMultiple) {
|
|
146
|
+
var _this$targetSizes$get;
|
|
147
|
+
|
|
172
148
|
this.resizingItems.pop();
|
|
173
149
|
this.removeTargetSize(metrics, resizeIndex);
|
|
174
150
|
resizeIndex = this.resizingItems[this.resizingItems.length - 1];
|
|
175
|
-
this.dragOffset -= this.targetSizes.get(modelIndexes
|
|
151
|
+
this.dragOffset -= (_this$targetSizes$get = this.targetSizes.get(getOrThrow(modelIndexes, resizeIndex))) !== null && _this$targetSizes$get !== void 0 ? _this$targetSizes$get : 0;
|
|
176
152
|
} else {
|
|
177
153
|
resizeIndex = this.getNextShownItem(resizeIndex, metrics);
|
|
178
154
|
|
|
179
|
-
if (resizeIndex
|
|
155
|
+
if (resizeIndex !== null) {
|
|
180
156
|
this.resizingItems.push(resizeIndex);
|
|
181
157
|
this.addTargetSize(metrics, resizeIndex);
|
|
182
158
|
}
|
|
183
159
|
}
|
|
184
|
-
} else if (itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
|
|
160
|
+
} else if (targetSize !== undefined && itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
|
|
185
161
|
if (hiddenIndex > 0) {
|
|
186
162
|
this.dragOffset += newSize;
|
|
187
163
|
resizeIndex = this.hiddenItems[hiddenIndex - 1];
|
|
@@ -200,15 +176,19 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
200
176
|
}
|
|
201
177
|
|
|
202
178
|
newSizes.forEach((newSize, modelIndex) => {
|
|
203
|
-
|
|
179
|
+
if (newSize !== null) {
|
|
180
|
+
this.setSize(metricCalculator, modelIndex, newSize);
|
|
181
|
+
} else {
|
|
182
|
+
this.resetSize(metricCalculator, modelIndex);
|
|
183
|
+
}
|
|
204
184
|
});
|
|
205
185
|
this.updateCursor(metrics, this.draggingIndex);
|
|
206
186
|
return true;
|
|
207
187
|
}
|
|
208
188
|
|
|
209
|
-
onUp(
|
|
189
|
+
onUp(gridPoint, grid) {
|
|
210
190
|
if (this.draggingIndex != null) {
|
|
211
|
-
this.draggingIndex =
|
|
191
|
+
this.draggingIndex = undefined;
|
|
212
192
|
this.resizingItems = [];
|
|
213
193
|
this.hiddenItems = [];
|
|
214
194
|
this.targetSizes.clear();
|
|
@@ -223,12 +203,15 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
223
203
|
|
|
224
204
|
if (separatorIndex != null) {
|
|
225
205
|
var {
|
|
226
|
-
metricCalculator,
|
|
227
|
-
metrics
|
|
206
|
+
metricCalculator: _metricCalculator,
|
|
207
|
+
metrics: _metrics3
|
|
228
208
|
} = grid;
|
|
229
|
-
|
|
230
|
-
var
|
|
231
|
-
|
|
209
|
+
if (!_metrics3) throw new Error('metrics not set');
|
|
210
|
+
var modelIndexes = _metrics3[this.modelIndexesProperty];
|
|
211
|
+
|
|
212
|
+
var _modelIndex2 = getOrThrow(modelIndexes, separatorIndex);
|
|
213
|
+
|
|
214
|
+
this.resetSize(_metricCalculator, _modelIndex2);
|
|
232
215
|
grid.forceUpdate();
|
|
233
216
|
return true;
|
|
234
217
|
}
|
|
@@ -238,7 +221,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
238
221
|
|
|
239
222
|
updateCursor(metrics, itemIndex) {
|
|
240
223
|
var visibleSizes = metrics[this.visibleSizesProperty];
|
|
241
|
-
var itemSize = visibleSizes
|
|
224
|
+
var itemSize = getOrThrow(visibleSizes, itemIndex);
|
|
242
225
|
|
|
243
226
|
if (itemSize === 0) {
|
|
244
227
|
this.cursor = this.hiddenCursor;
|
|
@@ -252,11 +235,11 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
252
235
|
var userSizes = metrics[this.userSizesProperty];
|
|
253
236
|
var calculatedSizes = metrics[this.calculatedSizesProperty];
|
|
254
237
|
var treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;
|
|
255
|
-
var modelIndex = modelIndexes
|
|
238
|
+
var modelIndex = getOrThrow(modelIndexes, itemIndex);
|
|
256
239
|
var targetSize = userSizes.get(modelIndex);
|
|
257
240
|
|
|
258
241
|
if (targetSize == null || targetSize === 0) {
|
|
259
|
-
targetSize = calculatedSizes
|
|
242
|
+
targetSize = getOrThrow(calculatedSizes, modelIndex) + treePadding;
|
|
260
243
|
}
|
|
261
244
|
|
|
262
245
|
this.targetSizes.set(modelIndex, targetSize);
|
|
@@ -264,7 +247,7 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
|
|
|
264
247
|
|
|
265
248
|
removeTargetSize(metrics, itemIndex) {
|
|
266
249
|
var modelIndexes = metrics[this.modelIndexesProperty];
|
|
267
|
-
var modelIndex = modelIndexes
|
|
250
|
+
var modelIndex = getOrThrow(modelIndexes, itemIndex);
|
|
268
251
|
this.targetSizes.delete(modelIndex);
|
|
269
252
|
}
|
|
270
253
|
|
|
@@ -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,51 @@
|
|
|
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",
|
|
10
|
+
_defineProperty(this, "dragOffset", void 0);
|
|
11
11
|
|
|
12
12
|
_defineProperty(this, "cursor", 'default');
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
static getTopWithOffsetFromRawTop(grid, rawTop) {
|
|
16
|
+
var theme = grid.getTheme();
|
|
17
|
+
var {
|
|
18
|
+
metrics,
|
|
19
|
+
metricCalculator
|
|
20
|
+
} = grid;
|
|
21
|
+
if (!metrics) throw new Error('metrics not set');
|
|
22
|
+
|
|
23
|
+
if (theme.scrollSnapToRow) {
|
|
24
|
+
var _top = Math.round(rawTop);
|
|
25
|
+
|
|
26
|
+
var _topOffset = 0;
|
|
27
|
+
return {
|
|
28
|
+
top: _top,
|
|
29
|
+
topOffset: _topOffset
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var top = Math.floor(rawTop);
|
|
34
|
+
var topOffsetPercent = rawTop - top;
|
|
35
|
+
var rowHeight = metrics.visibleRowHeights.get(top);
|
|
36
|
+
|
|
37
|
+
if (rowHeight == null) {
|
|
38
|
+
var metricState = grid.getMetricState();
|
|
39
|
+
rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var topOffset = rowHeight * topOffsetPercent;
|
|
43
|
+
return {
|
|
44
|
+
top,
|
|
45
|
+
topOffset
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
15
49
|
isInScrollBar(gridPoint, grid) {
|
|
16
50
|
var theme = grid.getTheme();
|
|
17
51
|
var {
|
|
@@ -21,6 +55,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
21
55
|
var {
|
|
22
56
|
metrics
|
|
23
57
|
} = grid;
|
|
58
|
+
if (!metrics) throw new Error('metrics not set');
|
|
24
59
|
var {
|
|
25
60
|
x,
|
|
26
61
|
y
|
|
@@ -40,6 +75,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
40
75
|
var {
|
|
41
76
|
metrics
|
|
42
77
|
} = grid;
|
|
78
|
+
if (!metrics) throw new Error('metrics not set');
|
|
43
79
|
var {
|
|
44
80
|
y
|
|
45
81
|
} = gridPoint;
|
|
@@ -94,6 +130,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
94
130
|
var {
|
|
95
131
|
metrics
|
|
96
132
|
} = grid;
|
|
133
|
+
if (!metrics) throw new Error('metrics not set');
|
|
97
134
|
var {
|
|
98
135
|
barHeight,
|
|
99
136
|
handleHeight,
|
|
@@ -119,8 +156,8 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
119
156
|
}
|
|
120
157
|
|
|
121
158
|
onUp(gridPoint, grid) {
|
|
122
|
-
if (this.dragOffset
|
|
123
|
-
this.dragOffset =
|
|
159
|
+
if (this.dragOffset !== undefined) {
|
|
160
|
+
this.dragOffset = undefined;
|
|
124
161
|
grid.setState({
|
|
125
162
|
isDraggingVerticalScrollBar: false,
|
|
126
163
|
isDragging: false
|
|
@@ -134,39 +171,6 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
134
171
|
return this.isInScrollBar(gridPoint, grid);
|
|
135
172
|
}
|
|
136
173
|
|
|
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
174
|
}
|
|
171
175
|
|
|
172
176
|
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"}
|