@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.
Files changed (147) hide show
  1. package/dist/CellInputField.d.ts +4 -4
  2. package/dist/CellInputField.d.ts.map +1 -1
  3. package/dist/CellInputField.js +10 -11
  4. package/dist/CellInputField.js.map +1 -1
  5. package/dist/EditableGridModel.d.ts +70 -0
  6. package/dist/EditableGridModel.d.ts.map +1 -0
  7. package/dist/EditableGridModel.js +13 -0
  8. package/dist/EditableGridModel.js.map +1 -0
  9. package/dist/EventHandlerResult.d.ts +17 -0
  10. package/dist/EventHandlerResult.d.ts.map +1 -0
  11. package/dist/EventHandlerResult.js +2 -0
  12. package/dist/EventHandlerResult.js.map +1 -0
  13. package/dist/ExpandableGridModel.d.ts +34 -0
  14. package/dist/ExpandableGridModel.d.ts.map +1 -0
  15. package/dist/ExpandableGridModel.js +7 -0
  16. package/dist/ExpandableGridModel.js.map +1 -0
  17. package/dist/Grid.d.ts +283 -234
  18. package/dist/Grid.d.ts.map +1 -1
  19. package/dist/Grid.js +397 -165
  20. package/dist/Grid.js.map +1 -1
  21. package/dist/GridColorUtils.d.ts +22 -12
  22. package/dist/GridColorUtils.d.ts.map +1 -1
  23. package/dist/GridColorUtils.js +26 -21
  24. package/dist/GridColorUtils.js.map +1 -1
  25. package/dist/GridMetricCalculator.d.ts.map +1 -1
  26. package/dist/GridMetricCalculator.js +8 -4
  27. package/dist/GridMetricCalculator.js.map +1 -1
  28. package/dist/GridModel.d.ts +54 -60
  29. package/dist/GridModel.d.ts.map +1 -1
  30. package/dist/GridModel.js +54 -122
  31. package/dist/GridModel.js.map +1 -1
  32. package/dist/GridMouseHandler.d.ts +23 -24
  33. package/dist/GridMouseHandler.d.ts.map +1 -1
  34. package/dist/GridMouseHandler.js +8 -14
  35. package/dist/GridMouseHandler.js.map +1 -1
  36. package/dist/GridRange.d.ts +2 -2
  37. package/dist/GridRange.d.ts.map +1 -1
  38. package/dist/GridRange.js +1 -1
  39. package/dist/GridRange.js.map +1 -1
  40. package/dist/GridRenderer.d.ts +117 -69
  41. package/dist/GridRenderer.d.ts.map +1 -1
  42. package/dist/GridRenderer.js +183 -168
  43. package/dist/GridRenderer.js.map +1 -1
  44. package/dist/GridUtils.d.ts +4 -4
  45. package/dist/GridUtils.js +4 -4
  46. package/dist/GridUtils.js.map +1 -1
  47. package/dist/KeyHandler.d.ts +10 -7
  48. package/dist/KeyHandler.d.ts.map +1 -1
  49. package/dist/KeyHandler.js +6 -5
  50. package/dist/KeyHandler.js.map +1 -1
  51. package/dist/MockGridData.d.ts +1 -1
  52. package/dist/MockGridData.d.ts.map +1 -1
  53. package/dist/MockGridData.js.map +1 -1
  54. package/dist/MockGridModel.d.ts +39 -12
  55. package/dist/MockGridModel.d.ts.map +1 -1
  56. package/dist/MockGridModel.js +43 -10
  57. package/dist/MockGridModel.js.map +1 -1
  58. package/dist/MockTreeGridModel.d.ts +37 -22
  59. package/dist/MockTreeGridModel.d.ts.map +1 -1
  60. package/dist/MockTreeGridModel.js +38 -20
  61. package/dist/MockTreeGridModel.js.map +1 -1
  62. package/dist/errors/AssertionError.d.ts +5 -0
  63. package/dist/errors/AssertionError.d.ts.map +1 -0
  64. package/dist/errors/AssertionError.js +12 -0
  65. package/dist/errors/AssertionError.js.map +1 -0
  66. package/dist/errors/PasteError.d.ts +1 -1
  67. package/dist/errors/PasteError.d.ts.map +1 -1
  68. package/dist/errors/PasteError.js +1 -2
  69. package/dist/errors/PasteError.js.map +1 -1
  70. package/dist/errors/assertIsDefined.d.ts +3 -0
  71. package/dist/errors/assertIsDefined.d.ts.map +1 -0
  72. package/dist/errors/assertIsDefined.js +8 -0
  73. package/dist/errors/assertIsDefined.js.map +1 -0
  74. package/dist/errors/index.d.ts +2 -0
  75. package/dist/errors/index.d.ts.map +1 -1
  76. package/dist/errors/index.js +2 -1
  77. package/dist/errors/index.js.map +1 -1
  78. package/dist/index.d.ts +1 -0
  79. package/dist/index.d.ts.map +1 -1
  80. package/dist/index.js +1 -0
  81. package/dist/index.js.map +1 -1
  82. package/dist/key-handlers/EditKeyHandler.d.ts +3 -2
  83. package/dist/key-handlers/EditKeyHandler.d.ts.map +1 -1
  84. package/dist/key-handlers/EditKeyHandler.js +10 -9
  85. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  86. package/dist/key-handlers/PasteKeyHandler.d.ts +3 -5
  87. package/dist/key-handlers/PasteKeyHandler.d.ts.map +1 -1
  88. package/dist/key-handlers/PasteKeyHandler.js +3 -3
  89. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  90. package/dist/key-handlers/SelectionKeyHandler.d.ts +5 -5
  91. package/dist/key-handlers/SelectionKeyHandler.d.ts.map +1 -1
  92. package/dist/key-handlers/SelectionKeyHandler.js +16 -15
  93. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  94. package/dist/key-handlers/TreeKeyHandler.d.ts +2 -2
  95. package/dist/key-handlers/TreeKeyHandler.d.ts.map +1 -1
  96. package/dist/key-handlers/TreeKeyHandler.js +14 -12
  97. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  98. package/dist/memoizeClear.d.ts +13 -3
  99. package/dist/memoizeClear.d.ts.map +1 -1
  100. package/dist/memoizeClear.js +7 -7
  101. package/dist/memoizeClear.js.map +1 -1
  102. package/dist/mouse-handlers/EditMouseHandler.d.ts +3 -4
  103. package/dist/mouse-handlers/EditMouseHandler.d.ts.map +1 -1
  104. package/dist/mouse-handlers/EditMouseHandler.js +3 -2
  105. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  106. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +12 -5
  107. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
  108. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +13 -10
  109. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  110. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +24 -3
  111. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
  112. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -1
  113. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  114. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts +16 -6
  115. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
  116. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +41 -37
  117. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  118. package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts +10 -3
  119. package/dist/mouse-handlers/GridRowMoveMouseHandler.d.ts.map +1 -1
  120. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +14 -11
  121. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  122. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +24 -3
  123. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
  124. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +4 -3
  125. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  126. package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts +8 -3
  127. package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
  128. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +12 -7
  129. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  130. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts +9 -3
  131. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.d.ts.map +1 -1
  132. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +2 -1
  133. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  134. package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts +15 -9
  135. package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts.map +1 -1
  136. package/dist/mouse-handlers/GridSelectionMouseHandler.js +26 -16
  137. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  138. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +46 -28
  139. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
  140. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +57 -74
  141. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  142. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts +16 -6
  143. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
  144. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +41 -37
  145. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  146. package/dist/tsconfig.tsbuildinfo +1 -1
  147. 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
- var OVERRIDE_STRING = 'NEED_TO_OVERRIDE_PROPERTY';
8
+
8
9
  /**
9
10
  * Abstract class that should be extended for column/row behaviour
10
11
  * Override the necessary functions/properties
11
12
  */
12
-
13
13
  class GridSeparatorMouseHandler extends GridMouseHandler {
14
14
  constructor() {
15
15
  super(...arguments);
16
16
 
17
- _defineProperty(this, "draggingIndex", null);
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, "cursor", OVERRIDE_STRING);
28
-
29
- _defineProperty(this, "hiddenCursor", OVERRIDE_STRING);
27
+ _defineProperty(this, "hiddenCursor", void 0);
30
28
 
31
- _defineProperty(this, "defaultCursor", OVERRIDE_STRING);
29
+ _defineProperty(this, "defaultCursor", void 0);
32
30
 
33
- _defineProperty(this, "pointProperty", OVERRIDE_STRING);
31
+ _defineProperty(this, "pointProperty", void 0);
34
32
 
35
- _defineProperty(this, "userSizesProperty", OVERRIDE_STRING);
33
+ _defineProperty(this, "userSizesProperty", void 0);
36
34
 
37
- _defineProperty(this, "visibleOffsetProperty", OVERRIDE_STRING);
35
+ _defineProperty(this, "visibleOffsetProperty", void 0);
38
36
 
39
- _defineProperty(this, "visibleSizesProperty", OVERRIDE_STRING);
37
+ _defineProperty(this, "visibleSizesProperty", void 0);
40
38
 
41
- _defineProperty(this, "marginProperty", OVERRIDE_STRING);
39
+ _defineProperty(this, "marginProperty", void 0);
42
40
 
43
- _defineProperty(this, "calculatedSizesProperty", OVERRIDE_STRING);
41
+ _defineProperty(this, "calculatedSizesProperty", void 0);
44
42
 
45
- _defineProperty(this, "modelIndexesProperty", OVERRIDE_STRING);
43
+ _defineProperty(this, "modelIndexesProperty", void 0);
46
44
 
47
- _defineProperty(this, "firstIndexProperty", OVERRIDE_STRING);
45
+ _defineProperty(this, "firstIndexProperty", void 0);
48
46
 
49
- _defineProperty(this, "treePaddingProperty", OVERRIDE_STRING);
47
+ _defineProperty(this, "treePaddingProperty", void 0);
50
48
  }
51
49
 
52
- getHiddenItems(itemIndex, metrics) {
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, metrics).reverse();
62
+ this.hiddenItems = this.getHiddenItems(separatorIndex, _metrics).reverse();
93
63
  this.targetSizes.clear();
94
- this.addTargetSize(metrics, separatorIndex);
95
- this.updateCursor(metrics, separatorIndex);
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
- this.updateCursor(metrics, separatorIndex);
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.get(resizeIndex);
112
+ var itemOffset = getOrThrow(visibleOffsets, resizeIndex);
141
113
  var itemSize = point - margin - itemOffset - this.dragOffset;
142
- var modelIndex = modelIndexes.get(resizeIndex);
143
- var targetSize = this.targetSizes.get(modelIndex);
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.get(modelIndex);
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(modelIndex, newSize);
139
+ newSizes.set(_modelIndex, newSize);
166
140
  } else {
167
- newSizes.set(modelIndex, null);
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.get(resizeIndex));
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 != null) {
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
- this.setSize(metricCalculator, modelIndex, newSize);
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(_, grid) {
189
+ onUp(gridPoint, grid) {
210
190
  if (this.draggingIndex != null) {
211
- this.draggingIndex = null;
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
- var modelIndexes = metrics[this.modelIndexesProperty];
230
- var modelIndex = modelIndexes.get(separatorIndex);
231
- this.resetSize(metricCalculator, modelIndex);
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.get(itemIndex);
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.get(itemIndex);
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.get(modelIndex) + treePadding;
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.get(itemIndex);
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":";;AAAA;;AACA;OACOA,gB;AAEP,IAAMC,eAAe,GAAG,2BAAxB;AAEA;AACA;AACA;AACA;;AACA,MAAMC,yBAAN,SAAwCF,gBAAxC,CAAyD;AAAA;AAAA;;AAAA,2CAEvC,IAFuC;;AAAA,2CAKvC,EALuC;;AAAA,yCAQzC,EARyC;;AAAA,yCAWzC,IAAIG,GAAJ,EAXyC;;AAAA,wCAa1C,CAb0C;;AAAA,oCAgB9CF,eAhB8C;;AAAA,0CAkBxCA,eAlBwC;;AAAA,2CAoBvCA,eApBuC;;AAAA,2CAsBvCA,eAtBuC;;AAAA,+CAwBnCA,eAxBmC;;AAAA,mDA0B/BA,eA1B+B;;AAAA,kDA4BhCA,eA5BgC;;AAAA,4CA8BtCA,eA9BsC;;AAAA,qDAgC7BA,eAhC6B;;AAAA,kDAkChCA,eAlCgC;;AAAA,gDAoClCA,eApCkC;;AAAA,iDAsCjCA,eAtCiC;AAAA;;AAwCvDG,EAAAA,cAAc,CAACC,SAAD,EAAYC,OAAZ,EAAqB;AACjC,UAAM,IAAIC,KAAJ,CAAU,iCAAV,CAAN;AACD;;AAEDC,EAAAA,gBAAgB,CAACH,SAAD,EAAYC,OAAZ,EAAqB;AACnC,UAAM,IAAIC,KAAJ,CAAU,mCAAV,CAAN;AACD,GA9CsD,CAgDvD;;;AACAE,EAAAA,OAAO,CAACC,gBAAD,EAAmBC,UAAnB,EAA+BC,IAA/B,EAAqC;AAC1C,UAAM,IAAIL,KAAJ,CAAU,0BAAV,CAAN;AACD,GAnDsD,CAqDvD;;;AACAM,EAAAA,SAAS,CAACH,gBAAD,EAAmBC,UAAnB,EAA+B;AACtC,UAAM,IAAIJ,KAAJ,CAAU,4BAAV,CAAN;AACD,GAxDsD,CA0DvD;;;AACAO,EAAAA,eAAe,CAACC,IAAD,EAAOC,cAAP,EAAuB;AACpC,UAAM,IAAIT,KAAJ,CAAU,kCAAV,CAAN;AACD,GA7DsD,CA+DvD;;;AACAU,EAAAA,iBAAiB,CAACC,SAAD,EAAYH,IAAZ,EAA2C;AAAA,QAAzBI,gBAAyB,uEAAN,IAAM;AAC1D,UAAM,IAAIZ,KAAJ,CAAU,oCAAV,CAAN;AACD,GAlEsD,CAmEvD;;;AAEAa,EAAAA,MAAM,CAACF,SAAD,EAAYH,IAAZ,EAAkB;AACtB,QAAMC,cAAc,GAAG,KAAKC,iBAAL,CAAuBC,SAAvB,EAAkCH,IAAlC,CAAvB;;AACA,QAAIC,cAAc,IAAI,IAAtB,EAA4B;AAC1B,UAAM;AAAEV,QAAAA;AAAF,UAAcS,IAApB;AAEA,WAAKM,UAAL,GAAkB,CAAlB;AACA,WAAKC,aAAL,GAAqBN,cAArB;AACA,WAAKO,aAAL,GAAqB,CAACP,cAAD,CAArB;AACA,WAAKQ,WAAL,GAAmB,KAAKpB,cAAL,CAAoBY,cAApB,EAAoCV,OAApC,EAA6CmB,OAA7C,EAAnB;AACA,WAAKC,WAAL,CAAiBC,KAAjB;AAEA,WAAKC,aAAL,CAAmBtB,OAAnB,EAA4BU,cAA5B;AAEA,WAAKa,YAAL,CAAkBvB,OAAlB,EAA2BU,cAA3B;AAEA,WAAKF,eAAL,CAAqBC,IAArB,EAA2BC,cAA3B;AAEA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDc,EAAAA,MAAM,CAACZ,SAAD,EAAYH,IAAZ,EAAkB;AACtB,QAAMC,cAAc,GAAG,KAAKC,iBAAL,CAAuBC,SAAvB,EAAkCH,IAAlC,CAAvB;;AACA,QAAIC,cAAc,IAAI,IAAtB,EAA4B;AAC1B,UAAM;AAAEV,QAAAA;AAAF,UAAcS,IAApB;AACA,WAAKc,YAAL,CAAkBvB,OAAlB,EAA2BU,cAA3B;AACA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDe,EAAAA,MAAM,CAACb,SAAD,EAAYH,IAAZ,EAAkB;AACtB,QAAI,KAAKO,aAAL,IAAsB,IAA1B,EAAgC;AAC9B,aAAO,KAAP;AACD;;AAED,QAAMU,KAAK,GAAGd,SAAS,CAAC,KAAKe,aAAN,CAAvB;AACA,QAAM;AAAEvB,MAAAA,gBAAF;AAAoBJ,MAAAA;AAApB,QAAgCS,IAAtC;AACA,QAAMmB,KAAK,GAAGnB,IAAI,CAACoB,QAAL,EAAd;AAEA,QAAMC,cAAc,GAAG9B,OAAO,CAAC,KAAK+B,qBAAN,CAA9B;AACA,QAAMC,MAAM,GAAGhC,OAAO,CAAC,KAAKiC,cAAN,CAAtB;AACA,QAAMC,eAAe,GAAGlC,OAAO,CAAC,KAAKmC,uBAAN,CAA/B;AACA,QAAMC,YAAY,GAAGpC,OAAO,CAAC,KAAKqC,oBAAN,CAA5B;AACA,QAAMC,UAAU,GAAGtC,OAAO,CAAC,KAAKuC,kBAAN,CAA1B;AACA,QAAMC,WAAW,GAAGxC,OAAO,CAAC,KAAKyC,mBAAN,CAA3B,CAdsB,CAgBtB;;AACA,QAAMC,QAAQ,GAAG,IAAI7C,GAAJ,EAAjB,CAjBsB,CAmBtB;;AACA,QAAI8C,WAAW,GAAG,KAAK1B,aAAL,CAAmB,KAAKA,aAAL,CAAmB2B,MAAnB,GAA4B,CAA/C,CAAlB;;AACA,WAAOD,WAAW,IAAI,IAAtB,EAA4B;AAC1B,UAAME,UAAU,GAAGf,cAAc,CAACgB,GAAf,CAAmBH,WAAnB,CAAnB;AACA,UAAMI,QAAQ,GAAGrB,KAAK,GAAGM,MAAR,GAAiBa,UAAjB,GAA8B,KAAK9B,UAApD;AACA,UAAMV,UAAU,GAAG+B,YAAY,CAACU,GAAb,CAAiBH,WAAjB,CAAnB;AACA,UAAMK,UAAU,GAAG,KAAK5B,WAAL,CAAiB0B,GAAjB,CAAqBzC,UAArB,CAAnB;AACA,UAAM4C,kBAAkB,GAAG,KAAKhC,aAAL,CAAmB2B,MAAnB,GAA4B,CAAvD;AACA,UAAMM,WAAW,GAAG,KAAKhC,WAAL,CAAiBiC,OAAjB,CAAyBR,WAAzB,CAApB;AACA,UAAIS,cAAc,GAAGlB,eAAe,CAACY,GAAhB,CAAoBzC,UAApB,CAArB;;AACA,UAAIsC,WAAW,KAAKL,UAApB,EAAgC;AAC9Bc,QAAAA,cAAc,IAAIZ,WAAlB;AACD;;AACD,UAAIa,OAAO,GAAGN,QAAd;;AACA,UACEO,IAAI,CAACC,GAAL,CAASR,QAAQ,GAAGK,cAApB,KAAuCxB,KAAK,CAAC4B,yBAD/C,EAEE;AACA;AACAH,QAAAA,OAAO,GAAG,IAAV;AACD,OALD,MAKO,IACLN,QAAQ,GAAGC,UAAX,KACEC,kBAAkB,IAAIC,WAAW,KAAK,CAAvC,IAA6CA,WAAW,GAAG,CAD5D,CADK,EAGL;AACAG,QAAAA,OAAO,GAAGL,UAAV;AACD,OALM,MAKA,IAAID,QAAQ,IAAInB,KAAK,CAAC6B,+BAAtB,EAAuD;AAC5D;AACAJ,QAAAA,OAAO,GAAG,CAAV;AACD;;AAED,UAAIA,OAAO,KAAKD,cAAhB,EAAgC;AAC9BV,QAAAA,QAAQ,CAACgB,GAAT,CAAarD,UAAb,EAAyBgD,OAAzB;AACD,OAFD,MAEO;AACLX,QAAAA,QAAQ,CAACgB,GAAT,CAAarD,UAAb,EAAyB,IAAzB;AACD;;AAED,UAAI0C,QAAQ,GAAG,CAACnB,KAAK,CAAC4B,yBAAlB,IAA+CH,OAAO,KAAK,CAA/D,EAAkE;AAChE,YAAIH,WAAW,IAAI,CAAf,IAAoBD,kBAAxB,EAA4C;AAC1C,eAAKhC,aAAL,CAAmB0C,GAAnB;AACA,eAAKC,gBAAL,CAAsB5D,OAAtB,EAA+B2C,WAA/B;AACAA,UAAAA,WAAW,GAAG,KAAK1B,aAAL,CAAmB,KAAKA,aAAL,CAAmB2B,MAAnB,GAA4B,CAA/C,CAAd;AACA,eAAK7B,UAAL,IAAmB,KAAKK,WAAL,CAAiB0B,GAAjB,CACjBV,YAAY,CAACU,GAAb,CAAiBH,WAAjB,CADiB,CAAnB;AAGD,SAPD,MAOO;AACLA,UAAAA,WAAW,GAAG,KAAKzC,gBAAL,CAAsByC,WAAtB,EAAmC3C,OAAnC,CAAd;;AACA,cAAI2C,WAAW,IAAI,IAAnB,EAAyB;AACvB,iBAAK1B,aAAL,CAAmB4C,IAAnB,CAAwBlB,WAAxB;AACA,iBAAKrB,aAAL,CAAmBtB,OAAnB,EAA4B2C,WAA5B;AACD;AACF;AACF,OAfD,MAeO,IACLI,QAAQ,GAAGC,UAAU,GAAGpB,KAAK,CAAC4B,yBAA9B,IACAH,OAAO,KAAKL,UAFP,EAGL;AACA,YAAIE,WAAW,GAAG,CAAlB,EAAqB;AACnB,eAAKnC,UAAL,IAAmBsC,OAAnB;AACAV,UAAAA,WAAW,GAAG,KAAKzB,WAAL,CAAiBgC,WAAW,GAAG,CAA/B,CAAd;AACA,eAAKjC,aAAL,CAAmB4C,IAAnB,CAAwBlB,WAAxB;AACA,eAAKrB,aAAL,CAAmBtB,OAAnB,EAA4B2C,WAA5B;AACD,SALD,MAKO,IAAIM,kBAAJ,EAAwB;AAC7B,eAAKhC,aAAL,CAAmB0C,GAAnB;AACA,eAAKC,gBAAL,CAAsB5D,OAAtB,EAA+B2C,WAA/B;AACAA,UAAAA,WAAW,GAAG,KAAK1B,aAAL,CAAmB,KAAKA,aAAL,CAAmB2B,MAAnB,GAA4B,CAA/C,CAAd;AACD,SAJM,MAIA;AACLD,UAAAA,WAAW,GAAG,IAAd;AACD;AACF,OAhBM,MAgBA;AACLA,QAAAA,WAAW,GAAG,IAAd;AACD;AACF;;AAEDD,IAAAA,QAAQ,CAACoB,OAAT,CAAiB,CAACT,OAAD,EAAUhD,UAAV,KAAyB;AACxC,WAAKF,OAAL,CAAaC,gBAAb,EAA+BC,UAA/B,EAA2CgD,OAA3C;AACD,KAFD;AAIA,SAAK9B,YAAL,CAAkBvB,OAAlB,EAA2B,KAAKgB,aAAhC;AAEA,WAAO,IAAP;AACD;;AAED+C,EAAAA,IAAI,CAACC,CAAD,EAAIvD,IAAJ,EAAU;AACZ,QAAI,KAAKO,aAAL,IAAsB,IAA1B,EAAgC;AAC9B,WAAKA,aAAL,GAAqB,IAArB;AACA,WAAKC,aAAL,GAAqB,EAArB;AACA,WAAKC,WAAL,GAAmB,EAAnB;AACA,WAAKE,WAAL,CAAiBC,KAAjB;AAEA,WAAKb,eAAL,CAAqBC,IAArB,EAA2B,IAA3B;AACD;;AAED,WAAO,KAAP;AACD;;AAEDwD,EAAAA,aAAa,CAACrD,SAAD,EAAYH,IAAZ,EAAkB;AAC7B,QAAMC,cAAc,GAAG,KAAKC,iBAAL,CAAuBC,SAAvB,EAAkCH,IAAlC,CAAvB;;AAEA,QAAIC,cAAc,IAAI,IAAtB,EAA4B;AAC1B,UAAM;AAAEN,QAAAA,gBAAF;AAAoBJ,QAAAA;AAApB,UAAgCS,IAAtC;AACA,UAAM2B,YAAY,GAAGpC,OAAO,CAAC,KAAKqC,oBAAN,CAA5B;AACA,UAAMhC,UAAU,GAAG+B,YAAY,CAACU,GAAb,CAAiBpC,cAAjB,CAAnB;AAEA,WAAKH,SAAL,CAAeH,gBAAf,EAAiCC,UAAjC;AAEAI,MAAAA,IAAI,CAACyD,WAAL;AAEA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAED3C,EAAAA,YAAY,CAACvB,OAAD,EAAUD,SAAV,EAAqB;AAC/B,QAAMoE,YAAY,GAAGnE,OAAO,CAAC,KAAKoE,oBAAN,CAA5B;AACA,QAAMrB,QAAQ,GAAGoB,YAAY,CAACrB,GAAb,CAAiB/C,SAAjB,CAAjB;;AACA,QAAIgD,QAAQ,KAAK,CAAjB,EAAoB;AAClB,WAAKsB,MAAL,GAAc,KAAKC,YAAnB;AACD,KAFD,MAEO;AACL,WAAKD,MAAL,GAAc,KAAKE,aAAnB;AACD;AACF;;AAEDjD,EAAAA,aAAa,CAACtB,OAAD,EAAUD,SAAV,EAAqB;AAChC,QAAMqC,YAAY,GAAGpC,OAAO,CAAC,KAAKqC,oBAAN,CAA5B;AACA,QAAMmC,SAAS,GAAGxE,OAAO,CAAC,KAAKyE,iBAAN,CAAzB;AACA,QAAMvC,eAAe,GAAGlC,OAAO,CAAC,KAAKmC,uBAAN,CAA/B;AACA,QAAMK,WAAW,GAAGzC,SAAS,KAAK,CAAd,GAAkBC,OAAO,CAAC,KAAKyC,mBAAN,CAAzB,GAAsD,CAA1E;AAEA,QAAMpC,UAAU,GAAG+B,YAAY,CAACU,GAAb,CAAiB/C,SAAjB,CAAnB;AACA,QAAIiD,UAAU,GAAGwB,SAAS,CAAC1B,GAAV,CAAczC,UAAd,CAAjB;;AACA,QAAI2C,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,CAAzC,EAA4C;AAC1CA,MAAAA,UAAU,GAAGd,eAAe,CAACY,GAAhB,CAAoBzC,UAApB,IAAkCmC,WAA/C;AACD;;AACD,SAAKpB,WAAL,CAAiBsC,GAAjB,CAAqBrD,UAArB,EAAiC2C,UAAjC;AACD;;AAEDY,EAAAA,gBAAgB,CAAC5D,OAAD,EAAUD,SAAV,EAAqB;AACnC,QAAMqC,YAAY,GAAGpC,OAAO,CAAC,KAAKqC,oBAAN,CAA5B;AACA,QAAMhC,UAAU,GAAG+B,YAAY,CAACU,GAAb,CAAiB/C,SAAjB,CAAnB;AACA,SAAKqB,WAAL,CAAiBsD,MAAjB,CAAwBrE,UAAxB;AACD;;AAlQsD;;AAqQzD,eAAeT,yBAAf","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
- export default GridVerticalScrollBarMouseHandler;
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: any, rawTop: any): {
4
- top: number;
7
+ static getTopWithOffsetFromRawTop(grid: Grid, rawTop: number): {
8
+ top: VisibleIndex;
5
9
  topOffset: number;
6
10
  };
7
- dragOffset: any;
8
- isInScrollBar(gridPoint: any, grid: any): boolean;
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
- import GridMouseHandler from "../GridMouseHandler";
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.js"],"names":[],"mappings":";AAGA;IAuHE;;;MAoBC;IA1ID,gBAAkB;IAKlB,kDAgBC;CAsHF"}
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", null);
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 != null) {
123
- this.dragOffset = null;
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.js"],"names":["GridMouseHandler","GridVerticalScrollBarMouseHandler","isInScrollBar","gridPoint","grid","theme","getTheme","scrollBarSize","scrollBarHoverSize","metrics","x","y","lastLeft","lastTop","columnHeaderHeight","height","width","scrollBarHeight","onDown","barHeight","handleHeight","scrollY","mouseBarY","dragOffset","setState","isDraggingVerticalScrollBar","rawTop","Math","min","max","top","newTop","topOffset","newTopOffset","getTopWithOffsetFromRawTop","setViewState","isDragging","onMove","onDrag","onUp","onClick","metricCalculator","scrollSnapToRow","round","floor","topOffsetPercent","rowHeight","visibleRowHeights","get","metricState","getMetricState","getVisibleRowHeight"],"mappings":"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","sourcesContent":["import GridMouseHandler from '../GridMouseHandler';\n\n/* eslint class-methods-use-this: \"off\" */\nclass GridVerticalScrollBarMouseHandler extends GridMouseHandler {\n dragOffset = null;\n\n // to trigger pointer event blocking\n cursor = 'default';\n\n isInScrollBar(gridPoint, grid) {\n const theme = grid.getTheme();\n\n const { scrollBarSize, scrollBarHoverSize } = theme;\n const { metrics } = grid;\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, grid) {\n const { metrics } = grid;\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, grid) {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onDrag(gridPoint, grid) {\n if (this.dragOffset != null) {\n const { y } = gridPoint;\n const { metrics } = grid;\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, grid) {\n if (this.dragOffset != null) {\n this.dragOffset = null;\n grid.setState({ isDraggingVerticalScrollBar: false, isDragging: false });\n }\n\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onClick(gridPoint, grid) {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n static getTopWithOffsetFromRawTop(grid, rawTop) {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\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\nexport default GridVerticalScrollBarMouseHandler;\n"],"file":"GridVerticalScrollBarMouseHandler.js"}
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"}