@deephaven/grid 0.22.3-beta.18 → 0.22.3-beta.21

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 (82) hide show
  1. package/dist/CellInputField.d.ts +5 -5
  2. package/dist/CellInputField.d.ts.map +1 -1
  3. package/dist/CellInputField.js +6 -23
  4. package/dist/CellInputField.js.map +1 -1
  5. package/dist/EditableGridModel.js +1 -0
  6. package/dist/EditableGridModel.js.map +1 -1
  7. package/dist/ExpandableGridModel.js +1 -0
  8. package/dist/ExpandableGridModel.js.map +1 -1
  9. package/dist/Grid.js +77 -315
  10. package/dist/Grid.js.map +1 -1
  11. package/dist/GridAxisRange.js.map +1 -1
  12. package/dist/GridColorUtils.js +1 -2
  13. package/dist/GridColorUtils.js.map +1 -1
  14. package/dist/GridMetricCalculator.js +83 -240
  15. package/dist/GridMetricCalculator.js.map +1 -1
  16. package/dist/GridModel.js +13 -31
  17. package/dist/GridModel.js.map +1 -1
  18. package/dist/GridMouseHandler.js +2 -15
  19. package/dist/GridMouseHandler.js.map +1 -1
  20. package/dist/GridRange.js +46 -160
  21. package/dist/GridRange.js.map +1 -1
  22. package/dist/GridRenderer.js +126 -407
  23. package/dist/GridRenderer.js.map +1 -1
  24. package/dist/GridTestUtils.js +0 -5
  25. package/dist/GridTestUtils.js.map +1 -1
  26. package/dist/GridTheme.js.map +1 -1
  27. package/dist/GridUtils.js +68 -217
  28. package/dist/GridUtils.js.map +1 -1
  29. package/dist/KeyHandler.js +2 -8
  30. package/dist/KeyHandler.js.map +1 -1
  31. package/dist/MockGridData.js.map +1 -1
  32. package/dist/MockGridModel.js +0 -42
  33. package/dist/MockGridModel.js.map +1 -1
  34. package/dist/MockTreeGridModel.js +6 -55
  35. package/dist/MockTreeGridModel.js.map +1 -1
  36. package/dist/StaticDataGridModel.js +0 -15
  37. package/dist/StaticDataGridModel.js.map +1 -1
  38. package/dist/ThemeContext.js.map +1 -1
  39. package/dist/ViewportDataGridModel.js +0 -14
  40. package/dist/ViewportDataGridModel.js.map +1 -1
  41. package/dist/errors/AssertionError.js +0 -3
  42. package/dist/errors/AssertionError.js.map +1 -1
  43. package/dist/errors/PasteError.js +0 -3
  44. package/dist/errors/PasteError.js.map +1 -1
  45. package/dist/errors/assertIsDefined.js.map +1 -1
  46. package/dist/errors/index.js.map +1 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/key-handlers/EditKeyHandler.js +0 -12
  49. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  50. package/dist/key-handlers/PasteKeyHandler.js +15 -33
  51. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  52. package/dist/key-handlers/SelectionKeyHandler.js +6 -53
  53. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  54. package/dist/key-handlers/TreeKeyHandler.js +0 -11
  55. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  56. package/dist/key-handlers/index.js.map +1 -1
  57. package/dist/memoizeClear.js +1 -4
  58. package/dist/memoizeClear.js.map +1 -1
  59. package/dist/mouse-handlers/EditMouseHandler.js +0 -5
  60. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  61. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +35 -123
  62. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  63. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -27
  64. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  65. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +0 -28
  66. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  67. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +0 -27
  68. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  69. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +0 -23
  70. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  71. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +0 -10
  72. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  73. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +0 -6
  74. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  75. package/dist/mouse-handlers/GridSelectionMouseHandler.js +8 -38
  76. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  77. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +5 -54
  78. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  79. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +0 -28
  80. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  81. package/dist/mouse-handlers/index.js.map +1 -1
  82. package/package.json +4 -4
@@ -1,8 +1,6 @@
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
-
3
2
  import { getOrThrow } from "../GridMetricCalculator.js";
4
3
  import GridMouseHandler from "../GridMouseHandler.js";
5
-
6
4
  /**
7
5
  * Abstract class that should be extended for column/row behaviour
8
6
  * Override the necessary functions/properties
@@ -10,41 +8,25 @@ import GridMouseHandler from "../GridMouseHandler.js";
10
8
  class GridSeparatorMouseHandler extends GridMouseHandler {
11
9
  constructor() {
12
10
  super(...arguments);
13
-
14
11
  _defineProperty(this, "draggingIndex", void 0);
15
-
16
12
  _defineProperty(this, "resizingItems", []);
17
-
18
13
  _defineProperty(this, "hiddenItems", []);
19
-
20
14
  _defineProperty(this, "targetSizes", new Map());
21
-
22
15
  _defineProperty(this, "dragOffset", 0);
23
-
24
16
  _defineProperty(this, "hiddenCursor", void 0);
25
-
26
17
  _defineProperty(this, "defaultCursor", void 0);
27
-
28
18
  _defineProperty(this, "pointProperty", void 0);
29
-
30
19
  _defineProperty(this, "userSizesProperty", void 0);
31
-
32
20
  _defineProperty(this, "visibleOffsetProperty", void 0);
33
-
34
21
  _defineProperty(this, "visibleSizesProperty", void 0);
35
-
36
22
  _defineProperty(this, "marginProperty", void 0);
37
-
38
23
  _defineProperty(this, "calculatedSizesProperty", void 0);
39
-
40
24
  _defineProperty(this, "modelIndexesProperty", void 0);
41
-
42
25
  _defineProperty(this, "firstIndexProperty", void 0);
43
-
44
26
  _defineProperty(this, "treePaddingProperty", void 0);
45
27
  }
46
-
47
28
  // End of overrides
29
+
48
30
  onDown(gridPoint, grid) {
49
31
  var {
50
32
  metrics
@@ -55,7 +37,6 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
55
37
  var theme = grid.getTheme();
56
38
  if (!metrics) throw new Error('metrics not set');
57
39
  var separator = this.getSeparator(gridPoint, metrics, model, theme);
58
-
59
40
  if (separator != null) {
60
41
  var separatorIndex = separator.index;
61
42
  this.dragOffset = 0;
@@ -68,10 +49,8 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
68
49
  this.updateSeparator(grid, separator);
69
50
  return true;
70
51
  }
71
-
72
52
  return false;
73
53
  }
74
-
75
54
  onMove(gridPoint, grid) {
76
55
  var {
77
56
  metrics
@@ -82,20 +61,16 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
82
61
  var theme = grid.getTheme();
83
62
  if (!metrics) throw new Error('metrics not set');
84
63
  var separator = this.getSeparator(gridPoint, metrics, model, theme);
85
-
86
64
  if (separator != null) {
87
65
  this.updateCursor(metrics, separator.index);
88
66
  return true;
89
67
  }
90
-
91
68
  return false;
92
69
  }
93
-
94
70
  onDrag(gridPoint, grid) {
95
71
  if (this.draggingIndex == null) {
96
72
  return false;
97
73
  }
98
-
99
74
  var point = gridPoint[this.pointProperty];
100
75
  var {
101
76
  metricCalculator,
@@ -108,29 +83,25 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
108
83
  var calculatedSizes = metrics[this.calculatedSizesProperty];
109
84
  var modelIndexes = metrics[this.modelIndexesProperty];
110
85
  var firstIndex = metrics[this.firstIndexProperty];
111
- var treePadding = metrics[this.treePaddingProperty]; // New sizes are batched and applied after the loop to avoid updating state while calculating next step
86
+ var treePadding = metrics[this.treePaddingProperty];
112
87
 
113
- var newSizes = new Map(); // Use a loop as we may need to resize multiple items if they drag quickly
88
+ // New sizes are batched and applied after the loop to avoid updating state while calculating next step
89
+ var newSizes = new Map();
114
90
 
91
+ // Use a loop as we may need to resize multiple items if they drag quickly
115
92
  var resizeIndex = this.resizingItems[this.resizingItems.length - 1];
116
-
117
93
  while (resizeIndex != null) {
118
94
  var itemOffset = getOrThrow(visibleOffsets, resizeIndex);
119
95
  var itemSize = point - margin - itemOffset - this.dragOffset;
120
-
121
96
  var _modelIndex = getOrThrow(modelIndexes, resizeIndex);
122
-
123
97
  var targetSize = this.targetSizes.get(_modelIndex);
124
98
  var isResizingMultiple = this.resizingItems.length > 1;
125
99
  var hiddenIndex = this.hiddenItems.indexOf(resizeIndex);
126
100
  var calculatedSize = getOrThrow(calculatedSizes, _modelIndex);
127
-
128
101
  if (resizeIndex === firstIndex) {
129
102
  calculatedSize += treePadding;
130
103
  }
131
-
132
104
  var newSize = itemSize;
133
-
134
105
  if (Math.abs(itemSize - calculatedSize) <= theme.headerResizeSnapThreshold) {
135
106
  // Snapping behaviour to "natural" width
136
107
  newSize = null;
@@ -140,24 +111,20 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
140
111
  // Snapping to hidden item
141
112
  newSize = 0;
142
113
  }
143
-
144
114
  if (newSize !== calculatedSize) {
145
115
  newSizes.set(_modelIndex, newSize);
146
116
  } else {
147
117
  newSizes.set(_modelIndex, null);
148
118
  }
149
-
150
119
  if (itemSize < -theme.headerResizeSnapThreshold && newSize === 0) {
151
120
  if (hiddenIndex >= 0 && isResizingMultiple) {
152
121
  var _this$targetSizes$get;
153
-
154
122
  this.resizingItems.pop();
155
123
  this.removeTargetSize(metrics, resizeIndex);
156
124
  resizeIndex = this.resizingItems[this.resizingItems.length - 1];
157
125
  this.dragOffset -= (_this$targetSizes$get = this.targetSizes.get(getOrThrow(modelIndexes, resizeIndex))) !== null && _this$targetSizes$get !== void 0 ? _this$targetSizes$get : 0;
158
126
  } else {
159
127
  resizeIndex = this.getNextShownItem(resizeIndex, metrics);
160
-
161
128
  if (resizeIndex !== null) {
162
129
  this.resizingItems.push(resizeIndex);
163
130
  this.addTargetSize(metrics, resizeIndex);
@@ -180,7 +147,6 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
180
147
  resizeIndex = null;
181
148
  }
182
149
  }
183
-
184
150
  newSizes.forEach((newSize, modelIndex) => {
185
151
  if (newSize !== null) {
186
152
  this.setSize(metricCalculator, modelIndex, newSize);
@@ -191,7 +157,6 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
191
157
  this.updateCursor(metrics, this.draggingIndex);
192
158
  return true;
193
159
  }
194
-
195
160
  onUp(gridPoint, grid) {
196
161
  if (this.draggingIndex != null) {
197
162
  this.draggingIndex = undefined;
@@ -200,10 +165,8 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
200
165
  this.targetSizes.clear();
201
166
  this.updateSeparator(grid, null);
202
167
  }
203
-
204
168
  return false;
205
169
  }
206
-
207
170
  onDoubleClick(gridPoint, grid) {
208
171
  var {
209
172
  metrics,
@@ -215,31 +178,24 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
215
178
  var theme = grid.getTheme();
216
179
  if (!metrics) throw new Error('metrics not set');
217
180
  var separator = this.getSeparator(gridPoint, metrics, model, theme);
218
-
219
181
  if (separator != null) {
220
182
  var modelIndexes = metrics[this.modelIndexesProperty];
221
-
222
183
  var _modelIndex2 = getOrThrow(modelIndexes, separator.index);
223
-
224
184
  this.resetSize(metricCalculator, _modelIndex2);
225
185
  grid.forceUpdate();
226
186
  return true;
227
187
  }
228
-
229
188
  return false;
230
189
  }
231
-
232
190
  updateCursor(metrics, itemIndex) {
233
191
  var visibleSizes = metrics[this.visibleSizesProperty];
234
192
  var itemSize = getOrThrow(visibleSizes, itemIndex);
235
-
236
193
  if (itemSize === 0) {
237
194
  this.cursor = this.hiddenCursor;
238
195
  } else {
239
196
  this.cursor = this.defaultCursor;
240
197
  }
241
198
  }
242
-
243
199
  addTargetSize(metrics, itemIndex) {
244
200
  var modelIndexes = metrics[this.modelIndexesProperty];
245
201
  var userSizes = metrics[this.userSizesProperty];
@@ -247,21 +203,16 @@ class GridSeparatorMouseHandler extends GridMouseHandler {
247
203
  var treePadding = itemIndex === 0 ? metrics[this.treePaddingProperty] : 0;
248
204
  var modelIndex = getOrThrow(modelIndexes, itemIndex);
249
205
  var targetSize = userSizes.get(modelIndex);
250
-
251
206
  if (targetSize == null || targetSize === 0) {
252
207
  targetSize = getOrThrow(calculatedSizes, modelIndex) + treePadding;
253
208
  }
254
-
255
209
  this.targetSizes.set(modelIndex, targetSize);
256
210
  }
257
-
258
211
  removeTargetSize(metrics, itemIndex) {
259
212
  var modelIndexes = metrics[this.modelIndexesProperty];
260
213
  var modelIndex = getOrThrow(modelIndexes, itemIndex);
261
214
  this.targetSizes.delete(modelIndex);
262
215
  }
263
-
264
216
  }
265
-
266
217
  export default GridSeparatorMouseHandler;
267
218
  //# sourceMappingURL=GridSeparatorMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridSeparatorMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridSeparatorMouseHandler","Map","onDown","gridPoint","grid","metrics","model","props","theme","getTheme","Error","separator","getSeparator","separatorIndex","index","dragOffset","draggingIndex","resizingItems","hiddenItems","getHiddenItems","reverse","targetSizes","clear","addTargetSize","updateCursor","updateSeparator","onMove","onDrag","point","pointProperty","metricCalculator","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"],"sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.ts"],"sourcesContent":["import type Grid from '../Grid';\nimport type { GridMetricCalculator } from '../GridMetricCalculator';\nimport type GridModel from '../GridModel';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMetrics, { ModelIndex, VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport type { GridTheme } from '../GridTheme';\nimport type { 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';\nexport interface GridSeparator {\n index: VisibleIndex;\n depth: number;\n}\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(grid: Grid, separator: GridSeparator | null): void;\n\n abstract getSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null;\n // End of overrides\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n if (separator != null) {\n const separatorIndex = separator.index;\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, separator);\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n\n if (separator != null) {\n this.updateCursor(metrics, separator.index);\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 { metrics, metricCalculator } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n\n if (separator != null) {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = getOrThrow(modelIndexes, separator.index);\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"],"mappings":";;SAISA,U;OAEFC,gB;;AAqBP;AACA;AACA;AACA;AACA,MAAeC,yBAAf,SAAiDD,gBAAjD,CAAkE;EAAA;IAAA;;IAAA;;IAAA,uCAKtB,EALsB;;IAAA,qCAQxB,EARwB;;IAAA,qCAWf,IAAIE,GAAJ,EAXe;;IAAA,oCAazC,CAbyC;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;;IAAA;EAAA;;EAmEhE;EAEAC,MAAM,CAACC,SAAD,EAAuBC,IAAvB,EAAuD;IAC3D,IAAM;MAAEC;IAAF,IAAcD,IAApB;IACA,IAAM;MAAEE;IAAF,IAAYF,IAAI,CAACG,KAAvB;IACA,IAAMC,KAAK,GAAGJ,IAAI,CAACK,QAAL,EAAd;IACA,IAAI,CAACJ,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAMC,SAAS,GAAG,KAAKC,YAAL,CAAkBT,SAAlB,EAA6BE,OAA7B,EAAsCC,KAAtC,EAA6CE,KAA7C,CAAlB;;IACA,IAAIG,SAAS,IAAI,IAAjB,EAAuB;MACrB,IAAME,cAAc,GAAGF,SAAS,CAACG,KAAjC;MAEA,KAAKC,UAAL,GAAkB,CAAlB;MACA,KAAKC,aAAL,GAAqBH,cAArB;MACA,KAAKI,aAAL,GAAqB,CAACJ,cAAD,CAArB;MACA,KAAKK,WAAL,GAAmB,KAAKC,cAAL,CAAoBN,cAApB,EAAoCR,OAApC,EAA6Ce,OAA7C,EAAnB;MACA,KAAKC,WAAL,CAAiBC,KAAjB;MAEA,KAAKC,aAAL,CAAmBlB,OAAnB,EAA4BQ,cAA5B;MAEA,KAAKW,YAAL,CAAkBnB,OAAlB,EAA2BQ,cAA3B;MAEA,KAAKY,eAAL,CAAqBrB,IAArB,EAA2BO,SAA3B;MAEA,OAAO,IAAP;IACD;;IACD,OAAO,KAAP;EACD;;EAEDe,MAAM,CAACvB,SAAD,EAAuBC,IAAvB,EAAuD;IAC3D,IAAM;MAAEC;IAAF,IAAcD,IAApB;IACA,IAAM;MAAEE;IAAF,IAAYF,IAAI,CAACG,KAAvB;IACA,IAAMC,KAAK,GAAGJ,IAAI,CAACK,QAAL,EAAd;IACA,IAAI,CAACJ,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAMC,SAAS,GAAG,KAAKC,YAAL,CAAkBT,SAAlB,EAA6BE,OAA7B,EAAsCC,KAAtC,EAA6CE,KAA7C,CAAlB;;IAEA,IAAIG,SAAS,IAAI,IAAjB,EAAuB;MACrB,KAAKa,YAAL,CAAkBnB,OAAlB,EAA2BM,SAAS,CAACG,KAArC;MACA,OAAO,IAAP;IACD;;IACD,OAAO,KAAP;EACD;;EAEDa,MAAM,CAACxB,SAAD,EAAuBC,IAAvB,EAAuD;IAC3D,IAAI,KAAKY,aAAL,IAAsB,IAA1B,EAAgC;MAC9B,OAAO,KAAP;IACD;;IAED,IAAMY,KAAK,GAAGzB,SAAS,CAAC,KAAK0B,aAAN,CAAvB;IACA,IAAM;MAAEC,gBAAF;MAAoBzB;IAApB,IAAgCD,IAAtC;IACA,IAAI,CAACC,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAMF,KAAK,GAAGJ,IAAI,CAACK,QAAL,EAAd;IAEA,IAAMsB,cAAc,GAAG1B,OAAO,CAAC,KAAK2B,qBAAN,CAA9B;IACA,IAAMC,MAAM,GAAG5B,OAAO,CAAC,KAAK6B,cAAN,CAAtB;IACA,IAAMC,eAAe,GAAG9B,OAAO,CAAC,KAAK+B,uBAAN,CAA/B;IACA,IAAMC,YAAY,GAAGhC,OAAO,CAAC,KAAKiC,oBAAN,CAA5B;IACA,IAAMC,UAAU,GAAGlC,OAAO,CAAC,KAAKmC,kBAAN,CAA1B;IACA,IAAMC,WAAW,GAAGpC,OAAO,CAAC,KAAKqC,mBAAN,CAA3B,CAhB2D,CAkB3D;;IACA,IAAMC,QAAwC,GAAG,IAAI1C,GAAJ,EAAjD,CAnB2D,CAqB3D;;IACA,IAAI2C,WAA0B,GAAG,KAAK3B,aAAL,CAC/B,KAAKA,aAAL,CAAmB4B,MAAnB,GAA4B,CADG,CAAjC;;IAGA,OAAOD,WAAW,IAAI,IAAtB,EAA4B;MAC1B,IAAME,UAAU,GAAGhD,UAAU,CAACiC,cAAD,EAAiBa,WAAjB,CAA7B;MACA,IAAMG,QAAQ,GAAGnB,KAAK,GAAGK,MAAR,GAAiBa,UAAjB,GAA8B,KAAK/B,UAApD;;MACA,IAAMiC,WAAU,GAAGlD,UAAU,CAACuC,YAAD,EAAeO,WAAf,CAA7B;;MACA,IAAMK,UAAU,GAAG,KAAK5B,WAAL,CAAiB6B,GAAjB,CAAqBF,WAArB,CAAnB;MACA,IAAMG,kBAAkB,GAAG,KAAKlC,aAAL,CAAmB4B,MAAnB,GAA4B,CAAvD;MACA,IAAMO,WAAW,GAAG,KAAKlC,WAAL,CAAiBmC,OAAjB,CAAyBT,WAAzB,CAApB;MACA,IAAIU,cAAc,GAAGxD,UAAU,CAACqC,eAAD,EAAkBa,WAAlB,CAA/B;;MACA,IAAIJ,WAAW,KAAKL,UAApB,EAAgC;QAC9Be,cAAc,IAAIb,WAAlB;MACD;;MACD,IAAIc,OAAsB,GAAGR,QAA7B;;MACA,IACES,IAAI,CAACC,GAAL,CAASV,QAAQ,GAAGO,cAApB,KAAuC9C,KAAK,CAACkD,yBAD/C,EAEE;QACA;QACAH,OAAO,GAAG,IAAV;MACD,CALD,MAKO,IACLN,UAAU,KAAKU,SAAf,IACAZ,QAAQ,GAAGE,UADX,KAEEE,kBAAkB,IAAIC,WAAW,KAAK,CAAvC,IAA6CA,WAAW,GAAG,CAF5D,CADK,EAIL;QACAG,OAAO,GAAGN,UAAV;MACD,CANM,MAMA,IAAIF,QAAQ,IAAIvC,KAAK,CAACoD,+BAAtB,EAAuD;QAC5D;QACAL,OAAO,GAAG,CAAV;MACD;;MAED,IAAIA,OAAO,KAAKD,cAAhB,EAAgC;QAC9BX,QAAQ,CAACkB,GAAT,CAAab,WAAb,EAAyBO,OAAzB;MACD,CAFD,MAEO;QACLZ,QAAQ,CAACkB,GAAT,CAAab,WAAb,EAAyB,IAAzB;MACD;;MAED,IAAID,QAAQ,GAAG,CAACvC,KAAK,CAACkD,yBAAlB,IAA+CH,OAAO,KAAK,CAA/D,EAAkE;QAChE,IAAIH,WAAW,IAAI,CAAf,IAAoBD,kBAAxB,EAA4C;UAAA;;UAC1C,KAAKlC,aAAL,CAAmB6C,GAAnB;UACA,KAAKC,gBAAL,CAAsB1D,OAAtB,EAA+BuC,WAA/B;UACAA,WAAW,GAAG,KAAK3B,aAAL,CAAmB,KAAKA,aAAL,CAAmB4B,MAAnB,GAA4B,CAA/C,CAAd;UACA,KAAK9B,UAAL,6BACE,KAAKM,WAAL,CAAiB6B,GAAjB,CAAqBpD,UAAU,CAACuC,YAAD,EAAeO,WAAf,CAA/B,CADF,yEACiE,CADjE;QAED,CAND,MAMO;UACLA,WAAW,GAAG,KAAKoB,gBAAL,CAAsBpB,WAAtB,EAAmCvC,OAAnC,CAAd;;UACA,IAAIuC,WAAW,KAAK,IAApB,EAA0B;YACxB,KAAK3B,aAAL,CAAmBgD,IAAnB,CAAwBrB,WAAxB;YACA,KAAKrB,aAAL,CAAmBlB,OAAnB,EAA4BuC,WAA5B;UACD;QACF;MACF,CAdD,MAcO,IACLK,UAAU,KAAKU,SAAf,IACAZ,QAAQ,GAAGE,UAAU,GAAGzC,KAAK,CAACkD,yBAD9B,IAEAH,OAAO,KAAKN,UAHP,EAIL;QACA,IAAIG,WAAW,GAAG,CAAlB,EAAqB;UACnB,KAAKrC,UAAL,IAAmBwC,OAAnB;UACAX,WAAW,GAAG,KAAK1B,WAAL,CAAiBkC,WAAW,GAAG,CAA/B,CAAd;UACA,KAAKnC,aAAL,CAAmBgD,IAAnB,CAAwBrB,WAAxB;UACA,KAAKrB,aAAL,CAAmBlB,OAAnB,EAA4BuC,WAA5B;QACD,CALD,MAKO,IAAIO,kBAAJ,EAAwB;UAC7B,KAAKlC,aAAL,CAAmB6C,GAAnB;UACA,KAAKC,gBAAL,CAAsB1D,OAAtB,EAA+BuC,WAA/B;UACAA,WAAW,GAAG,KAAK3B,aAAL,CAAmB,KAAKA,aAAL,CAAmB4B,MAAnB,GAA4B,CAA/C,CAAd;QACD,CAJM,MAIA;UACLD,WAAW,GAAG,IAAd;QACD;MACF,CAjBM,MAiBA;QACLA,WAAW,GAAG,IAAd;MACD;IACF;;IAEDD,QAAQ,CAACuB,OAAT,CAAiB,CAACX,OAAD,EAAUP,UAAV,KAAyB;MACxC,IAAIO,OAAO,KAAK,IAAhB,EAAsB;QACpB,KAAKY,OAAL,CAAarC,gBAAb,EAA+BkB,UAA/B,EAA2CO,OAA3C;MACD,CAFD,MAEO;QACL,KAAKa,SAAL,CAAetC,gBAAf,EAAiCkB,UAAjC;MACD;IACF,CAND;IAQA,KAAKxB,YAAL,CAAkBnB,OAAlB,EAA2B,KAAKW,aAAhC;IAEA,OAAO,IAAP;EACD;;EAEDqD,IAAI,CAAClE,SAAD,EAAuBC,IAAvB,EAAuD;IACzD,IAAI,KAAKY,aAAL,IAAsB,IAA1B,EAAgC;MAC9B,KAAKA,aAAL,GAAqB2C,SAArB;MACA,KAAK1C,aAAL,GAAqB,EAArB;MACA,KAAKC,WAAL,GAAmB,EAAnB;MACA,KAAKG,WAAL,CAAiBC,KAAjB;MAEA,KAAKG,eAAL,CAAqBrB,IAArB,EAA2B,IAA3B;IACD;;IAED,OAAO,KAAP;EACD;;EAEDkE,aAAa,CAACnE,SAAD,EAAuBC,IAAvB,EAAuD;IAClE,IAAM;MAAEC,OAAF;MAAWyB;IAAX,IAAgC1B,IAAtC;IACA,IAAM;MAAEE;IAAF,IAAYF,IAAI,CAACG,KAAvB;IACA,IAAMC,KAAK,GAAGJ,IAAI,CAACK,QAAL,EAAd;IACA,IAAI,CAACJ,OAAL,EAAc,MAAM,IAAIK,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAMC,SAAS,GAAG,KAAKC,YAAL,CAAkBT,SAAlB,EAA6BE,OAA7B,EAAsCC,KAAtC,EAA6CE,KAA7C,CAAlB;;IAEA,IAAIG,SAAS,IAAI,IAAjB,EAAuB;MACrB,IAAM0B,YAAY,GAAGhC,OAAO,CAAC,KAAKiC,oBAAN,CAA5B;;MACA,IAAMU,YAAU,GAAGlD,UAAU,CAACuC,YAAD,EAAe1B,SAAS,CAACG,KAAzB,CAA7B;;MAEA,KAAKsD,SAAL,CAAetC,gBAAf,EAAiCkB,YAAjC;MAEA5C,IAAI,CAACmE,WAAL;MAEA,OAAO,IAAP;IACD;;IACD,OAAO,KAAP;EACD;;EAED/C,YAAY,CAACnB,OAAD,EAAuBmE,SAAvB,EAAsD;IAChE,IAAMC,YAAY,GAAGpE,OAAO,CAAC,KAAKqE,oBAAN,CAA5B;IACA,IAAM3B,QAAQ,GAAGjD,UAAU,CAAC2E,YAAD,EAAeD,SAAf,CAA3B;;IACA,IAAIzB,QAAQ,KAAK,CAAjB,EAAoB;MAClB,KAAK4B,MAAL,GAAc,KAAKC,YAAnB;IACD,CAFD,MAEO;MACL,KAAKD,MAAL,GAAc,KAAKE,aAAnB;IACD;EACF;;EAEDtD,aAAa,CAAClB,OAAD,EAAuBmE,SAAvB,EAAsD;IACjE,IAAMnC,YAAY,GAAGhC,OAAO,CAAC,KAAKiC,oBAAN,CAA5B;IACA,IAAMwC,SAAS,GAAGzE,OAAO,CAAC,KAAK0E,iBAAN,CAAzB;IACA,IAAM5C,eAAe,GAAG9B,OAAO,CAAC,KAAK+B,uBAAN,CAA/B;IACA,IAAMK,WAAW,GAAG+B,SAAS,KAAK,CAAd,GAAkBnE,OAAO,CAAC,KAAKqC,mBAAN,CAAzB,GAAsD,CAA1E;IAEA,IAAMM,UAAU,GAAGlD,UAAU,CAACuC,YAAD,EAAemC,SAAf,CAA7B;IACA,IAAIvB,UAAU,GAAG6B,SAAS,CAAC5B,GAAV,CAAcF,UAAd,CAAjB;;IACA,IAAIC,UAAU,IAAI,IAAd,IAAsBA,UAAU,KAAK,CAAzC,EAA4C;MAC1CA,UAAU,GAAGnD,UAAU,CAACqC,eAAD,EAAkBa,UAAlB,CAAV,GAA0CP,WAAvD;IACD;;IACD,KAAKpB,WAAL,CAAiBwC,GAAjB,CAAqBb,UAArB,EAAiCC,UAAjC;EACD;;EAEDc,gBAAgB,CAAC1D,OAAD,EAAuBmE,SAAvB,EAAsD;IACpE,IAAMnC,YAAY,GAAGhC,OAAO,CAAC,KAAKiC,oBAAN,CAA5B;IACA,IAAMU,UAAU,GAAGlD,UAAU,CAACuC,YAAD,EAAemC,SAAf,CAA7B;IACA,KAAKnD,WAAL,CAAiB2D,MAAjB,CAAwBhC,UAAxB;EACD;;AAzR+D;;AA4RlE,eAAehD,yBAAf"}
1
+ {"version":3,"file":"GridSeparatorMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridSeparatorMouseHandler","Map","onDown","gridPoint","grid","metrics","model","props","theme","getTheme","Error","separator","getSeparator","separatorIndex","index","dragOffset","draggingIndex","resizingItems","hiddenItems","getHiddenItems","reverse","targetSizes","clear","addTargetSize","updateCursor","updateSeparator","onMove","onDrag","point","pointProperty","metricCalculator","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"],"sources":["../../src/mouse-handlers/GridSeparatorMouseHandler.ts"],"sourcesContent":["import type Grid from '../Grid';\nimport type { GridMetricCalculator } from '../GridMetricCalculator';\nimport type GridModel from '../GridModel';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMetrics, { ModelIndex, VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport type { GridTheme } from '../GridTheme';\nimport type { 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';\nexport interface GridSeparator {\n index: VisibleIndex;\n depth: number;\n}\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(grid: Grid, separator: GridSeparator | null): void;\n\n abstract getSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null;\n // End of overrides\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n if (separator != null) {\n const separatorIndex = separator.index;\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, separator);\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n\n if (separator != null) {\n this.updateCursor(metrics, separator.index);\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 { metrics, metricCalculator } = grid;\n const { model } = grid.props;\n const theme = grid.getTheme();\n if (!metrics) throw new Error('metrics not set');\n\n const separator = this.getSeparator(gridPoint, metrics, model, theme);\n\n if (separator != null) {\n const modelIndexes = metrics[this.modelIndexesProperty];\n const modelIndex = getOrThrow(modelIndexes, separator.index);\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"],"mappings":"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"}
@@ -1,18 +1,13 @@
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
-
3
2
  import clamp from 'lodash.clamp';
4
3
  import GridMouseHandler from "../GridMouseHandler.js";
5
-
6
4
  /* eslint class-methods-use-this: "off" */
7
5
  class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
8
6
  constructor() {
9
7
  super(...arguments);
10
-
11
8
  _defineProperty(this, "dragOffset", void 0);
12
-
13
9
  _defineProperty(this, "cursor", 'default');
14
10
  }
15
-
16
11
  static getTopWithOffsetFromRawTop(grid, rawTop) {
17
12
  var theme = grid.getTheme();
18
13
  var {
@@ -20,33 +15,27 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
20
15
  metricCalculator
21
16
  } = grid;
22
17
  if (!metrics) throw new Error('metrics not set');
23
-
24
18
  if (theme.scrollSnapToRow) {
25
19
  var _top = Math.round(rawTop);
26
-
27
20
  var _topOffset = 0;
28
21
  return {
29
22
  top: _top,
30
23
  topOffset: _topOffset
31
24
  };
32
25
  }
33
-
34
26
  var top = Math.floor(rawTop);
35
27
  var topOffsetPercent = rawTop - top;
36
28
  var rowHeight = metrics.visibleRowHeights.get(top);
37
-
38
29
  if (rowHeight == null) {
39
30
  var metricState = grid.getMetricState();
40
31
  rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);
41
32
  }
42
-
43
33
  var topOffset = rowHeight * topOffsetPercent;
44
34
  return {
45
35
  top,
46
36
  topOffset
47
37
  };
48
38
  }
49
-
50
39
  isInScrollBar(gridPoint, grid) {
51
40
  var theme = grid.getTheme();
52
41
  var {
@@ -69,10 +58,8 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
69
58
  } = metrics;
70
59
  return hasVerticalBar && scrollBarSize > 0 && x >= width - scrollBarHoverSize && x < width && y > barTop && y < barTop + barHeight;
71
60
  }
72
-
73
61
  getTopWithOffset(gridPoint, grid) {
74
62
  var _this$dragOffset;
75
-
76
63
  var {
77
64
  metrics
78
65
  } = grid;
@@ -91,18 +78,15 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
91
78
  } = metrics;
92
79
  var mouseBarY = y - barTop;
93
80
  var scrollPercent = clamp((mouseBarY - ((_this$dragOffset = this.dragOffset) !== null && _this$dragOffset !== void 0 ? _this$dragOffset : 0)) / (barHeight - handleHeight), 0, 1);
94
-
95
81
  if (rowCount === 1) {
96
82
  return {
97
83
  top: 0,
98
84
  topOffset: scrollPercent * (scrollableContentHeight - scrollableViewportHeight)
99
85
  };
100
86
  }
101
-
102
87
  var rawTop = scrollPercent * lastTop;
103
88
  return GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(grid, rawTop);
104
89
  }
105
-
106
90
  onDown(gridPoint, grid) {
107
91
  var {
108
92
  metrics
@@ -116,13 +100,10 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
116
100
  barTop,
117
101
  scrollY
118
102
  } = metrics;
119
-
120
103
  if (!this.isInScrollBar(gridPoint, grid)) {
121
104
  return false;
122
105
  }
123
-
124
106
  var mouseBarY = y - barTop;
125
-
126
107
  if (mouseBarY >= scrollY && mouseBarY <= scrollY + handleHeight) {
127
108
  // Grabbed the vertical handle
128
109
  this.dragOffset = mouseBarY - scrollY;
@@ -143,14 +124,11 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
143
124
  isDragging: true
144
125
  });
145
126
  }
146
-
147
127
  return true;
148
128
  }
149
-
150
129
  onMove(gridPoint, grid) {
151
130
  return this.isInScrollBar(gridPoint, grid);
152
131
  }
153
-
154
132
  onDrag(gridPoint, grid) {
155
133
  if (this.dragOffset != null) {
156
134
  var {
@@ -165,10 +143,8 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
165
143
  });
166
144
  return true;
167
145
  }
168
-
169
146
  return false;
170
147
  }
171
-
172
148
  onUp(gridPoint, grid) {
173
149
  if (this.dragOffset !== undefined) {
174
150
  this.dragOffset = undefined;
@@ -177,15 +153,11 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
177
153
  isDragging: false
178
154
  });
179
155
  }
180
-
181
156
  return this.isInScrollBar(gridPoint, grid);
182
157
  }
183
-
184
158
  onClick(gridPoint, grid) {
185
159
  return this.isInScrollBar(gridPoint, grid);
186
160
  }
187
-
188
161
  }
189
-
190
162
  export default GridVerticalScrollBarMouseHandler;
191
163
  //# sourceMappingURL=GridVerticalScrollBarMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridVerticalScrollBarMouseHandler.js","names":["clamp","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","barTop","barHeight","width","hasVerticalBar","getTopWithOffset","handleHeight","lastTop","rowCount","scrollableContentHeight","scrollableViewportHeight","mouseBarY","scrollPercent","dragOffset","onDown","scrollY","setState","isDraggingVerticalScrollBar","newTop","newTopOffset","setViewState","isDragging","onMove","onDrag","onUp","undefined","onClick"],"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { 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 { barTop, barHeight, width, hasVerticalBar } = metrics;\n\n return (\n hasVerticalBar &&\n scrollBarSize > 0 &&\n x >= width - scrollBarHoverSize &&\n x < width &&\n y > barTop &&\n y < barTop + barHeight\n );\n }\n\n getTopWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { top: number; topOffset: number } {\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 barTop,\n rowCount,\n scrollableContentHeight,\n scrollableViewportHeight,\n } = metrics;\n\n const mouseBarY = y - barTop;\n const scrollPercent = clamp(\n (mouseBarY - (this.dragOffset ?? 0)) / (barHeight - handleHeight),\n 0,\n 1\n );\n\n if (rowCount === 1) {\n return {\n top: 0,\n topOffset:\n scrollPercent * (scrollableContentHeight - scrollableViewportHeight),\n };\n }\n\n const rawTop = scrollPercent * lastTop;\n return GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\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 { handleHeight, barTop, scrollY } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarY = y - barTop;\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\n const { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\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 { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\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"],"mappings":"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"}
1
+ {"version":3,"file":"GridVerticalScrollBarMouseHandler.js","names":["clamp","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","barTop","barHeight","width","hasVerticalBar","getTopWithOffset","handleHeight","lastTop","rowCount","scrollableContentHeight","scrollableViewportHeight","mouseBarY","scrollPercent","dragOffset","onDown","scrollY","setState","isDraggingVerticalScrollBar","newTop","newTopOffset","setViewState","isDragging","onMove","onDrag","onUp","undefined","onClick"],"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { 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 { barTop, barHeight, width, hasVerticalBar } = metrics;\n\n return (\n hasVerticalBar &&\n scrollBarSize > 0 &&\n x >= width - scrollBarHoverSize &&\n x < width &&\n y > barTop &&\n y < barTop + barHeight\n );\n }\n\n getTopWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { top: number; topOffset: number } {\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 barTop,\n rowCount,\n scrollableContentHeight,\n scrollableViewportHeight,\n } = metrics;\n\n const mouseBarY = y - barTop;\n const scrollPercent = clamp(\n (mouseBarY - (this.dragOffset ?? 0)) / (barHeight - handleHeight),\n 0,\n 1\n );\n\n if (rowCount === 1) {\n return {\n top: 0,\n topOffset:\n scrollPercent * (scrollableContentHeight - scrollableViewportHeight),\n };\n }\n\n const rawTop = scrollPercent * lastTop;\n return GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\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 { handleHeight, barTop, scrollY } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarY = y - barTop;\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\n const { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\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 { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\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"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["default","GridSelectionMouseHandler","GridColumnMoveMouseHandler","GridColumnSeparatorMouseHandler","GridHorizontalScrollBarMouseHandler","GridRowMoveMouseHandler","GridRowSeparatorMouseHandler","GridRowTreeMouseHandler","GridScrollBarCornerMouseHandler","GridVerticalScrollBarMouseHandler","EditMouseHandler"],"sources":["../../src/mouse-handlers/index.ts"],"sourcesContent":["export { default as GridSelectionMouseHandler } from './GridSelectionMouseHandler';\nexport { default as GridColumnMoveMouseHandler } from './GridColumnMoveMouseHandler';\nexport { default as GridColumnSeparatorMouseHandler } from './GridColumnSeparatorMouseHandler';\nexport { default as GridHorizontalScrollBarMouseHandler } from './GridHorizontalScrollBarMouseHandler';\nexport { default as GridRowMoveMouseHandler } from './GridRowMoveMouseHandler';\nexport { default as GridRowSeparatorMouseHandler } from './GridRowSeparatorMouseHandler';\nexport { default as GridRowTreeMouseHandler } from './GridRowTreeMouseHandler';\nexport { default as GridScrollBarCornerMouseHandler } from './GridScrollBarCornerMouseHandler';\nexport { default as GridVerticalScrollBarMouseHandler } from './GridVerticalScrollBarMouseHandler';\nexport { default as EditMouseHandler } from './EditMouseHandler';\nexport * from './GridSeparatorMouseHandler';\n"],"mappings":"SAASA,OAAO,IAAIC,yB;SACXD,OAAO,IAAIE,0B;SACXF,OAAO,IAAIG,+B;SACXH,OAAO,IAAII,mC;SACXJ,OAAO,IAAIK,uB;SACXL,OAAO,IAAIM,4B;SACXN,OAAO,IAAIO,uB;SACXP,OAAO,IAAIQ,+B;SACXR,OAAO,IAAIS,iC;SACXT,OAAO,IAAIU,gB"}
1
+ {"version":3,"file":"index.js","names":["default","GridSelectionMouseHandler","GridColumnMoveMouseHandler","GridColumnSeparatorMouseHandler","GridHorizontalScrollBarMouseHandler","GridRowMoveMouseHandler","GridRowSeparatorMouseHandler","GridRowTreeMouseHandler","GridScrollBarCornerMouseHandler","GridVerticalScrollBarMouseHandler","EditMouseHandler"],"sources":["../../src/mouse-handlers/index.ts"],"sourcesContent":["export { default as GridSelectionMouseHandler } from './GridSelectionMouseHandler';\nexport { default as GridColumnMoveMouseHandler } from './GridColumnMoveMouseHandler';\nexport { default as GridColumnSeparatorMouseHandler } from './GridColumnSeparatorMouseHandler';\nexport { default as GridHorizontalScrollBarMouseHandler } from './GridHorizontalScrollBarMouseHandler';\nexport { default as GridRowMoveMouseHandler } from './GridRowMoveMouseHandler';\nexport { default as GridRowSeparatorMouseHandler } from './GridRowSeparatorMouseHandler';\nexport { default as GridRowTreeMouseHandler } from './GridRowTreeMouseHandler';\nexport { default as GridScrollBarCornerMouseHandler } from './GridScrollBarCornerMouseHandler';\nexport { default as GridVerticalScrollBarMouseHandler } from './GridVerticalScrollBarMouseHandler';\nexport { default as EditMouseHandler } from './EditMouseHandler';\nexport * from './GridSeparatorMouseHandler';\n"],"mappings":"SAASA,OAAO,IAAIC,yBAAyB;AAAA,SACpCD,OAAO,IAAIE,0BAA0B;AAAA,SACrCF,OAAO,IAAIG,+BAA+B;AAAA,SAC1CH,OAAO,IAAII,mCAAmC;AAAA,SAC9CJ,OAAO,IAAIK,uBAAuB;AAAA,SAClCL,OAAO,IAAIM,4BAA4B;AAAA,SACvCN,OAAO,IAAIO,uBAAuB;AAAA,SAClCP,OAAO,IAAIQ,+BAA+B;AAAA,SAC1CR,OAAO,IAAIS,iCAAiC;AAAA,SAC5CT,OAAO,IAAIU,gBAAgB;AAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deephaven/grid",
3
- "version": "0.22.3-beta.18+8d1ab1f",
3
+ "version": "0.22.3-beta.21+6d63afd",
4
4
  "description": "Deephaven React grid component",
5
5
  "author": "Deephaven Data Labs LLC",
6
6
  "license": "Apache-2.0",
@@ -25,13 +25,13 @@
25
25
  "react": "^17.0.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@deephaven/tsconfig": "^0.22.3-beta.18+8d1ab1f"
28
+ "@deephaven/tsconfig": "^0.22.3-beta.21+6d63afd"
29
29
  },
30
30
  "files": [
31
31
  "dist"
32
32
  ],
33
33
  "dependencies": {
34
- "@deephaven/utils": "^0.22.3-beta.18+8d1ab1f",
34
+ "@deephaven/utils": "^0.22.3-beta.21+6d63afd",
35
35
  "classnames": "^2.3.1",
36
36
  "color-convert": "^2.0.1",
37
37
  "event-target-shim": "^6.0.2",
@@ -43,5 +43,5 @@
43
43
  "publishConfig": {
44
44
  "access": "public"
45
45
  },
46
- "gitHead": "8d1ab1fa6e893a438891194f922e069417b7f2d0"
46
+ "gitHead": "6d63afd124485605d545e0104d0cb437eb8993ab"
47
47
  }