@deephaven/grid 0.4.1-modules.0 → 0.5.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.
Files changed (74) hide show
  1. package/dist/CellInputField.js +88 -40
  2. package/dist/CellInputField.js.map +1 -1
  3. package/dist/Grid.js +1484 -1449
  4. package/dist/Grid.js.map +1 -1
  5. package/dist/GridColorUtils.js +51 -18
  6. package/dist/GridColorUtils.js.map +1 -1
  7. package/dist/GridMetricCalculator.js +994 -1017
  8. package/dist/GridMetricCalculator.js.map +1 -1
  9. package/dist/GridModel.js +286 -171
  10. package/dist/GridModel.js.map +1 -1
  11. package/dist/GridMouseHandler.js +59 -39
  12. package/dist/GridMouseHandler.js.map +1 -1
  13. package/dist/GridRange.js +630 -572
  14. package/dist/GridRange.js.map +1 -1
  15. package/dist/GridRenderer.d.ts.map +1 -1
  16. package/dist/GridRenderer.js +1564 -1650
  17. package/dist/GridRenderer.js.map +1 -1
  18. package/dist/GridTestUtils.js +29 -15
  19. package/dist/GridTestUtils.js.map +1 -1
  20. package/dist/GridUtils.js +717 -679
  21. package/dist/GridUtils.js.map +1 -1
  22. package/dist/KeyHandler.js +18 -6
  23. package/dist/KeyHandler.js.map +1 -1
  24. package/dist/MockGridModel.js +210 -105
  25. package/dist/MockGridModel.js.map +1 -1
  26. package/dist/MockTreeGridModel.js +183 -113
  27. package/dist/MockTreeGridModel.js.map +1 -1
  28. package/dist/errors/PasteError.js +44 -5
  29. package/dist/errors/PasteError.js.map +1 -1
  30. package/dist/errors/index.js +1 -1
  31. package/dist/errors/index.js.map +1 -1
  32. package/dist/index.js +15 -15
  33. package/dist/index.js.map +1 -1
  34. package/dist/key-handlers/EditKeyHandler.js +75 -42
  35. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  36. package/dist/key-handlers/PasteKeyHandler.js +78 -42
  37. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  38. package/dist/key-handlers/SelectionKeyHandler.js +234 -220
  39. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  40. package/dist/key-handlers/TreeKeyHandler.js +72 -42
  41. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  42. package/dist/key-handlers/index.js +4 -4
  43. package/dist/key-handlers/index.js.map +1 -1
  44. package/dist/memoizeClear.js +1 -1
  45. package/dist/memoizeClear.js.map +1 -1
  46. package/dist/mouse-handlers/EditMouseHandler.js +50 -18
  47. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  48. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +163 -141
  49. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  50. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +86 -47
  51. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  52. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
  53. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +171 -143
  54. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  55. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +147 -125
  56. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  57. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +86 -47
  58. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  59. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +76 -46
  60. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  61. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
  62. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +62 -31
  63. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  64. package/dist/mouse-handlers/GridSelectionMouseHandler.js +222 -200
  65. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  66. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +253 -206
  67. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  68. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
  69. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +172 -144
  70. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  71. package/dist/mouse-handlers/index.js +10 -10
  72. package/dist/mouse-handlers/index.js.map +1 -1
  73. package/dist/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +4 -5
@@ -1,274 +1,321 @@
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; }
1
+ function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2
2
 
3
- /* eslint class-methods-use-this: "off" */
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
4
 
5
- /* eslint no-unused-vars: "off" */
6
- import GridMouseHandler from "../GridMouseHandler.js";
7
- var OVERRIDE_STRING = 'NEED_TO_OVERRIDE_PROPERTY';
8
- /**
9
- * Abstract class that should be extended for column/row behaviour
10
- * Override the necessary functions/properties
11
- */
5
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
12
6
 
13
- class GridSeparatorMouseHandler extends GridMouseHandler {
14
- constructor() {
15
- super(...arguments);
7
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
16
8
 
17
- _defineProperty(this, "draggingIndex", null);
9
+ function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
18
10
 
19
- _defineProperty(this, "resizingItems", []);
11
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
20
12
 
21
- _defineProperty(this, "hiddenItems", []);
13
+ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
22
14
 
23
- _defineProperty(this, "targetSizes", new Map());
15
+ function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
24
16
 
25
- _defineProperty(this, "dragOffset", 0);
17
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
26
18
 
27
- _defineProperty(this, "cursor", OVERRIDE_STRING);
19
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
28
20
 
29
- _defineProperty(this, "hiddenCursor", OVERRIDE_STRING);
21
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
30
22
 
31
- _defineProperty(this, "defaultCursor", OVERRIDE_STRING);
23
+ 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; }
32
24
 
33
- _defineProperty(this, "pointProperty", OVERRIDE_STRING);
25
+ /* eslint class-methods-use-this: "off" */
34
26
 
35
- _defineProperty(this, "userSizesProperty", OVERRIDE_STRING);
27
+ /* eslint no-unused-vars: "off" */
28
+ import GridMouseHandler from '../GridMouseHandler';
29
+ var OVERRIDE_STRING = 'NEED_TO_OVERRIDE_PROPERTY';
30
+ /**
31
+ * Abstract class that should be extended for column/row behaviour
32
+ * Override the necessary functions/properties
33
+ */
36
34
 
37
- _defineProperty(this, "visibleOffsetProperty", OVERRIDE_STRING);
35
+ var GridSeparatorMouseHandler = /*#__PURE__*/function (_GridMouseHandler) {
36
+ _inherits(GridSeparatorMouseHandler, _GridMouseHandler);
38
37
 
39
- _defineProperty(this, "visibleSizesProperty", OVERRIDE_STRING);
38
+ var _super = _createSuper(GridSeparatorMouseHandler);
40
39
 
41
- _defineProperty(this, "marginProperty", OVERRIDE_STRING);
40
+ function GridSeparatorMouseHandler() {
41
+ var _this;
42
42
 
43
- _defineProperty(this, "calculatedSizesProperty", OVERRIDE_STRING);
43
+ _classCallCheck(this, GridSeparatorMouseHandler);
44
44
 
45
- _defineProperty(this, "modelIndexesProperty", OVERRIDE_STRING);
45
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
46
+ args[_key] = arguments[_key];
47
+ }
46
48
 
47
- _defineProperty(this, "firstIndexProperty", OVERRIDE_STRING);
49
+ _this = _super.call.apply(_super, [this].concat(args));
48
50
 
49
- _defineProperty(this, "treePaddingProperty", OVERRIDE_STRING);
50
- }
51
+ _defineProperty(_assertThisInitialized(_this), "draggingIndex", null);
51
52
 
52
- getHiddenItems(itemIndex, metrics) {
53
- throw new Error('Need to override getHiddenItems');
54
- }
53
+ _defineProperty(_assertThisInitialized(_this), "resizingItems", []);
55
54
 
56
- getNextShownItem(itemIndex, metrics) {
57
- throw new Error('Need to override getNextShownItem');
58
- } // eslint-disable-next-line no-unused-vars
55
+ _defineProperty(_assertThisInitialized(_this), "hiddenItems", []);
59
56
 
57
+ _defineProperty(_assertThisInitialized(_this), "targetSizes", new Map());
60
58
 
61
- setSize(metricCalculator, modelIndex, size) {
62
- throw new Error('Need to override setSize');
63
- } // eslint-disable-next-line no-unused-vars
59
+ _defineProperty(_assertThisInitialized(_this), "dragOffset", 0);
64
60
 
61
+ _defineProperty(_assertThisInitialized(_this), "cursor", OVERRIDE_STRING);
65
62
 
66
- resetSize(metricCalculator, modelIndex) {
67
- throw new Error('Need to override resetSize');
68
- } // eslint-disable-next-line no-unused-vars
63
+ _defineProperty(_assertThisInitialized(_this), "hiddenCursor", OVERRIDE_STRING);
69
64
 
65
+ _defineProperty(_assertThisInitialized(_this), "defaultCursor", OVERRIDE_STRING);
70
66
 
71
- updateSeparator(grid, separatorIndex) {
72
- throw new Error('Need to override updateSeparator');
73
- } // eslint-disable-next-line no-unused-vars
67
+ _defineProperty(_assertThisInitialized(_this), "pointProperty", OVERRIDE_STRING);
74
68
 
69
+ _defineProperty(_assertThisInitialized(_this), "userSizesProperty", OVERRIDE_STRING);
75
70
 
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
71
+ _defineProperty(_assertThisInitialized(_this), "visibleOffsetProperty", OVERRIDE_STRING);
80
72
 
73
+ _defineProperty(_assertThisInitialized(_this), "visibleSizesProperty", OVERRIDE_STRING);
81
74
 
82
- onDown(gridPoint, grid) {
83
- var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
75
+ _defineProperty(_assertThisInitialized(_this), "marginProperty", OVERRIDE_STRING);
84
76
 
85
- if (separatorIndex != null) {
86
- var {
87
- metrics
88
- } = grid;
89
- this.dragOffset = 0;
90
- this.draggingIndex = separatorIndex;
91
- this.resizingItems = [separatorIndex];
92
- this.hiddenItems = this.getHiddenItems(separatorIndex, metrics).reverse();
93
- this.targetSizes.clear();
94
- this.addTargetSize(metrics, separatorIndex);
95
- this.updateCursor(metrics, separatorIndex);
96
- this.updateSeparator(grid, separatorIndex);
97
- return true;
98
- }
77
+ _defineProperty(_assertThisInitialized(_this), "calculatedSizesProperty", OVERRIDE_STRING);
99
78
 
100
- return false;
101
- }
79
+ _defineProperty(_assertThisInitialized(_this), "modelIndexesProperty", OVERRIDE_STRING);
102
80
 
103
- onMove(gridPoint, grid) {
104
- var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
81
+ _defineProperty(_assertThisInitialized(_this), "firstIndexProperty", OVERRIDE_STRING);
105
82
 
106
- if (separatorIndex != null) {
107
- var {
108
- metrics
109
- } = grid;
110
- this.updateCursor(metrics, separatorIndex);
111
- return true;
112
- }
83
+ _defineProperty(_assertThisInitialized(_this), "treePaddingProperty", OVERRIDE_STRING);
113
84
 
114
- return false;
85
+ return _this;
115
86
  }
116
87
 
117
- onDrag(gridPoint, grid) {
118
- if (this.draggingIndex == null) {
119
- return false;
88
+ _createClass(GridSeparatorMouseHandler, [{
89
+ key: "getHiddenItems",
90
+ value: function getHiddenItems(itemIndex, metrics) {
91
+ throw new Error('Need to override getHiddenItems');
120
92
  }
93
+ }, {
94
+ key: "getNextShownItem",
95
+ value: function getNextShownItem(itemIndex, metrics) {
96
+ throw new Error('Need to override getNextShownItem');
97
+ } // eslint-disable-next-line no-unused-vars
98
+
99
+ }, {
100
+ key: "setSize",
101
+ value: function setSize(metricCalculator, modelIndex, size) {
102
+ throw new Error('Need to override setSize');
103
+ } // eslint-disable-next-line no-unused-vars
104
+
105
+ }, {
106
+ key: "resetSize",
107
+ value: function resetSize(metricCalculator, modelIndex) {
108
+ throw new Error('Need to override resetSize');
109
+ } // eslint-disable-next-line no-unused-vars
110
+
111
+ }, {
112
+ key: "updateSeparator",
113
+ value: function updateSeparator(grid, separatorIndex) {
114
+ throw new Error('Need to override updateSeparator');
115
+ } // eslint-disable-next-line no-unused-vars
116
+
117
+ }, {
118
+ key: "getSeparatorIndex",
119
+ value: function getSeparatorIndex(gridPoint, grid) {
120
+ var checkAllowResize = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
121
+ throw new Error('Need to override getSeparatorIndex');
122
+ } // End of overrides
123
+
124
+ }, {
125
+ key: "onDown",
126
+ value: function onDown(gridPoint, grid) {
127
+ var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
128
+
129
+ if (separatorIndex != null) {
130
+ var metrics = grid.metrics;
131
+ this.dragOffset = 0;
132
+ this.draggingIndex = separatorIndex;
133
+ this.resizingItems = [separatorIndex];
134
+ this.hiddenItems = this.getHiddenItems(separatorIndex, metrics).reverse();
135
+ this.targetSizes.clear();
136
+ this.addTargetSize(metrics, separatorIndex);
137
+ this.updateCursor(metrics, separatorIndex);
138
+ this.updateSeparator(grid, separatorIndex);
139
+ return true;
140
+ }
121
141
 
122
- var point = gridPoint[this.pointProperty];
123
- var {
124
- metricCalculator,
125
- metrics
126
- } = grid;
127
- var theme = grid.getTheme();
128
- var visibleOffsets = metrics[this.visibleOffsetProperty];
129
- var margin = metrics[this.marginProperty];
130
- var calculatedSizes = metrics[this.calculatedSizesProperty];
131
- var modelIndexes = metrics[this.modelIndexesProperty];
132
- var firstIndex = metrics[this.firstIndexProperty];
133
- var treePadding = metrics[this.treePaddingProperty]; // New sizes are batched and applied after the loop to avoid updating state while calculating next step
134
-
135
- var newSizes = new Map(); // Use a loop as we may need to resize multiple items if they drag quickly
136
-
137
- var resizeIndex = this.resizingItems[this.resizingItems.length - 1];
138
-
139
- while (resizeIndex != null) {
140
- var itemOffset = visibleOffsets.get(resizeIndex);
141
- var itemSize = point - margin - itemOffset - this.dragOffset;
142
- var modelIndex = modelIndexes.get(resizeIndex);
143
- var targetSize = this.targetSizes.get(modelIndex);
144
- var isResizingMultiple = this.resizingItems.length > 1;
145
- var hiddenIndex = this.hiddenItems.indexOf(resizeIndex);
146
- var calculatedSize = calculatedSizes.get(modelIndex);
147
-
148
- if (resizeIndex === firstIndex) {
149
- calculatedSize += treePadding;
142
+ return false;
143
+ }
144
+ }, {
145
+ key: "onMove",
146
+ value: function onMove(gridPoint, grid) {
147
+ var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
148
+
149
+ if (separatorIndex != null) {
150
+ var metrics = grid.metrics;
151
+ this.updateCursor(metrics, separatorIndex);
152
+ return true;
150
153
  }
151
154
 
152
- var newSize = itemSize;
155
+ return false;
156
+ }
157
+ }, {
158
+ key: "onDrag",
159
+ value: function onDrag(gridPoint, grid) {
160
+ var _this2 = this;
153
161
 
154
- if (Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold) {
155
- // Snapping behaviour to "natural" width
156
- newSize = null;
157
- } else if (itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
158
- newSize = targetSize;
159
- } else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {
160
- // Snapping to hidden item
161
- newSize = 0;
162
+ if (this.draggingIndex == null) {
163
+ return false;
162
164
  }
163
165
 
164
- if (newSize !== calculatedSize) {
165
- newSizes.set(modelIndex, newSize);
166
- } else {
167
- newSizes.set(modelIndex, null);
168
- }
166
+ var point = gridPoint[this.pointProperty];
167
+ var metricCalculator = grid.metricCalculator,
168
+ metrics = grid.metrics;
169
+ var theme = grid.getTheme();
170
+ var visibleOffsets = metrics[this.visibleOffsetProperty];
171
+ var margin = metrics[this.marginProperty];
172
+ var calculatedSizes = metrics[this.calculatedSizesProperty];
173
+ var modelIndexes = metrics[this.modelIndexesProperty];
174
+ var firstIndex = metrics[this.firstIndexProperty];
175
+ var treePadding = metrics[this.treePaddingProperty]; // New sizes are batched and applied after the loop to avoid updating state while calculating next step
176
+
177
+ var newSizes = new Map(); // Use a loop as we may need to resize multiple items if they drag quickly
178
+
179
+ var resizeIndex = this.resizingItems[this.resizingItems.length - 1];
180
+
181
+ while (resizeIndex != null) {
182
+ var itemOffset = visibleOffsets.get(resizeIndex);
183
+ var itemSize = point - margin - itemOffset - this.dragOffset;
184
+ var modelIndex = modelIndexes.get(resizeIndex);
185
+ var targetSize = this.targetSizes.get(modelIndex);
186
+ var isResizingMultiple = this.resizingItems.length > 1;
187
+ var hiddenIndex = this.hiddenItems.indexOf(resizeIndex);
188
+ var calculatedSize = calculatedSizes.get(modelIndex);
189
+
190
+ if (resizeIndex === firstIndex) {
191
+ calculatedSize += treePadding;
192
+ }
193
+
194
+ var newSize = itemSize;
169
195
 
170
- if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {
171
- if (hiddenIndex >= 0 && isResizingMultiple) {
172
- this.resizingItems.pop();
173
- this.removeTargetSize(metrics, resizeIndex);
174
- resizeIndex = this.resizingItems[this.resizingItems.length - 1];
175
- this.dragOffset -= this.targetSizes.get(modelIndexes.get(resizeIndex));
196
+ if (Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold) {
197
+ // Snapping behaviour to "natural" width
198
+ newSize = null;
199
+ } else if (itemSize > targetSize && (isResizingMultiple && hiddenIndex !== 0 || hiddenIndex > 0)) {
200
+ newSize = targetSize;
201
+ } else if (itemSize <= theme.headerResizeHiddenSnapThreshold) {
202
+ // Snapping to hidden item
203
+ newSize = 0;
204
+ }
205
+
206
+ if (newSize !== calculatedSize) {
207
+ newSizes.set(modelIndex, newSize);
176
208
  } else {
177
- resizeIndex = this.getNextShownItem(resizeIndex, metrics);
209
+ newSizes.set(modelIndex, null);
210
+ }
178
211
 
179
- if (resizeIndex != null) {
212
+ if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {
213
+ if (hiddenIndex >= 0 && isResizingMultiple) {
214
+ this.resizingItems.pop();
215
+ this.removeTargetSize(metrics, resizeIndex);
216
+ resizeIndex = this.resizingItems[this.resizingItems.length - 1];
217
+ this.dragOffset -= this.targetSizes.get(modelIndexes.get(resizeIndex));
218
+ } else {
219
+ resizeIndex = this.getNextShownItem(resizeIndex, metrics);
220
+
221
+ if (resizeIndex != null) {
222
+ this.resizingItems.push(resizeIndex);
223
+ this.addTargetSize(metrics, resizeIndex);
224
+ }
225
+ }
226
+ } else if (itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
227
+ if (hiddenIndex > 0) {
228
+ this.dragOffset += newSize;
229
+ resizeIndex = this.hiddenItems[hiddenIndex - 1];
180
230
  this.resizingItems.push(resizeIndex);
181
231
  this.addTargetSize(metrics, resizeIndex);
232
+ } else if (isResizingMultiple) {
233
+ this.resizingItems.pop();
234
+ this.removeTargetSize(metrics, resizeIndex);
235
+ resizeIndex = this.resizingItems[this.resizingItems.length - 1];
236
+ } else {
237
+ resizeIndex = null;
182
238
  }
183
- }
184
- } else if (itemSize > targetSize + theme.headerResizeSnapThreshold && newSize === targetSize) {
185
- if (hiddenIndex > 0) {
186
- this.dragOffset += newSize;
187
- resizeIndex = this.hiddenItems[hiddenIndex - 1];
188
- this.resizingItems.push(resizeIndex);
189
- this.addTargetSize(metrics, resizeIndex);
190
- } else if (isResizingMultiple) {
191
- this.resizingItems.pop();
192
- this.removeTargetSize(metrics, resizeIndex);
193
- resizeIndex = this.resizingItems[this.resizingItems.length - 1];
194
239
  } else {
195
240
  resizeIndex = null;
196
241
  }
197
- } else {
198
- resizeIndex = null;
199
242
  }
200
- }
201
243
 
202
- newSizes.forEach((newSize, modelIndex) => {
203
- this.setSize(metricCalculator, modelIndex, newSize);
204
- });
205
- this.updateCursor(metrics, this.draggingIndex);
206
- return true;
207
- }
208
-
209
- onUp(_, grid) {
210
- if (this.draggingIndex != null) {
211
- this.draggingIndex = null;
212
- this.resizingItems = [];
213
- this.hiddenItems = [];
214
- this.targetSizes.clear();
215
- this.updateSeparator(grid, null);
216
- }
217
-
218
- return false;
219
- }
220
-
221
- onDoubleClick(gridPoint, grid) {
222
- var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
223
-
224
- if (separatorIndex != null) {
225
- var {
226
- metricCalculator,
227
- metrics
228
- } = grid;
229
- var modelIndexes = metrics[this.modelIndexesProperty];
230
- var modelIndex = modelIndexes.get(separatorIndex);
231
- this.resetSize(metricCalculator, modelIndex);
232
- grid.forceUpdate();
244
+ newSizes.forEach(function (newSize, modelIndex) {
245
+ _this2.setSize(metricCalculator, modelIndex, newSize);
246
+ });
247
+ this.updateCursor(metrics, this.draggingIndex);
233
248
  return true;
234
249
  }
250
+ }, {
251
+ key: "onUp",
252
+ value: function onUp(_, grid) {
253
+ if (this.draggingIndex != null) {
254
+ this.draggingIndex = null;
255
+ this.resizingItems = [];
256
+ this.hiddenItems = [];
257
+ this.targetSizes.clear();
258
+ this.updateSeparator(grid, null);
259
+ }
235
260
 
236
- return false;
237
- }
238
-
239
- updateCursor(metrics, itemIndex) {
240
- var visibleSizes = metrics[this.visibleSizesProperty];
241
- var itemSize = visibleSizes.get(itemIndex);
242
-
243
- if (itemSize === 0) {
244
- this.cursor = this.hiddenCursor;
245
- } else {
246
- this.cursor = this.defaultCursor;
261
+ return false;
247
262
  }
248
- }
249
-
250
- addTargetSize(metrics, itemIndex) {
251
- var modelIndexes = metrics[this.modelIndexesProperty];
252
- var userSizes = metrics[this.userSizesProperty];
253
- var calculatedSizes = metrics[this.calculatedSizesProperty];
254
- var treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;
255
- var modelIndex = modelIndexes.get(itemIndex);
256
- var targetSize = userSizes.get(modelIndex);
263
+ }, {
264
+ key: "onDoubleClick",
265
+ value: function onDoubleClick(gridPoint, grid) {
266
+ var separatorIndex = this.getSeparatorIndex(gridPoint, grid);
267
+
268
+ if (separatorIndex != null) {
269
+ var metricCalculator = grid.metricCalculator,
270
+ metrics = grid.metrics;
271
+ var modelIndexes = metrics[this.modelIndexesProperty];
272
+ var modelIndex = modelIndexes.get(separatorIndex);
273
+ this.resetSize(metricCalculator, modelIndex);
274
+ grid.forceUpdate();
275
+ return true;
276
+ }
257
277
 
258
- if (targetSize == null || targetSize === 0) {
259
- targetSize = calculatedSizes.get(modelIndex) + treePadding;
278
+ return false;
260
279
  }
280
+ }, {
281
+ key: "updateCursor",
282
+ value: function updateCursor(metrics, itemIndex) {
283
+ var visibleSizes = metrics[this.visibleSizesProperty];
284
+ var itemSize = visibleSizes.get(itemIndex);
285
+
286
+ if (itemSize === 0) {
287
+ this.cursor = this.hiddenCursor;
288
+ } else {
289
+ this.cursor = this.defaultCursor;
290
+ }
291
+ }
292
+ }, {
293
+ key: "addTargetSize",
294
+ value: function addTargetSize(metrics, itemIndex) {
295
+ var modelIndexes = metrics[this.modelIndexesProperty];
296
+ var userSizes = metrics[this.userSizesProperty];
297
+ var calculatedSizes = metrics[this.calculatedSizesProperty];
298
+ var treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;
299
+ var modelIndex = modelIndexes.get(itemIndex);
300
+ var targetSize = userSizes.get(modelIndex);
301
+
302
+ if (targetSize == null || targetSize === 0) {
303
+ targetSize = calculatedSizes.get(modelIndex) + treePadding;
304
+ }
261
305
 
262
- this.targetSizes.set(modelIndex, targetSize);
263
- }
264
-
265
- removeTargetSize(metrics, itemIndex) {
266
- var modelIndexes = metrics[this.modelIndexesProperty];
267
- var modelIndex = modelIndexes.get(itemIndex);
268
- this.targetSizes.delete(modelIndex);
269
- }
306
+ this.targetSizes.set(modelIndex, targetSize);
307
+ }
308
+ }, {
309
+ key: "removeTargetSize",
310
+ value: function removeTargetSize(metrics, itemIndex) {
311
+ var modelIndexes = metrics[this.modelIndexesProperty];
312
+ var modelIndex = modelIndexes.get(itemIndex);
313
+ this.targetSizes["delete"](modelIndex);
314
+ }
315
+ }]);
270
316
 
271
- }
317
+ return GridSeparatorMouseHandler;
318
+ }(GridMouseHandler);
272
319
 
273
320
  export default GridSeparatorMouseHandler;
274
321
  //# sourceMappingURL=GridSeparatorMouseHandler.js.map
@@ -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.js"],"names":["GridMouseHandler","OVERRIDE_STRING","GridSeparatorMouseHandler","Map","itemIndex","metrics","Error","metricCalculator","modelIndex","size","grid","separatorIndex","gridPoint","checkAllowResize","getSeparatorIndex","dragOffset","draggingIndex","resizingItems","hiddenItems","getHiddenItems","reverse","targetSizes","clear","addTargetSize","updateCursor","updateSeparator","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","getNextShownItem","push","forEach","setSize","_","resetSize","forceUpdate","visibleSizes","visibleSizesProperty","cursor","hiddenCursor","defaultCursor","userSizes","userSizesProperty"],"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 +1 @@
1
- {"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.js"],"names":[],"mappings":";AAGA;IAsHE;;;MAoBC;IAzID,gBAAkB;IAKlB,kDAeC;CAsHF"}
1
+ {"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.js"],"names":[],"mappings":";AAGA;IAuHE;;;MAoBC;IA1ID,gBAAkB;IAKlB,kDAgBC;CAsHF"}