@deephaven/grid 1.22.1-alpha-pivot-builder.0 → 1.22.2-alpha-pivot-builder.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 (60) hide show
  1. package/dist/CellInputField.js +41 -22
  2. package/dist/CellInputField.js.map +1 -1
  3. package/dist/CellRenderer.js +19 -27
  4. package/dist/CellRenderer.js.map +1 -1
  5. package/dist/DataBarCellRenderer.js +61 -87
  6. package/dist/DataBarCellRenderer.js.map +1 -1
  7. package/dist/Grid.js +281 -455
  8. package/dist/Grid.js.map +1 -1
  9. package/dist/GridColorUtils.js +23 -21
  10. package/dist/GridColorUtils.js.map +1 -1
  11. package/dist/GridMetricCalculator.js +192 -303
  12. package/dist/GridMetricCalculator.js.map +1 -1
  13. package/dist/GridRange.js +18 -28
  14. package/dist/GridRange.js.map +1 -1
  15. package/dist/GridRenderer.d.ts.map +1 -1
  16. package/dist/GridRenderer.js +432 -604
  17. package/dist/GridRenderer.js.map +1 -1
  18. package/dist/GridUtils.d.ts +33 -16
  19. package/dist/GridUtils.d.ts.map +1 -1
  20. package/dist/GridUtils.js +183 -213
  21. package/dist/GridUtils.js.map +1 -1
  22. package/dist/MockGridModel.js +17 -10
  23. package/dist/MockGridModel.js.map +1 -1
  24. package/dist/MockTreeGridModel.js +36 -31
  25. package/dist/MockTreeGridModel.js.map +1 -1
  26. package/dist/TextCellRenderer.js +36 -57
  27. package/dist/TextCellRenderer.js.map +1 -1
  28. package/dist/key-handlers/EditKeyHandler.js +4 -7
  29. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  30. package/dist/key-handlers/PasteKeyHandler.js +1 -3
  31. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  32. package/dist/key-handlers/SelectionKeyHandler.js +40 -71
  33. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  34. package/dist/key-handlers/TreeKeyHandler.js +4 -10
  35. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  36. package/dist/mouse-handlers/EditMouseHandler.js +3 -7
  37. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  38. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +54 -82
  39. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  40. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +4 -8
  41. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  42. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +31 -55
  43. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  44. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +26 -46
  45. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  46. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +2 -4
  47. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  48. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +14 -22
  49. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  50. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +8 -16
  51. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  52. package/dist/mouse-handlers/GridSelectionMouseHandler.js +47 -75
  53. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  54. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +9 -23
  55. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  56. package/dist/mouse-handlers/GridTokenMouseHandler.js +24 -39
  57. package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
  58. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +31 -55
  59. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  60. package/package.json +3 -3
@@ -1,3 +1,9 @@
1
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
2
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
5
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
6
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
1
7
  function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2
8
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3
9
  function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
@@ -127,9 +133,7 @@ export class GridRenderer {
127
133
  * @param state The state of the grid
128
134
  */
129
135
  drawCanvas(state) {
130
- var {
131
- context
132
- } = state;
136
+ var context = state.context;
133
137
  context.save();
134
138
  this.configureContext(context, state);
135
139
  this.drawBackground(context, state);
@@ -142,35 +146,25 @@ export class GridRenderer {
142
146
  context.restore();
143
147
  }
144
148
  configureContext(context, state) {
145
- var {
146
- theme
147
- } = state;
149
+ var theme = state.theme;
148
150
  context.font = theme.font;
149
151
  context.textBaseline = 'middle';
150
152
  context.lineCap = 'butt';
151
153
  }
152
154
  drawBackground(context, state) {
153
- var {
154
- theme,
155
- metrics
156
- } = state;
157
- var {
158
- width,
159
- height
160
- } = metrics;
155
+ var theme = state.theme,
156
+ metrics = state.metrics;
157
+ var width = metrics.width,
158
+ height = metrics.height;
161
159
  context.fillStyle = theme.backgroundColor;
162
160
  context.fillRect(0, 0, width, height);
163
161
  }
164
162
  drawGrid(context, state) {
165
- var {
166
- metrics,
167
- draggingRow,
168
- draggingColumn
169
- } = state;
170
- var {
171
- gridX,
172
- gridY
173
- } = metrics;
163
+ var metrics = state.metrics,
164
+ draggingRow = state.draggingRow,
165
+ draggingColumn = state.draggingColumn;
166
+ var gridX = metrics.gridX,
167
+ gridY = metrics.gridY;
174
168
  context.translate(gridX, gridY);
175
169
  this.drawGridBackground(context, state, draggingRow == null && draggingColumn == null);
176
170
  this.drawCellContents(context, state);
@@ -179,21 +173,17 @@ export class GridRenderer {
179
173
  context.translate(-gridX, -gridY);
180
174
  }
181
175
  drawFloatingRows(context, state) {
182
- var {
183
- draggingRow,
184
- draggingColumn,
185
- metrics,
186
- theme
187
- } = state;
188
- var {
189
- floatingTopRowCount,
190
- floatingBottomRowCount,
191
- floatingRows,
192
- rowCount,
193
- columnsForRender,
194
- allRowYs,
195
- allRowHeights
196
- } = metrics;
176
+ var draggingRow = state.draggingRow,
177
+ draggingColumn = state.draggingColumn,
178
+ metrics = state.metrics,
179
+ theme = state.theme;
180
+ var floatingTopRowCount = metrics.floatingTopRowCount,
181
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
182
+ floatingRows = metrics.floatingRows,
183
+ rowCount = metrics.rowCount,
184
+ columnsForRender = metrics.columnsForRender,
185
+ allRowYs = metrics.allRowYs,
186
+ allRowHeights = metrics.allRowHeights;
197
187
  if (floatingRows.length === 0) {
198
188
  return;
199
189
  }
@@ -234,27 +224,23 @@ export class GridRenderer {
234
224
  }
235
225
  }
236
226
  drawFloatingColumns(context, state) {
237
- var {
238
- draggingRow,
239
- draggingColumn,
240
- metrics,
241
- theme
242
- } = state;
243
- var {
244
- floatingLeftColumnCount,
245
- floatingRightColumnCount,
246
- floatingLeftWidth,
247
- floatingRightWidth,
248
- floatingColumns,
249
- gridX,
250
- maxX,
251
- columnCount,
252
- visibleRows,
253
- allColumnXs,
254
- allColumnWidths,
255
- width,
256
- height
257
- } = metrics;
227
+ var draggingRow = state.draggingRow,
228
+ draggingColumn = state.draggingColumn,
229
+ metrics = state.metrics,
230
+ theme = state.theme;
231
+ var floatingLeftColumnCount = metrics.floatingLeftColumnCount,
232
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
233
+ floatingLeftWidth = metrics.floatingLeftWidth,
234
+ floatingRightWidth = metrics.floatingRightWidth,
235
+ floatingColumns = metrics.floatingColumns,
236
+ gridX = metrics.gridX,
237
+ maxX = metrics.maxX,
238
+ columnCount = metrics.columnCount,
239
+ visibleRows = metrics.visibleRows,
240
+ allColumnXs = metrics.allColumnXs,
241
+ allColumnWidths = metrics.allColumnWidths,
242
+ width = metrics.width,
243
+ height = metrics.height;
258
244
  if (floatingColumns.length === 0) {
259
245
  return;
260
246
  }
@@ -302,28 +288,22 @@ export class GridRenderer {
302
288
  }
303
289
  }
304
290
  drawFloatingBorders(context, state) {
305
- var {
306
- metrics,
307
- theme
308
- } = state;
309
- var {
310
- floatingTopRowCount,
311
- floatingBottomRowCount,
312
- floatingLeftColumnCount,
313
- floatingRightColumnCount,
314
- rowCount,
315
- columnCount,
316
- allRowYs,
317
- allColumnXs,
318
- allRowHeights,
319
- allColumnWidths,
320
- maxX,
321
- maxY
322
- } = metrics;
323
- var {
324
- floatingDividerOuterColor,
325
- floatingDividerInnerColor
326
- } = theme;
291
+ var metrics = state.metrics,
292
+ theme = state.theme;
293
+ var floatingTopRowCount = metrics.floatingTopRowCount,
294
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
295
+ floatingLeftColumnCount = metrics.floatingLeftColumnCount,
296
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
297
+ rowCount = metrics.rowCount,
298
+ columnCount = metrics.columnCount,
299
+ allRowYs = metrics.allRowYs,
300
+ allColumnXs = metrics.allColumnXs,
301
+ allRowHeights = metrics.allRowHeights,
302
+ allColumnWidths = metrics.allColumnWidths,
303
+ maxX = metrics.maxX,
304
+ maxY = metrics.maxY;
305
+ var floatingDividerOuterColor = theme.floatingDividerOuterColor,
306
+ floatingDividerInnerColor = theme.floatingDividerInnerColor;
327
307
  context.lineWidth = 3;
328
308
  context.beginPath();
329
309
  context.strokeStyle = floatingDividerOuterColor;
@@ -382,25 +362,21 @@ export class GridRenderer {
382
362
  }
383
363
  this.drawGridLines(context, state);
384
364
  this.drawCellBackgrounds(context, state);
385
- var {
386
- metrics
387
- } = state;
388
- var {
389
- bottom,
390
- right,
391
- floatingBottomRowCount,
392
- floatingLeftColumnCount,
393
- floatingRightColumnCount,
394
- floatingTopRowCount,
395
- columnCount,
396
- rowCount,
397
- allRowHeights,
398
- allRowYs,
399
- allColumnXs,
400
- allColumnWidths,
401
- width,
402
- height
403
- } = metrics;
365
+ var metrics = state.metrics;
366
+ var bottom = metrics.bottom,
367
+ right = metrics.right,
368
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
369
+ floatingLeftColumnCount = metrics.floatingLeftColumnCount,
370
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
371
+ floatingTopRowCount = metrics.floatingTopRowCount,
372
+ columnCount = metrics.columnCount,
373
+ rowCount = metrics.rowCount,
374
+ allRowHeights = metrics.allRowHeights,
375
+ allRowYs = metrics.allRowYs,
376
+ allColumnXs = metrics.allColumnXs,
377
+ allColumnWidths = metrics.allColumnWidths,
378
+ width = metrics.width,
379
+ height = metrics.height;
404
380
  this.drawSelectedRanges(context, state, {
405
381
  bottom: Math.min(bottom, rowCount - floatingBottomRowCount - 1),
406
382
  right: Math.min(right, columnCount - floatingRightColumnCount - 1),
@@ -411,16 +387,10 @@ export class GridRenderer {
411
387
  });
412
388
  }
413
389
  drawRowStripes(context, state) {
414
- var {
415
- metrics,
416
- theme
417
- } = state;
418
- var {
419
- visibleRows
420
- } = metrics;
421
- var {
422
- rowBackgroundColors
423
- } = theme;
390
+ var metrics = state.metrics,
391
+ theme = state.theme;
392
+ var visibleRows = metrics.visibleRows;
393
+ var rowBackgroundColors = theme.rowBackgroundColors;
424
394
  if (!rowBackgroundColors) {
425
395
  return;
426
396
  }
@@ -429,22 +399,16 @@ export class GridRenderer {
429
399
  drawRowStripesForRows(context, state, rows, rowBackgroundColors) {
430
400
  var minX = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
431
401
  var maxX = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : state.metrics.maxX;
432
- var {
433
- theme,
434
- metrics,
435
- model
436
- } = state;
437
- var {
438
- maxDepth,
439
- shadowBlur,
440
- shadowColor,
441
- shadowAlpha
442
- } = theme;
402
+ var theme = state.theme,
403
+ metrics = state.metrics,
404
+ model = state.model;
405
+ var maxDepth = theme.maxDepth,
406
+ shadowBlur = theme.shadowBlur,
407
+ shadowColor = theme.shadowColor,
408
+ shadowAlpha = theme.shadowAlpha;
443
409
  var colorSets = GridRenderer.getCachedBackgroundColors(rowBackgroundColors, maxDepth);
444
- var {
445
- allRowYs,
446
- allRowHeights
447
- } = metrics;
410
+ var allRowYs = metrics.allRowYs,
411
+ allRowHeights = metrics.allRowHeights;
448
412
 
449
413
  // Optimize by grouping together all rows that end up with the same color
450
414
  var colorRowMap = new Map();
@@ -525,22 +489,18 @@ export class GridRenderer {
525
489
  }
526
490
  }
527
491
  drawMouseColumnHover(context, state) {
528
- var {
529
- mouseX,
530
- mouseY,
531
- theme,
532
- metrics
533
- } = state;
492
+ var mouseX = state.mouseX,
493
+ mouseY = state.mouseY,
494
+ theme = state.theme,
495
+ metrics = state.metrics;
534
496
  if (mouseX == null || mouseY == null) return;
535
497
  var mouseColumn = GridUtils.getColumnAtX(mouseX, metrics);
536
498
  if (mouseColumn == null || theme.columnHoverBackgroundColor == null) {
537
499
  return;
538
500
  }
539
- var {
540
- allColumnWidths,
541
- allColumnXs,
542
- maxY
543
- } = metrics;
501
+ var allColumnWidths = metrics.allColumnWidths,
502
+ allColumnXs = metrics.allColumnXs,
503
+ maxY = metrics.maxY;
544
504
  if (mouseY > maxY) {
545
505
  return;
546
506
  }
@@ -550,16 +510,12 @@ export class GridRenderer {
550
510
  context.fillRect(x, 0, columnWidth, maxY);
551
511
  }
552
512
  drawMouseRowHover(context, state) {
553
- var {
554
- mouseX,
555
- mouseY,
556
- theme,
557
- metrics
558
- } = state;
513
+ var mouseX = state.mouseX,
514
+ mouseY = state.mouseY,
515
+ theme = state.theme,
516
+ metrics = state.metrics;
559
517
  if (mouseX == null || mouseY == null) return;
560
- var {
561
- maxX
562
- } = metrics;
518
+ var maxX = metrics.maxX;
563
519
  if (mouseX > maxX || theme.rowHoverBackgroundColor == null) {
564
520
  return;
565
521
  }
@@ -570,19 +526,15 @@ export class GridRenderer {
570
526
  this.drawMouseRowHoverForRow(context, state, mouseRow);
571
527
  }
572
528
  drawFloatingMouseRowHover(context, state) {
573
- var {
574
- mouseX,
575
- mouseY,
576
- theme,
577
- metrics
578
- } = state;
579
- var {
580
- maxX,
581
- floatingTopRowCount,
582
- floatingBottomRowCount,
583
- rowCount,
584
- rowFooterWidth
585
- } = metrics;
529
+ var mouseX = state.mouseX,
530
+ mouseY = state.mouseY,
531
+ theme = state.theme,
532
+ metrics = state.metrics;
533
+ var maxX = metrics.maxX,
534
+ floatingTopRowCount = metrics.floatingTopRowCount,
535
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
536
+ rowCount = metrics.rowCount,
537
+ rowFooterWidth = metrics.rowFooterWidth;
586
538
  if (mouseX == null || mouseY == null || mouseX > maxX + rowFooterWidth || theme.rowHoverBackgroundColor == null) {
587
539
  return;
588
540
  }
@@ -592,26 +544,21 @@ export class GridRenderer {
592
544
  }
593
545
  }
594
546
  drawMouseRowHoverForRow(context, state, row) {
595
- var {
596
- metrics,
597
- selectedRanges,
598
- theme
599
- } = state;
600
- var {
601
- allRowHeights,
602
- allRowYs,
603
- maxX
604
- } = metrics;
547
+ var metrics = state.metrics,
548
+ selectedRanges = state.selectedRanges,
549
+ theme = state.theme;
550
+ var allRowHeights = metrics.allRowHeights,
551
+ allRowYs = metrics.allRowYs,
552
+ maxX = metrics.maxX;
605
553
  var y = getOrThrow(allRowYs, row);
606
554
  var rowHeight = getOrThrow(allRowHeights, row);
607
555
  if (theme.rowHoverBackgroundColor != null) {
608
556
  context.fillStyle = theme.rowHoverBackgroundColor;
609
557
  }
610
558
  for (var i = 0; i < selectedRanges.length; i += 1) {
611
- var {
612
- startRow,
613
- endRow
614
- } = selectedRanges[i];
559
+ var _selectedRanges$i = selectedRanges[i],
560
+ startRow = _selectedRanges$i.startRow,
561
+ endRow = _selectedRanges$i.endRow;
615
562
  if (startRow != null && endRow != null && startRow <= row && endRow >= row) {
616
563
  if (theme.selectedRowHoverBackgroundColor != null) {
617
564
  context.fillStyle = theme.selectedRowHoverBackgroundColor;
@@ -622,14 +569,10 @@ export class GridRenderer {
622
569
  context.fillRect(0, y, maxX, rowHeight);
623
570
  }
624
571
  drawGridLines(context, state) {
625
- var {
626
- metrics,
627
- theme
628
- } = state;
629
- var {
630
- columnsForRender,
631
- visibleRows
632
- } = metrics;
572
+ var metrics = state.metrics,
573
+ theme = state.theme;
574
+ var columnsForRender = metrics.columnsForRender,
575
+ visibleRows = metrics.visibleRows;
633
576
  this.drawGridLinesForItems(context, state, columnsForRender, visibleRows, theme.gridColumnColor, theme.gridRowColor);
634
577
  }
635
578
  drawGridLinesForItems(context, state, columns, rows, columnColor, rowColor) {
@@ -649,13 +592,9 @@ export class GridRenderer {
649
592
  context.stroke();
650
593
  }
651
594
  drawGridLinesForColumns(context, state, columns) {
652
- var {
653
- metrics
654
- } = state;
655
- var {
656
- allColumnXs,
657
- maxY
658
- } = metrics;
595
+ var metrics = state.metrics;
596
+ var allColumnXs = metrics.allColumnXs,
597
+ maxY = metrics.maxY;
659
598
  for (var i = 0; i < columns.length; i += 1) {
660
599
  var column = columns[i];
661
600
  var x = getOrThrow(allColumnXs, column) + 0.5;
@@ -664,13 +603,9 @@ export class GridRenderer {
664
603
  }
665
604
  }
666
605
  drawGridLinesForRows(context, state, rows) {
667
- var {
668
- metrics
669
- } = state;
670
- var {
671
- allRowYs,
672
- maxX: metricsMaxX
673
- } = metrics;
606
+ var metrics = state.metrics;
607
+ var allRowYs = metrics.allRowYs,
608
+ metricsMaxX = metrics.maxX;
674
609
  var maxX = metricsMaxX;
675
610
 
676
611
  // Draw row lines
@@ -682,13 +617,9 @@ export class GridRenderer {
682
617
  }
683
618
  }
684
619
  drawCellBackgrounds(context, state) {
685
- var {
686
- metrics
687
- } = state;
688
- var {
689
- columnsForRender,
690
- visibleRows
691
- } = metrics;
620
+ var metrics = state.metrics;
621
+ var columnsForRender = metrics.columnsForRender,
622
+ visibleRows = metrics.visibleRows;
692
623
  this.drawCellBackgroundsForItems(context, state, columnsForRender, visibleRows);
693
624
  }
694
625
  drawCellBackgroundsForItems(context, state, columns, rows) {
@@ -704,20 +635,16 @@ export class GridRenderer {
704
635
  context.restore();
705
636
  }
706
637
  drawCellBackground(context, state, column, row, rowAfter) {
707
- var {
708
- metrics,
709
- model,
710
- theme
711
- } = state;
712
- var {
713
- firstColumn,
714
- modelColumns,
715
- modelRows,
716
- allColumnXs,
717
- allColumnWidths,
718
- allRowYs,
719
- allRowHeights
720
- } = metrics;
638
+ var metrics = state.metrics,
639
+ model = state.model,
640
+ theme = state.theme;
641
+ var firstColumn = metrics.firstColumn,
642
+ modelColumns = metrics.modelColumns,
643
+ modelRows = metrics.modelRows,
644
+ allColumnXs = metrics.allColumnXs,
645
+ allColumnWidths = metrics.allColumnWidths,
646
+ allRowYs = metrics.allRowYs,
647
+ allRowHeights = metrics.allRowHeights;
721
648
  var modelRow = getOrThrow(modelRows, row);
722
649
  var modelColumn = getOrThrow(modelColumns, column);
723
650
  var backgroundColor = model.backgroundColorForCell(modelColumn, modelRow, theme);
@@ -736,27 +663,19 @@ export class GridRenderer {
736
663
  }
737
664
  }
738
665
  drawCellContents(context, state) {
739
- var {
740
- metrics
741
- } = state;
742
- var {
743
- columnsForRender
744
- } = metrics;
666
+ var metrics = state.metrics;
667
+ var columnsForRender = metrics.columnsForRender;
745
668
  for (var i = 0; i < columnsForRender.length; i += 1) {
746
669
  var column = columnsForRender[i];
747
670
  this.drawColumnCellContents(context, state, column);
748
671
  }
749
672
  }
750
673
  drawColumnCellContents(context, state, column) {
751
- var {
752
- metrics
753
- } = state;
754
- var {
755
- allColumnXs,
756
- allColumnWidths,
757
- visibleRows,
758
- height
759
- } = metrics;
674
+ var metrics = state.metrics;
675
+ var allColumnXs = metrics.allColumnXs,
676
+ allColumnWidths = metrics.allColumnWidths,
677
+ visibleRows = metrics.visibleRows,
678
+ height = metrics.height;
760
679
  var x = getOrThrow(allColumnXs, column);
761
680
  var columnWidth = getOrThrow(allColumnWidths, column);
762
681
  context.save();
@@ -770,14 +689,10 @@ export class GridRenderer {
770
689
  context.restore();
771
690
  }
772
691
  drawCellContent(context, state, column, row) {
773
- var {
774
- metrics,
775
- model
776
- } = state;
777
- var {
778
- modelColumns,
779
- modelRows
780
- } = metrics;
692
+ var metrics = state.metrics,
693
+ model = state.model;
694
+ var modelColumns = metrics.modelColumns,
695
+ modelRows = metrics.modelRows;
781
696
  var modelRow = getOrThrow(modelRows, row);
782
697
  var modelColumn = getOrThrow(modelColumns, column);
783
698
  var renderType = model.renderTypeForCell(modelColumn, modelRow);
@@ -793,25 +708,19 @@ export class GridRenderer {
793
708
  }
794
709
  }
795
710
  drawCellRowTreeDepthLines(context, state, row, rowAfter) {
796
- var {
797
- metrics,
798
- model,
799
- theme
800
- } = state;
711
+ var metrics = state.metrics,
712
+ model = state.model,
713
+ theme = state.theme;
801
714
  if (!isExpandableGridModel(model)) return;
802
715
  var depth = model.depthForRow(row);
803
716
  if (depth === 0) return;
804
- var {
805
- firstColumn,
806
- allColumnXs,
807
- allRowYs,
808
- allRowHeights
809
- } = metrics;
810
- var {
811
- treeDepthIndent,
812
- treeHorizontalPadding,
813
- treeLineColor
814
- } = theme;
717
+ var firstColumn = metrics.firstColumn,
718
+ allColumnXs = metrics.allColumnXs,
719
+ allRowYs = metrics.allRowYs,
720
+ allRowHeights = metrics.allRowHeights;
721
+ var treeDepthIndent = theme.treeDepthIndent,
722
+ treeHorizontalPadding = theme.treeHorizontalPadding,
723
+ treeLineColor = theme.treeLineColor;
815
724
  var columnX = getOrThrow(allColumnXs, firstColumn);
816
725
  var rowY = getOrThrow(allRowYs, row);
817
726
  var rowHeight = getOrThrow(allRowHeights, row);
@@ -846,53 +755,44 @@ export class GridRenderer {
846
755
  }
847
756
  }
848
757
  drawHeaders(context, state) {
849
- var {
850
- theme
851
- } = state;
758
+ var theme = state.theme;
852
759
  context.font = theme.headerFont;
853
760
  this.drawColumnHeaders(context, state);
854
761
  this.drawRowHeaders(context, state);
855
762
  }
856
763
  drawFooters(context, state) {
857
- var {
858
- theme
859
- } = state;
764
+ var theme = state.theme;
860
765
  context.font = theme.headerFont;
861
766
  this.drawRowFooters(context, state);
862
767
  }
863
768
  drawColumnHeaders(context, state) {
864
- var {
865
- mouseX,
866
- mouseY,
867
- theme,
868
- metrics,
869
- draggingColumnSeparator,
870
- isDragging,
871
- model
872
- } = state;
873
- var {
874
- columnHeaderHeight,
875
- floatingColumns,
876
- gridX,
877
- width,
878
- visibleColumns,
879
- allColumnWidths,
880
- allColumnXs,
881
- floatingLeftColumnCount,
882
- floatingLeftWidth,
883
- floatingRightWidth,
884
- modelColumns,
885
- columnHeaderMaxDepth
886
- } = metrics;
769
+ var mouseX = state.mouseX,
770
+ mouseY = state.mouseY,
771
+ theme = state.theme,
772
+ metrics = state.metrics,
773
+ draggingColumnSeparator = state.draggingColumnSeparator,
774
+ isDragging = state.isDragging,
775
+ model = state.model;
776
+ var columnHeaderHeight = metrics.columnHeaderHeight,
777
+ floatingColumns = metrics.floatingColumns,
778
+ gridX = metrics.gridX,
779
+ width = metrics.width,
780
+ visibleColumns = metrics.visibleColumns,
781
+ allColumnWidths = metrics.allColumnWidths,
782
+ allColumnXs = metrics.allColumnXs,
783
+ floatingLeftColumnCount = metrics.floatingLeftColumnCount,
784
+ floatingLeftWidth = metrics.floatingLeftWidth,
785
+ floatingRightWidth = metrics.floatingRightWidth,
786
+ movedColumns = metrics.movedColumns,
787
+ columnCount = metrics.columnCount,
788
+ columnHeaderMaxDepth = metrics.columnHeaderMaxDepth;
887
789
  if (columnHeaderHeight <= 0) {
888
790
  return;
889
791
  }
890
- var {
891
- headerHiddenSeparatorSize,
892
- headerHiddenSeparatorHoverColor,
893
- headerSeparatorColor,
894
- headerSeparatorHoverColor
895
- } = theme;
792
+ var headerHiddenSeparatorSize = theme.headerHiddenSeparatorSize,
793
+ headerHiddenSeparatorHoverColor = theme.headerHiddenSeparatorHoverColor,
794
+ headerSeparatorColor = theme.headerSeparatorColor,
795
+ headerSeparatorHoverColor = theme.headerSeparatorHoverColor;
896
796
  var hiddenSeparatorHeight = columnHeaderHeight * 0.5;
897
797
  var hiddenY = columnHeaderHeight * (columnHeaderMaxDepth - 1) + columnHeaderHeight * 0.5 - hiddenSeparatorHeight * 0.5;
898
798
  var containsFrozenColumns = floatingLeftColumnCount > 0;
@@ -910,10 +810,13 @@ export class GridRenderer {
910
810
  if (headerSeparatorColor) {
911
811
  context.strokeStyle = headerSeparatorColor;
912
812
  var hiddenColumns = [...allColumnWidths.entries()].filter(_ref => {
913
- var [_, w] = _ref;
813
+ var _ref2 = _slicedToArray(_ref, 2),
814
+ _ = _ref2[0],
815
+ w = _ref2[1];
914
816
  return w === 0;
915
- }).map(_ref2 => {
916
- var [index] = _ref2;
817
+ }).map(_ref3 => {
818
+ var _ref4 = _slicedToArray(_ref3, 1),
819
+ index = _ref4[0];
917
820
  return index;
918
821
  });
919
822
 
@@ -930,10 +833,9 @@ export class GridRenderer {
930
833
  context.fill();
931
834
  }
932
835
  if (headerSeparatorHoverColor) {
933
- var {
934
- index: highlightedSeparator,
935
- depth
936
- } = draggingColumnSeparator !== null && draggingColumnSeparator !== void 0 ? draggingColumnSeparator : {};
836
+ var _ref5 = draggingColumnSeparator !== null && draggingColumnSeparator !== void 0 ? draggingColumnSeparator : {},
837
+ highlightedSeparator = _ref5.index,
838
+ depth = _ref5.depth;
937
839
  if (highlightedSeparator == null && mouseX != null && mouseY != null) {
938
840
  var separator = GridColumnSeparatorMouseHandler.getColumnSeparator(GridUtils.getGridPointFromXY(mouseX, mouseY, metrics), metrics, model, theme);
939
841
  highlightedSeparator = separator === null || separator === void 0 ? void 0 : separator.index;
@@ -943,9 +845,7 @@ export class GridRenderer {
943
845
  if (highlightedSeparator == null) {
944
846
  shouldDrawSeparator = false;
945
847
  } else {
946
- var columnIndex = modelColumns.get(highlightedSeparator);
947
- var nextColumnIndex = modelColumns.get(highlightedSeparator + 1);
948
- shouldDrawSeparator = GridUtils.hasColumnSeparatorAtDepth(model, depth, columnIndex, nextColumnIndex);
848
+ shouldDrawSeparator = GridUtils.hasColumnSeparatorAtDepth(model, depth, highlightedSeparator, columnCount, movedColumns);
949
849
  }
950
850
  if (shouldDrawSeparator && highlightedSeparator != null && depth != null && (!isDragging || draggingColumnSeparator != null)) {
951
851
  context.strokeStyle = headerSeparatorHoverColor;
@@ -976,12 +876,8 @@ export class GridRenderer {
976
876
  context.restore();
977
877
  }
978
878
  drawColumnHeadersForRange(context, state, range, bounds) {
979
- var {
980
- model
981
- } = state;
982
- var {
983
- columnHeaderMaxDepth
984
- } = model;
879
+ var model = state.model;
880
+ var columnHeaderMaxDepth = model.columnHeaderMaxDepth;
985
881
  if (columnHeaderMaxDepth === 0) {
986
882
  return;
987
883
  }
@@ -990,30 +886,20 @@ export class GridRenderer {
990
886
  }
991
887
  }
992
888
  drawColumnHeadersAtDepth(context, state, range, bounds, depth) {
993
- var {
994
- metrics,
995
- model,
996
- theme
997
- } = state;
998
- var {
999
- modelColumns,
1000
- allColumnXs,
1001
- gridX,
1002
- userColumnWidths,
1003
- allColumnWidths,
1004
- movedColumns
1005
- } = metrics;
1006
- var {
1007
- columnHeaderHeight,
1008
- columnWidth
1009
- } = theme;
1010
- var {
1011
- columnHeaderMaxDepth
1012
- } = model;
1013
- var {
1014
- minX,
1015
- maxX
1016
- } = bounds;
889
+ var metrics = state.metrics,
890
+ model = state.model,
891
+ theme = state.theme;
892
+ var modelColumns = metrics.modelColumns,
893
+ allColumnXs = metrics.allColumnXs,
894
+ gridX = metrics.gridX,
895
+ userColumnWidths = metrics.userColumnWidths,
896
+ allColumnWidths = metrics.allColumnWidths,
897
+ movedColumns = metrics.movedColumns;
898
+ var columnHeaderHeight = theme.columnHeaderHeight,
899
+ columnWidth = theme.columnWidth;
900
+ var columnHeaderMaxDepth = model.columnHeaderMaxDepth;
901
+ var minX = bounds.minX,
902
+ maxX = bounds.maxX;
1017
903
  var visibleWidth = maxX - minX;
1018
904
  if (columnHeaderMaxDepth === 0) {
1019
905
  return;
@@ -1036,10 +922,8 @@ export class GridRenderer {
1036
922
  if (depth > 0) {
1037
923
  var columnIndex = startIndex;
1038
924
  while (columnIndex <= endIndex) {
1039
- var {
1040
- columnCount,
1041
- calculatedColumnWidths
1042
- } = metrics;
925
+ var columnCount = metrics.columnCount,
926
+ calculatedColumnWidths = metrics.calculatedColumnWidths;
1043
927
  var modelColumn = getOrThrow(modelColumns, columnIndex);
1044
928
  var columnGroupName = model.textForColumnHeader(modelColumn, depth);
1045
929
  var columnGroupColor = model.colorForColumnHeader(modelColumn, depth);
@@ -1051,25 +935,25 @@ export class GridRenderer {
1051
935
  // The group will be drawn as if it were a column with a max width of the bounds width
1052
936
  var prevColumnIndex = columnIndex - 1;
1053
937
  while (prevColumnIndex >= 0 && (columnGroupRight - columnGroupLeft < visibleWidth || columnGroupLeft > minX)) {
1054
- var _modelColumns$get, _ref3, _ref4, _userColumnWidths$get;
938
+ var _modelColumns$get, _ref6, _ref7, _userColumnWidths$get;
1055
939
  var prevModelIndex = (_modelColumns$get = modelColumns.get(prevColumnIndex)) !== null && _modelColumns$get !== void 0 ? _modelColumns$get : GridUtils.getModelIndex(prevColumnIndex, movedColumns);
1056
- if (prevModelIndex == null || model.textForColumnHeader(prevModelIndex, depth) !== columnGroupName) {
940
+ if (prevModelIndex == null || !GridUtils.isSameColumnGroupAtDepth(model, depth, modelColumn, prevModelIndex)) {
1057
941
  // Previous column not in the same group
1058
942
  break;
1059
943
  }
1060
- var prevColumnWidth = (_ref3 = (_ref4 = (_userColumnWidths$get = userColumnWidths.get(prevModelIndex)) !== null && _userColumnWidths$get !== void 0 ? _userColumnWidths$get : allColumnWidths.get(prevColumnIndex)) !== null && _ref4 !== void 0 ? _ref4 : calculatedColumnWidths.get(prevModelIndex)) !== null && _ref3 !== void 0 ? _ref3 : columnWidth;
944
+ var prevColumnWidth = (_ref6 = (_ref7 = (_userColumnWidths$get = userColumnWidths.get(prevModelIndex)) !== null && _userColumnWidths$get !== void 0 ? _userColumnWidths$get : allColumnWidths.get(prevColumnIndex)) !== null && _ref7 !== void 0 ? _ref7 : calculatedColumnWidths.get(prevModelIndex)) !== null && _ref6 !== void 0 ? _ref6 : columnWidth;
1061
945
  columnGroupLeft -= prevColumnWidth;
1062
946
  prevColumnIndex -= 1;
1063
947
  }
1064
948
  var nextColumnIndex = columnIndex + 1;
1065
949
  while (nextColumnIndex < columnCount && (columnGroupRight - columnGroupLeft < visibleWidth || columnGroupRight < maxX)) {
1066
- var _modelColumns$get2, _ref5, _userColumnWidths$get2;
950
+ var _modelColumns$get2, _ref8, _userColumnWidths$get2;
1067
951
  var nextModelIndex = (_modelColumns$get2 = modelColumns.get(nextColumnIndex)) !== null && _modelColumns$get2 !== void 0 ? _modelColumns$get2 : GridUtils.getModelIndex(nextColumnIndex, movedColumns);
1068
- if (model.textForColumnHeader(nextModelIndex, depth) !== columnGroupName) {
952
+ if (!GridUtils.isSameColumnGroupAtDepth(model, depth, modelColumn, nextModelIndex)) {
1069
953
  // Next column not in the same group
1070
954
  break;
1071
955
  }
1072
- var nextColumnWidth = (_ref5 = (_userColumnWidths$get2 = userColumnWidths.get(nextModelIndex)) !== null && _userColumnWidths$get2 !== void 0 ? _userColumnWidths$get2 : allColumnWidths.get(nextColumnIndex)) !== null && _ref5 !== void 0 ? _ref5 : columnWidth;
956
+ var nextColumnWidth = (_ref8 = (_userColumnWidths$get2 = userColumnWidths.get(nextModelIndex)) !== null && _userColumnWidths$get2 !== void 0 ? _userColumnWidths$get2 : allColumnWidths.get(nextColumnIndex)) !== null && _ref8 !== void 0 ? _ref8 : columnWidth;
1073
957
  columnGroupRight += nextColumnWidth;
1074
958
  nextColumnIndex += 1;
1075
959
  }
@@ -1104,16 +988,12 @@ export class GridRenderer {
1104
988
  */
1105
989
  drawColumnHeaderAtIndex(context, state, index, bounds) {
1106
990
  var _model$colorForColumn;
1107
- var {
1108
- metrics,
1109
- model
1110
- } = state;
1111
- var {
1112
- modelColumns,
1113
- allColumnWidths,
1114
- allColumnXs,
1115
- gridX
1116
- } = metrics;
991
+ var metrics = state.metrics,
992
+ model = state.model;
993
+ var modelColumns = metrics.modelColumns,
994
+ allColumnWidths = metrics.allColumnWidths,
995
+ allColumnXs = metrics.allColumnXs,
996
+ gridX = metrics.gridX;
1117
997
  var width = getOrThrow(allColumnWidths, index);
1118
998
  var x = getOrThrow(allColumnXs, index) + gridX;
1119
999
  var modelColumn = getOrThrow(modelColumns, index);
@@ -1129,32 +1009,27 @@ export class GridRenderer {
1129
1009
  if (columnWidth <= 0) {
1130
1010
  return;
1131
1011
  }
1132
- var {
1133
- metrics,
1134
- theme
1135
- } = state;
1136
- var {
1137
- headerHorizontalPadding,
1138
- columnHeaderHeight,
1139
- headerBackgroundColor,
1140
- headerColor,
1141
- headerSeparatorColor,
1142
- black,
1143
- white
1144
- } = theme;
1145
- var {
1146
- fontWidthsLower,
1147
- fontWidthsUpper,
1148
- width
1149
- } = metrics;
1012
+ var metrics = state.metrics,
1013
+ theme = state.theme;
1014
+ var headerHorizontalPadding = theme.headerHorizontalPadding,
1015
+ columnHeaderHeight = theme.columnHeaderHeight,
1016
+ headerBackgroundColor = theme.headerBackgroundColor,
1017
+ headerColor = theme.headerColor,
1018
+ headerSeparatorColor = theme.headerSeparatorColor,
1019
+ black = theme.black,
1020
+ white = theme.white;
1021
+ var fontWidthsLower = metrics.fontWidthsLower,
1022
+ fontWidthsUpper = metrics.fontWidthsUpper,
1023
+ width = metrics.width;
1150
1024
  var maxWidth = columnWidth - headerHorizontalPadding * 2;
1151
- var {
1152
- backgroundColor = headerBackgroundColor,
1153
- separatorColor = headerSeparatorColor
1154
- } = style !== null && style !== void 0 ? style : {};
1155
- var {
1156
- textColor = headerColor
1157
- } = style !== null && style !== void 0 ? style : {};
1025
+ var _ref9 = style !== null && style !== void 0 ? style : {},
1026
+ _ref9$backgroundColor = _ref9.backgroundColor,
1027
+ backgroundColor = _ref9$backgroundColor === void 0 ? headerBackgroundColor : _ref9$backgroundColor,
1028
+ _ref9$separatorColor = _ref9.separatorColor,
1029
+ separatorColor = _ref9$separatorColor === void 0 ? headerSeparatorColor : _ref9$separatorColor;
1030
+ var _ref0 = style !== null && style !== void 0 ? style : {},
1031
+ _ref0$textColor = _ref0.textColor,
1032
+ textColor = _ref0$textColor === void 0 ? headerColor : _ref0$textColor;
1158
1033
  try {
1159
1034
  var isDarkBackground = GridRenderer.getCachedColorIsDark(backgroundColor);
1160
1035
  var isDarkText = GridRenderer.getCachedColorIsDark(textColor);
@@ -1167,10 +1042,11 @@ export class GridRenderer {
1167
1042
  // Invalid color provided
1168
1043
  // no-op since we don't use logging in base grid
1169
1044
  }
1170
- var {
1171
- minX = 0,
1172
- maxX = width
1173
- } = bounds !== null && bounds !== void 0 ? bounds : {};
1045
+ var _ref1 = bounds !== null && bounds !== void 0 ? bounds : {},
1046
+ _ref1$minX = _ref1.minX,
1047
+ minX = _ref1$minX === void 0 ? 0 : _ref1$minX,
1048
+ _ref1$maxX = _ref1.maxX,
1049
+ maxX = _ref1$maxX === void 0 ? width : _ref1$maxX;
1174
1050
  context.save();
1175
1051
  context.rect(minX, 0, maxX - minX, columnHeaderHeight);
1176
1052
  context.clip();
@@ -1237,32 +1113,26 @@ export class GridRenderer {
1237
1113
  context.restore();
1238
1114
  }
1239
1115
  drawRowHeaders(context, state) {
1240
- var {
1241
- mouseX,
1242
- mouseY,
1243
- metrics,
1244
- theme,
1245
- draggingRowSeparator
1246
- } = state;
1247
- var {
1248
- gridY,
1249
- rowHeaderWidth,
1250
- height,
1251
- visibleRows,
1252
- allRowHeights,
1253
- allRowYs
1254
- } = metrics;
1116
+ var mouseX = state.mouseX,
1117
+ mouseY = state.mouseY,
1118
+ metrics = state.metrics,
1119
+ theme = state.theme,
1120
+ draggingRowSeparator = state.draggingRowSeparator;
1121
+ var gridY = metrics.gridY,
1122
+ rowHeaderWidth = metrics.rowHeaderWidth,
1123
+ height = metrics.height,
1124
+ visibleRows = metrics.visibleRows,
1125
+ allRowHeights = metrics.allRowHeights,
1126
+ allRowYs = metrics.allRowYs;
1255
1127
  if (rowHeaderWidth <= 0) {
1256
1128
  return;
1257
1129
  }
1258
- var {
1259
- headerBackgroundColor,
1260
- headerColor,
1261
- headerHiddenSeparatorSize,
1262
- headerHiddenSeparatorHoverColor,
1263
- headerSeparatorColor,
1264
- headerSeparatorHoverColor
1265
- } = theme;
1130
+ var headerBackgroundColor = theme.headerBackgroundColor,
1131
+ headerColor = theme.headerColor,
1132
+ headerHiddenSeparatorSize = theme.headerHiddenSeparatorSize,
1133
+ headerHiddenSeparatorHoverColor = theme.headerHiddenSeparatorHoverColor,
1134
+ headerSeparatorColor = theme.headerSeparatorColor,
1135
+ headerSeparatorHoverColor = theme.headerSeparatorHoverColor;
1266
1136
  var hiddenSeparatorWidth = rowHeaderWidth * 0.5;
1267
1137
  var hiddenX = rowHeaderWidth * 0.5 - hiddenSeparatorWidth * 0.5;
1268
1138
  context.save();
@@ -1313,9 +1183,9 @@ export class GridRenderer {
1313
1183
  context.fill();
1314
1184
  }
1315
1185
  if (headerSeparatorHoverColor) {
1316
- var {
1317
- index: highlightedSeparator = null
1318
- } = draggingRowSeparator !== null && draggingRowSeparator !== void 0 ? draggingRowSeparator : {};
1186
+ var _ref10 = draggingRowSeparator !== null && draggingRowSeparator !== void 0 ? draggingRowSeparator : {},
1187
+ _ref10$index = _ref10.index,
1188
+ highlightedSeparator = _ref10$index === void 0 ? null : _ref10$index;
1319
1189
  if (highlightedSeparator == null && mouseX != null && mouseY != null) {
1320
1190
  highlightedSeparator = GridUtils.getRowSeparatorIndex(mouseX, mouseY, metrics, theme);
1321
1191
  }
@@ -1362,54 +1232,44 @@ export class GridRenderer {
1362
1232
  if (rowHeight <= 0) {
1363
1233
  return;
1364
1234
  }
1365
- var {
1366
- metrics,
1367
- model,
1368
- theme
1369
- } = state;
1370
- var {
1371
- modelRows,
1372
- rowHeaderWidth
1373
- } = metrics;
1235
+ var metrics = state.metrics,
1236
+ model = state.model,
1237
+ theme = state.theme;
1238
+ var modelRows = metrics.modelRows,
1239
+ rowHeaderWidth = metrics.rowHeaderWidth;
1374
1240
  var modelRow = getOrThrow(modelRows, row);
1375
1241
  var x = rowHeaderWidth - theme.cellHorizontalPadding;
1376
1242
  var y = rowY + rowHeight * 0.5;
1377
1243
  context.fillText(model.textForRowHeader(modelRow), x, y);
1378
1244
  }
1379
1245
  drawRowFooters(context, state) {
1380
- var {
1381
- mouseX,
1382
- mouseY,
1383
- metrics,
1384
- model,
1385
- theme,
1386
- draggingRowSeparator
1387
- } = state;
1388
- var {
1389
- gridY,
1390
- gridX,
1391
- maxX,
1392
- modelRows,
1393
- rowFooterWidth,
1394
- height,
1395
- verticalBarWidth,
1396
- visibleRows,
1397
- allRowHeights,
1398
- allRowYs,
1399
- width
1400
- } = metrics;
1246
+ var mouseX = state.mouseX,
1247
+ mouseY = state.mouseY,
1248
+ metrics = state.metrics,
1249
+ model = state.model,
1250
+ theme = state.theme,
1251
+ draggingRowSeparator = state.draggingRowSeparator;
1252
+ var gridY = metrics.gridY,
1253
+ gridX = metrics.gridX,
1254
+ maxX = metrics.maxX,
1255
+ modelRows = metrics.modelRows,
1256
+ rowFooterWidth = metrics.rowFooterWidth,
1257
+ height = metrics.height,
1258
+ verticalBarWidth = metrics.verticalBarWidth,
1259
+ visibleRows = metrics.visibleRows,
1260
+ allRowHeights = metrics.allRowHeights,
1261
+ allRowYs = metrics.allRowYs,
1262
+ width = metrics.width;
1401
1263
  if (rowFooterWidth <= 0) {
1402
1264
  return;
1403
1265
  }
1404
- var {
1405
- cellHorizontalPadding,
1406
- headerBackgroundColor,
1407
- headerColor,
1408
- headerHiddenSeparatorSize,
1409
- headerHiddenSeparatorHoverColor,
1410
- headerSeparatorColor,
1411
- headerSeparatorHoverColor
1412
- } = theme;
1266
+ var cellHorizontalPadding = theme.cellHorizontalPadding,
1267
+ headerBackgroundColor = theme.headerBackgroundColor,
1268
+ headerColor = theme.headerColor,
1269
+ headerHiddenSeparatorSize = theme.headerHiddenSeparatorSize,
1270
+ headerHiddenSeparatorHoverColor = theme.headerHiddenSeparatorHoverColor,
1271
+ headerSeparatorColor = theme.headerSeparatorColor,
1272
+ headerSeparatorHoverColor = theme.headerSeparatorHoverColor;
1413
1273
  var hiddenSeparatorWidth = rowFooterWidth * 0.5;
1414
1274
  var hiddenX = rowFooterWidth * 0.5 - hiddenSeparatorWidth * 0.5;
1415
1275
  var x = Math.min(gridX + maxX, width - rowFooterWidth - verticalBarWidth);
@@ -1461,9 +1321,9 @@ export class GridRenderer {
1461
1321
  context.fill();
1462
1322
  }
1463
1323
  if (headerSeparatorHoverColor) {
1464
- var {
1465
- index: highlightedSeparator = null
1466
- } = draggingRowSeparator !== null && draggingRowSeparator !== void 0 ? draggingRowSeparator : {};
1324
+ var _ref11 = draggingRowSeparator !== null && draggingRowSeparator !== void 0 ? draggingRowSeparator : {},
1325
+ _ref11$index = _ref11.index,
1326
+ highlightedSeparator = _ref11$index === void 0 ? null : _ref11$index;
1467
1327
  if (highlightedSeparator == null && mouseX != null && mouseY != null) {
1468
1328
  highlightedSeparator = GridUtils.getRowSeparatorIndex(mouseX, mouseY, metrics, theme);
1469
1329
  }
@@ -1513,35 +1373,37 @@ export class GridRenderer {
1513
1373
  }
1514
1374
  drawSelectedRanges(context, state) {
1515
1375
  var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1516
- var {
1517
- cursorColumn: column,
1518
- cursorRow: row,
1519
- draggingRow,
1520
- draggingColumn,
1521
- editingCell,
1522
- metrics,
1523
- model,
1524
- selectedRanges,
1525
- theme
1526
- } = state;
1527
- var {
1528
- allColumnWidths,
1529
- allColumnXs,
1530
- allRowHeights,
1531
- allRowYs,
1532
- width,
1533
- height
1534
- } = metrics;
1535
- var {
1536
- left = metrics.left,
1537
- top = metrics.top,
1538
- right = metrics.right,
1539
- bottom = metrics.bottom,
1540
- minY = -10,
1541
- maxY = height + 10,
1542
- minX = -10,
1543
- maxX = width + 10
1544
- } = viewport;
1376
+ var column = state.cursorColumn,
1377
+ row = state.cursorRow,
1378
+ draggingRow = state.draggingRow,
1379
+ draggingColumn = state.draggingColumn,
1380
+ editingCell = state.editingCell,
1381
+ metrics = state.metrics,
1382
+ model = state.model,
1383
+ selectedRanges = state.selectedRanges,
1384
+ theme = state.theme;
1385
+ var allColumnWidths = metrics.allColumnWidths,
1386
+ allColumnXs = metrics.allColumnXs,
1387
+ allRowHeights = metrics.allRowHeights,
1388
+ allRowYs = metrics.allRowYs,
1389
+ width = metrics.width,
1390
+ height = metrics.height;
1391
+ var _viewport$left = viewport.left,
1392
+ left = _viewport$left === void 0 ? metrics.left : _viewport$left,
1393
+ _viewport$top = viewport.top,
1394
+ top = _viewport$top === void 0 ? metrics.top : _viewport$top,
1395
+ _viewport$right = viewport.right,
1396
+ right = _viewport$right === void 0 ? metrics.right : _viewport$right,
1397
+ _viewport$bottom = viewport.bottom,
1398
+ bottom = _viewport$bottom === void 0 ? metrics.bottom : _viewport$bottom,
1399
+ _viewport$minY = viewport.minY,
1400
+ minY = _viewport$minY === void 0 ? -10 : _viewport$minY,
1401
+ _viewport$maxY = viewport.maxY,
1402
+ maxY = _viewport$maxY === void 0 ? height + 10 : _viewport$maxY,
1403
+ _viewport$minX = viewport.minX,
1404
+ minX = _viewport$minX === void 0 ? -10 : _viewport$minX,
1405
+ _viewport$maxX = viewport.maxX,
1406
+ maxX = _viewport$maxX === void 0 ? width + 10 : _viewport$maxX;
1545
1407
  if (selectedRanges.length === 0) {
1546
1408
  return;
1547
1409
  }
@@ -1611,21 +1473,15 @@ export class GridRenderer {
1611
1473
  }
1612
1474
  }
1613
1475
  drawActiveCell(context, state, column, row) {
1614
- var {
1615
- metrics,
1616
- theme
1617
- } = state;
1618
- var {
1619
- scrollX,
1620
- scrollY,
1621
- allColumnWidths,
1622
- allColumnXs,
1623
- allRowHeights,
1624
- allRowYs
1625
- } = metrics;
1626
- var {
1627
- activeCellSelectionBorderWidth: borderWidth
1628
- } = theme;
1476
+ var metrics = state.metrics,
1477
+ theme = state.theme;
1478
+ var scrollX = metrics.scrollX,
1479
+ scrollY = metrics.scrollY,
1480
+ allColumnWidths = metrics.allColumnWidths,
1481
+ allColumnXs = metrics.allColumnXs,
1482
+ allRowHeights = metrics.allRowHeights,
1483
+ allRowYs = metrics.allRowYs;
1484
+ var borderWidth = theme.activeCellSelectionBorderWidth;
1629
1485
  var cellX = getOrThrow(allColumnXs, column);
1630
1486
  var cellY = getOrThrow(allRowYs, row);
1631
1487
  var cellW = getOrThrow(allColumnWidths, column);
@@ -1646,9 +1502,7 @@ export class GridRenderer {
1646
1502
  h -= borderWidth - y;
1647
1503
  y = borderWidth * 0.5;
1648
1504
  }
1649
- var {
1650
- lineWidth
1651
- } = context;
1505
+ var lineWidth = context.lineWidth;
1652
1506
  context.beginPath();
1653
1507
  context.lineWidth = borderWidth;
1654
1508
  context.strokeStyle = theme.selectionOutlineColor;
@@ -1683,51 +1537,45 @@ export class GridRenderer {
1683
1537
  }
1684
1538
  drawDraggingColumn(context, state) {
1685
1539
  var _modelColumns$get3;
1686
- var {
1687
- draggingColumn,
1688
- metrics,
1689
- mouseX,
1690
- theme,
1691
- model
1692
- } = state;
1540
+ var draggingColumn = state.draggingColumn,
1541
+ metrics = state.metrics,
1542
+ mouseX = state.mouseX,
1543
+ theme = state.theme,
1544
+ model = state.model;
1693
1545
  if (draggingColumn == null || mouseX == null) {
1694
1546
  return;
1695
1547
  }
1696
- var {
1697
- range: draggingColumnVisibleRange,
1698
- depth: draggingColumnDepth
1699
- } = draggingColumn;
1700
- var {
1701
- gridX,
1702
- gridY,
1703
- allColumnXs,
1704
- allColumnWidths,
1705
- height,
1706
- width,
1707
- columnHeaderMaxDepth,
1708
- columnHeaderHeight,
1709
- movedColumns,
1710
- modelColumns,
1711
- floatingLeftWidth
1712
- } = metrics;
1548
+ var draggingColumnVisibleRange = draggingColumn.range,
1549
+ draggingColumnDepth = draggingColumn.depth;
1550
+ var gridX = metrics.gridX,
1551
+ gridY = metrics.gridY,
1552
+ allColumnXs = metrics.allColumnXs,
1553
+ allColumnWidths = metrics.allColumnWidths,
1554
+ height = metrics.height,
1555
+ width = metrics.width,
1556
+ columnHeaderMaxDepth = metrics.columnHeaderMaxDepth,
1557
+ columnHeaderHeight = metrics.columnHeaderHeight,
1558
+ movedColumns = metrics.movedColumns,
1559
+ modelColumns = metrics.modelColumns,
1560
+ floatingLeftWidth = metrics.floatingLeftWidth;
1713
1561
  var draggingModelIndex = (_modelColumns$get3 = modelColumns.get(draggingColumnVisibleRange[0])) !== null && _modelColumns$get3 !== void 0 ? _modelColumns$get3 : GridUtils.getModelIndex(draggingColumnVisibleRange[0], movedColumns);
1714
1562
  var draggingGroup = model.getColumnHeaderGroup(draggingModelIndex, draggingColumnDepth);
1715
1563
  if (draggingColumnDepth > 0 && !draggingGroup) {
1716
1564
  return;
1717
1565
  }
1718
- var [startIndex, endIndex] = draggingColumnVisibleRange;
1566
+ var _draggingColumnVisibl = _slicedToArray(draggingColumnVisibleRange, 2),
1567
+ startIndex = _draggingColumnVisibl[0],
1568
+ endIndex = _draggingColumnVisibl[1];
1719
1569
  var originalLeft = getOrThrow(allColumnXs, startIndex);
1720
1570
  var originalRight = getOrThrow(allColumnXs, endIndex) + getOrThrow(allColumnWidths, endIndex);
1721
1571
  var originalWidth = originalRight - originalLeft;
1722
1572
  var draggingLeft = draggingColumn.left;
1723
- var {
1724
- backgroundColor,
1725
- font,
1726
- headerFont,
1727
- reorderOffset,
1728
- shadowBlur,
1729
- shadowColor
1730
- } = theme;
1573
+ var backgroundColor = theme.backgroundColor,
1574
+ font = theme.font,
1575
+ headerFont = theme.headerFont,
1576
+ reorderOffset = theme.reorderOffset,
1577
+ shadowBlur = theme.shadowBlur,
1578
+ shadowColor = theme.shadowColor;
1731
1579
  var columnHeaderOffset = (columnHeaderMaxDepth - draggingColumnDepth - 1) * columnHeaderHeight;
1732
1580
  context.save();
1733
1581
  context.translate(gridX, 0);
@@ -1791,33 +1639,27 @@ export class GridRenderer {
1791
1639
  context.restore();
1792
1640
  }
1793
1641
  drawDraggingRow(context, state) {
1794
- var {
1795
- draggingRow,
1796
- draggingRowOffset,
1797
- metrics,
1798
- mouseY,
1799
- theme
1800
- } = state;
1642
+ var draggingRow = state.draggingRow,
1643
+ draggingRowOffset = state.draggingRowOffset,
1644
+ metrics = state.metrics,
1645
+ mouseY = state.mouseY,
1646
+ theme = state.theme;
1801
1647
  if (draggingRow == null || mouseY == null) {
1802
1648
  return;
1803
1649
  }
1804
- var {
1805
- gridX,
1806
- gridY,
1807
- allRowYs,
1808
- allRowHeights,
1809
- width
1810
- } = metrics;
1650
+ var gridX = metrics.gridX,
1651
+ gridY = metrics.gridY,
1652
+ allRowYs = metrics.allRowYs,
1653
+ allRowHeights = metrics.allRowHeights,
1654
+ width = metrics.width;
1811
1655
  var y = getOrThrow(allRowYs, draggingRow);
1812
1656
  var rowHeight = getOrThrow(allRowHeights, draggingRow) + 1;
1813
- var {
1814
- backgroundColor,
1815
- font,
1816
- headerFont,
1817
- reorderOffset,
1818
- shadowBlur,
1819
- shadowColor
1820
- } = theme;
1657
+ var backgroundColor = theme.backgroundColor,
1658
+ font = theme.font,
1659
+ headerFont = theme.headerFont,
1660
+ reorderOffset = theme.reorderOffset,
1661
+ shadowBlur = theme.shadowBlur,
1662
+ shadowColor = theme.shadowColor;
1821
1663
  context.save();
1822
1664
  context.translate(0, gridY);
1823
1665
 
@@ -1849,49 +1691,43 @@ export class GridRenderer {
1849
1691
  context.restore();
1850
1692
  }
1851
1693
  drawScrollBars(context, state) {
1852
- var {
1853
- isDraggingHorizontalScrollBar,
1854
- isDraggingVerticalScrollBar,
1855
- isDragging,
1856
- metrics,
1857
- mouseX,
1858
- mouseY,
1859
- theme
1860
- } = state;
1694
+ var isDraggingHorizontalScrollBar = state.isDraggingHorizontalScrollBar,
1695
+ isDraggingVerticalScrollBar = state.isDraggingVerticalScrollBar,
1696
+ isDragging = state.isDragging,
1697
+ metrics = state.metrics,
1698
+ mouseX = state.mouseX,
1699
+ mouseY = state.mouseY,
1700
+ theme = state.theme;
1861
1701
  if (theme.scrollBarSize <= 0) {
1862
1702
  return;
1863
1703
  }
1864
- var {
1865
- width,
1866
- height,
1867
- handleHeight,
1868
- handleWidth,
1869
- scrollX,
1870
- scrollY,
1871
- hasHorizontalBar,
1872
- hasVerticalBar,
1873
- barWidth,
1874
- barHeight,
1875
- barLeft,
1876
- barTop
1877
- } = metrics;
1878
- var {
1879
- scrollBarBackgroundColor,
1880
- scrollBarHoverBackgroundColor,
1881
- scrollBarCasingColor,
1882
- scrollBarCornerColor,
1883
- scrollBarColor,
1884
- scrollBarHoverColor,
1885
- scrollBarActiveColor,
1886
- scrollBarSize,
1887
- scrollBarHoverSize,
1888
- scrollBarCasingWidth,
1889
- scrollBarSelectionTick,
1890
- scrollBarSelectionTickColor,
1891
- scrollBarActiveSelectionTickColor,
1892
- autoSelectRow,
1893
- autoSelectColumn
1894
- } = theme;
1704
+ var width = metrics.width,
1705
+ height = metrics.height,
1706
+ handleHeight = metrics.handleHeight,
1707
+ handleWidth = metrics.handleWidth,
1708
+ scrollX = metrics.scrollX,
1709
+ scrollY = metrics.scrollY,
1710
+ hasHorizontalBar = metrics.hasHorizontalBar,
1711
+ hasVerticalBar = metrics.hasVerticalBar,
1712
+ barWidth = metrics.barWidth,
1713
+ barHeight = metrics.barHeight,
1714
+ barLeft = metrics.barLeft,
1715
+ barTop = metrics.barTop;
1716
+ var scrollBarBackgroundColor = theme.scrollBarBackgroundColor,
1717
+ scrollBarHoverBackgroundColor = theme.scrollBarHoverBackgroundColor,
1718
+ scrollBarCasingColor = theme.scrollBarCasingColor,
1719
+ scrollBarCornerColor = theme.scrollBarCornerColor,
1720
+ scrollBarColor = theme.scrollBarColor,
1721
+ scrollBarHoverColor = theme.scrollBarHoverColor,
1722
+ scrollBarActiveColor = theme.scrollBarActiveColor,
1723
+ scrollBarSize = theme.scrollBarSize,
1724
+ scrollBarHoverSize = theme.scrollBarHoverSize,
1725
+ scrollBarCasingWidth = theme.scrollBarCasingWidth,
1726
+ scrollBarSelectionTick = theme.scrollBarSelectionTick,
1727
+ scrollBarSelectionTickColor = theme.scrollBarSelectionTickColor,
1728
+ scrollBarActiveSelectionTickColor = theme.scrollBarActiveSelectionTickColor,
1729
+ autoSelectRow = theme.autoSelectRow,
1730
+ autoSelectColumn = theme.autoSelectColumn;
1895
1731
  var isInbounds = mouseX != null && mouseY != null && mouseX <= width && mouseY <= height;
1896
1732
  var isVerticalBarHover = isDraggingVerticalScrollBar || hasVerticalBar && !isDraggingHorizontalScrollBar && !isDragging && mouseX != null && mouseY != null && mouseX >= width - scrollBarHoverSize && mouseY >= barTop && isInbounds;
1897
1733
  var isHorizontalBarHover = isDraggingHorizontalScrollBar || hasHorizontalBar && !isDraggingVerticalScrollBar && !isDragging && !isVerticalBarHover &&
@@ -1931,14 +1767,10 @@ export class GridRenderer {
1931
1767
  if (!autoSelectRow && scrollBarSelectionTick && scrollBarSelectionTickColor != null && scrollBarActiveSelectionTickColor != null) {
1932
1768
  context.fillStyle = scrollBarSelectionTickColor;
1933
1769
  // Scrollbar Selection Tick
1934
- var {
1935
- selectedRanges,
1936
- cursorColumn
1937
- } = state;
1938
- var {
1939
- lastLeft,
1940
- columnCount
1941
- } = metrics;
1770
+ var selectedRanges = state.selectedRanges,
1771
+ cursorColumn = state.cursorColumn;
1772
+ var lastLeft = metrics.lastLeft,
1773
+ columnCount = metrics.columnCount;
1942
1774
  var filteredRanges = [...selectedRanges].filter(value => value.startColumn != null && value.endColumn != null);
1943
1775
  var sortedRanges = filteredRanges.map(value => [value.startColumn, value.endColumn]).sort(GridUtils.compareRanges);
1944
1776
  var mergedRanges = GridUtils.mergeSortedRanges(sortedRanges);
@@ -1993,14 +1825,10 @@ export class GridRenderer {
1993
1825
  context.fillRect(_x5 + scrollBarCasingWidth, _y9, vScrollBarSize - scrollBarCasingWidth, handleHeight);
1994
1826
  if (!autoSelectColumn && scrollBarSelectionTick && scrollBarSelectionTickColor != null && scrollBarActiveSelectionTickColor != null) {
1995
1827
  // Scrollbar Selection Tick
1996
- var {
1997
- selectedRanges: _selectedRanges,
1998
- cursorRow
1999
- } = state;
2000
- var {
2001
- lastTop,
2002
- rowCount
2003
- } = metrics;
1828
+ var _selectedRanges = state.selectedRanges,
1829
+ cursorRow = state.cursorRow;
1830
+ var lastTop = metrics.lastTop,
1831
+ rowCount = metrics.rowCount;
2004
1832
  var getTickY = index => {
2005
1833
  if (index <= lastTop) {
2006
1834
  return index / lastTop * (barHeight - handleHeight);