@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
package/dist/GridUtils.js CHANGED
@@ -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 ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2
8
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3
9
  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; }
@@ -33,18 +39,15 @@ export class GridUtils {
33
39
  };
34
40
  }
35
41
  static getCellInfoFromXY(x, y, metrics) {
36
- var {
37
- row,
38
- column
39
- } = GridUtils.getGridPointFromXY(x, y, metrics);
40
- var {
41
- allColumnWidths,
42
- allRowHeights,
43
- allColumnXs,
44
- allRowYs,
45
- modelColumns,
46
- modelRows
47
- } = metrics;
42
+ var _GridUtils$getGridPoi = GridUtils.getGridPointFromXY(x, y, metrics),
43
+ row = _GridUtils$getGridPoi.row,
44
+ column = _GridUtils$getGridPoi.column;
45
+ var allColumnWidths = metrics.allColumnWidths,
46
+ allRowHeights = metrics.allRowHeights,
47
+ allColumnXs = metrics.allColumnXs,
48
+ allRowYs = metrics.allRowYs,
49
+ modelColumns = metrics.modelColumns,
50
+ modelRows = metrics.modelRows;
48
51
  var modelRow = row !== null ? modelRows.get(row) : null;
49
52
  var modelColumn = column !== null ? modelColumns.get(column) : null;
50
53
  var left = column !== null ? allColumnXs.get(column) : null;
@@ -64,10 +67,8 @@ export class GridUtils {
64
67
  }
65
68
  static getColumnHeaderDepthAtY(y, metrics) {
66
69
  var row = GridUtils.getRowAtY(y, metrics);
67
- var {
68
- columnHeaderHeight,
69
- columnHeaderMaxDepth
70
- } = metrics;
70
+ var columnHeaderHeight = metrics.columnHeaderHeight,
71
+ columnHeaderMaxDepth = metrics.columnHeaderMaxDepth;
71
72
  if (row === null && y <= columnHeaderHeight * columnHeaderMaxDepth) {
72
73
  return clamp(columnHeaderMaxDepth - Math.ceil(y / columnHeaderHeight), 0, columnHeaderMaxDepth - 1);
73
74
  }
@@ -204,15 +205,13 @@ export class GridUtils {
204
205
  */
205
206
  static getColumnAtX(x, metrics) {
206
207
  var ignoreFloating = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
207
- var {
208
- columnCount,
209
- floatingLeftColumnCount,
210
- floatingRightColumnCount,
211
- visibleColumns,
212
- allColumnXs,
213
- allColumnWidths,
214
- gridX
215
- } = metrics;
208
+ var columnCount = metrics.columnCount,
209
+ floatingLeftColumnCount = metrics.floatingLeftColumnCount,
210
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
211
+ visibleColumns = metrics.visibleColumns,
212
+ allColumnXs = metrics.allColumnXs,
213
+ allColumnWidths = metrics.allColumnWidths,
214
+ gridX = metrics.gridX;
216
215
  if (x < gridX) {
217
216
  return null;
218
217
  }
@@ -226,15 +225,13 @@ export class GridUtils {
226
225
  * @returns Index of the row at that coordinate, or null if no row matches
227
226
  */
228
227
  static getRowAtY(y, metrics) {
229
- var {
230
- floatingTopRowCount,
231
- floatingBottomRowCount,
232
- rowCount,
233
- visibleRows,
234
- allRowYs,
235
- allRowHeights,
236
- gridY
237
- } = metrics;
228
+ var floatingTopRowCount = metrics.floatingTopRowCount,
229
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
230
+ rowCount = metrics.rowCount,
231
+ visibleRows = metrics.visibleRows,
232
+ allRowYs = metrics.allRowYs,
233
+ allRowHeights = metrics.allRowHeights,
234
+ gridY = metrics.gridY;
238
235
  if (y < gridY) {
239
236
  return null;
240
237
  }
@@ -270,11 +267,9 @@ export class GridUtils {
270
267
  * @returns Index of the next visible item, or null if no more are visible
271
268
  */
272
269
  static getNextShownColumn(startIndex, metrics) {
273
- var {
274
- modelColumns,
275
- visibleColumns,
276
- userColumnWidths
277
- } = metrics;
270
+ var modelColumns = metrics.modelColumns,
271
+ visibleColumns = metrics.visibleColumns,
272
+ userColumnWidths = metrics.userColumnWidths;
278
273
  return GridUtils.getNextShownItem(startIndex, modelColumns, visibleColumns, userColumnWidths);
279
274
  }
280
275
 
@@ -285,81 +280,81 @@ export class GridUtils {
285
280
  * @returns Index of the next visible item, or null if no more are visible
286
281
  */
287
282
  static getNextShownRow(startIndex, metrics) {
288
- var {
289
- modelRows,
290
- visibleRows,
291
- userRowHeights
292
- } = metrics;
283
+ var modelRows = metrics.modelRows,
284
+ visibleRows = metrics.visibleRows,
285
+ userRowHeights = metrics.userRowHeights;
293
286
  return GridUtils.getNextShownItem(startIndex, modelRows, visibleRows, userRowHeights);
294
287
  }
295
288
 
296
289
  /**
297
- * Check if a separator exists between a column and the next column at a given depth.
290
+ * Determine whether two adjacent columns belong to the same column-header group
291
+ * at the given depth.
298
292
  *
299
- * - At leaf depth (0), every model column is separated from the rest.
300
- * - At deeper depths, separator existence follows column-header-group identity when
301
- * the model exposes groups via `getColumnHeaderGroup`. Distinct group instances
302
- * that happen to share a display name (e.g. pivot Totals groups) are correctly
303
- * treated as separate.
304
- * - When neither side has a declared group, fall back to header-text inequality so
305
- * plain grouped-header models (which express grouping only through repeated text)
306
- * keep their existing behavior.
307
- * - The check is symmetric across the boundary: a separator is drawn at either
308
- * outer edge of a group cell, including the left edge of a group that is preceded
309
- * by an ungrouped column (empty band). Only a boundary with an empty band on
310
- * both sides has no separator.
293
+ * - When the model exposes group instances via `getColumnHeaderGroup`, identity
294
+ * decides: two distinct group instances that happen to share a display name
295
+ * (e.g. pivot Totals groups) are treated as different groups.
296
+ * - When only one side has a declared group, they are different groups.
297
+ * - When neither side has a declared group, fall back to header-text equality so
298
+ * plain grouped-header models (which express grouping only through repeated
299
+ * text) keep their existing behavior.
311
300
  *
312
301
  * @param model The grid model
313
302
  * @param depth The header depth to check at
314
- * @param columnIndex The current model column index
315
- * @param nextColumnIndex The next model column index (undefined for last column)
316
- * @returns true if a separator should be shown, false otherwise
303
+ * @param columnIndex The first model column index
304
+ * @param otherColumnIndex The second model column index
305
+ * @returns true if both columns are part of the same group at this depth
317
306
  */
318
- static hasColumnSeparatorAtDepth(model, depth, columnIndex, nextColumnIndex) {
319
- if (depth == null || columnIndex == null) {
320
- return false;
307
+ static isSameColumnGroupAtDepth(model, depth, columnIndex, otherColumnIndex) {
308
+ var groupA = model.getColumnHeaderGroup(columnIndex, depth);
309
+ var groupB = model.getColumnHeaderGroup(otherColumnIndex, depth);
310
+ if (groupA != null && groupB != null) {
311
+ return groupA === groupB;
321
312
  }
322
-
323
- // Leaf depth: every distinct model column is a physical boundary
324
- if (depth === 0) {
325
- return true;
313
+ if (groupA != null || groupB != null) {
314
+ return false;
326
315
  }
327
316
 
328
- // A header cell is drawn above a column at this depth when the column has a
329
- // declared group or header text. Where no cell is drawn the band is empty.
330
- var groupA = model.getColumnHeaderGroup(columnIndex, depth);
331
- var hasHeaderCellA = groupA != null || model.textForColumnHeader(columnIndex, depth) != null;
332
-
333
- // Right edge of the last column: a separator exists only if a cell is drawn
334
- // above it (otherwise it is the right edge of an empty band).
335
- if (nextColumnIndex == null) {
336
- return hasHeaderCellA;
337
- }
338
- var groupB = model.getColumnHeaderGroup(nextColumnIndex, depth);
339
- var hasHeaderCellB = groupB != null || model.textForColumnHeader(nextColumnIndex, depth) != null;
317
+ // Neither side has a declared group; fall back to text equality
318
+ return model.textForColumnHeader(columnIndex, depth) === model.textForColumnHeader(otherColumnIndex, depth);
319
+ }
340
320
 
341
- // Empty band on both sides: nothing to separate
342
- if (!hasHeaderCellA && !hasHeaderCellB) {
321
+ /**
322
+ * Check if a separator exists between the column at `visibleIndex` and the
323
+ * column immediately after it at a given header depth.
324
+ *
325
+ * - At leaf depth (0), every model column has a separator on its trailing edge.
326
+ * - At deeper depths, separator existence follows column-header-group identity
327
+ * (see {@link isSameColumnGroupAtDepth}). Distinct group instances that share a
328
+ * display name (e.g. pivot Totals groups) are correctly treated as separate.
329
+ * - The true trailing edge of the table (the last column) always has a separator.
330
+ *
331
+ * The next model column is resolved from `visibleIndex + 1` so that an off-screen
332
+ * neighbor is handled correctly and is not mistaken for the table's trailing edge.
333
+ *
334
+ * @param model The grid model
335
+ * @param depth The header depth to check at
336
+ * @param visibleIndex The visible index of the current column
337
+ * @param columnCount The total number of columns in the model
338
+ * @param movedColumns The current column-move operations
339
+ * @returns true if a separator should be shown, false otherwise
340
+ */
341
+ static hasColumnSeparatorAtDepth(model, depth, visibleIndex, columnCount, movedColumns) {
342
+ if (depth == null || visibleIndex == null) {
343
343
  return false;
344
344
  }
345
345
 
346
- // Exactly one side has a header cell: this is an outer edge of a group cell
347
- // (the left edge of a group preceded by an empty band, or the right edge of
348
- // a group followed by one).
349
- if (hasHeaderCellA !== hasHeaderCellB) {
346
+ // True trailing edge of the table
347
+ if (visibleIndex >= columnCount - 1) {
350
348
  return true;
351
349
  }
352
350
 
353
- // Both sides have header cells
354
- if (groupA != null && groupB != null) {
355
- return groupA !== groupB;
356
- }
357
- if (groupA != null || groupB != null) {
351
+ // Leaf depth: every distinct model column is a physical boundary
352
+ if (depth === 0) {
358
353
  return true;
359
354
  }
360
-
361
- // Neither side has a declared group; fall back to text inequality
362
- return model.textForColumnHeader(columnIndex, depth) !== model.textForColumnHeader(nextColumnIndex, depth);
355
+ var columnIndex = GridUtils.getModelIndex(visibleIndex, movedColumns);
356
+ var nextColumnIndex = GridUtils.getModelIndex(visibleIndex + 1, movedColumns);
357
+ return !GridUtils.isSameColumnGroupAtDepth(model, depth, columnIndex, nextColumnIndex);
363
358
  }
364
359
 
365
360
  /**
@@ -372,21 +367,18 @@ export class GridUtils {
372
367
  * @returns Index of the column separator at the coordinates provided, or null if none match
373
368
  */
374
369
  static getColumnSeparatorIndex(x, y, metrics, theme, model) {
375
- var {
376
- rowHeaderWidth,
377
- columnHeaderHeight,
378
- floatingColumns,
379
- floatingLeftWidth,
380
- visibleColumns,
381
- allColumnXs,
382
- allColumnWidths,
383
- columnHeaderMaxDepth,
384
- modelColumns
385
- } = metrics;
386
- var {
387
- allowColumnResize,
388
- headerSeparatorHandleSize
389
- } = theme;
370
+ var rowHeaderWidth = metrics.rowHeaderWidth,
371
+ columnHeaderHeight = metrics.columnHeaderHeight,
372
+ floatingColumns = metrics.floatingColumns,
373
+ floatingLeftWidth = metrics.floatingLeftWidth,
374
+ visibleColumns = metrics.visibleColumns,
375
+ allColumnXs = metrics.allColumnXs,
376
+ allColumnWidths = metrics.allColumnWidths,
377
+ columnHeaderMaxDepth = metrics.columnHeaderMaxDepth,
378
+ columnCount = metrics.columnCount,
379
+ movedColumns = metrics.movedColumns;
380
+ var allowColumnResize = theme.allowColumnResize,
381
+ headerSeparatorHandleSize = theme.headerSeparatorHandleSize;
390
382
  if (columnHeaderMaxDepth * columnHeaderHeight < y || !allowColumnResize || headerSeparatorHandleSize <= 0) {
391
383
  return null;
392
384
  }
@@ -411,7 +403,7 @@ export class GridUtils {
411
403
  }
412
404
  var minX = midX - halfSeparatorSize;
413
405
  var maxX = midX + halfSeparatorSize;
414
- if (minX <= gridX && gridX <= maxX && GridUtils.hasColumnSeparatorAtDepth(model, depth, modelColumns.get(column), modelColumns.get(column + 1))) {
406
+ if (minX <= gridX && gridX <= maxX && GridUtils.hasColumnSeparatorAtDepth(model, depth, column, columnCount, movedColumns)) {
415
407
  return column;
416
408
  }
417
409
  isPreviousColumnHidden = isColumnHidden;
@@ -440,7 +432,7 @@ export class GridUtils {
440
432
  }
441
433
  var _minX = _midX - halfSeparatorSize;
442
434
  var _maxX = _midX + halfSeparatorSize;
443
- if (_minX <= gridX && gridX <= _maxX && GridUtils.hasColumnSeparatorAtDepth(model, depth, modelColumns.get(_column), modelColumns.get(_column + 1))) {
435
+ if (_minX <= gridX && gridX <= _maxX && GridUtils.hasColumnSeparatorAtDepth(model, depth, _column, columnCount, movedColumns)) {
444
436
  return _column;
445
437
  }
446
438
  isPreviousColumnHidden = _isColumnHidden;
@@ -466,9 +458,7 @@ export class GridUtils {
466
458
  * @returns True if the column is hidden, false otherwise
467
459
  */
468
460
  static isColumnHidden(columnIndex, metrics) {
469
- var {
470
- allColumnWidths
471
- } = metrics;
461
+ var allColumnWidths = metrics.allColumnWidths;
472
462
  return GridUtils.isItemHidden(columnIndex, allColumnWidths);
473
463
  }
474
464
 
@@ -482,11 +472,9 @@ export class GridUtils {
482
472
  if (row == null) {
483
473
  return false;
484
474
  }
485
- var {
486
- floatingTopRowCount,
487
- floatingBottomRowCount,
488
- rowCount
489
- } = metrics;
475
+ var floatingTopRowCount = metrics.floatingTopRowCount,
476
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
477
+ rowCount = metrics.rowCount;
490
478
  return row < floatingTopRowCount || row >= rowCount - floatingBottomRowCount;
491
479
  }
492
480
 
@@ -500,11 +488,9 @@ export class GridUtils {
500
488
  if (column == null) {
501
489
  return false;
502
490
  }
503
- var {
504
- floatingLeftColumnCount,
505
- floatingRightColumnCount,
506
- columnCount
507
- } = metrics;
491
+ var floatingLeftColumnCount = metrics.floatingLeftColumnCount,
492
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
493
+ columnCount = metrics.columnCount;
508
494
  return column < floatingLeftColumnCount || column >= columnCount - floatingRightColumnCount;
509
495
  }
510
496
 
@@ -539,10 +525,8 @@ export class GridUtils {
539
525
  * @returns Array of items that are hidden
540
526
  */
541
527
  static getHiddenColumns(columnIndex, metrics) {
542
- var {
543
- visibleColumns,
544
- allColumnWidths
545
- } = metrics;
528
+ var visibleColumns = metrics.visibleColumns,
529
+ allColumnWidths = metrics.allColumnWidths;
546
530
  return GridUtils.getHiddenItems(columnIndex, allColumnWidths, visibleColumns);
547
531
  }
548
532
 
@@ -555,17 +539,13 @@ export class GridUtils {
555
539
  * @returns Index of the row separator at the coordinates provided, or null if none match
556
540
  */
557
541
  static getRowSeparatorIndex(x, y, metrics, theme) {
558
- var {
559
- rowHeaderWidth,
560
- columnHeaderHeight,
561
- visibleRows,
562
- allRowYs,
563
- allRowHeights
564
- } = metrics;
565
- var {
566
- allowRowResize,
567
- headerSeparatorHandleSize
568
- } = theme;
542
+ var rowHeaderWidth = metrics.rowHeaderWidth,
543
+ columnHeaderHeight = metrics.columnHeaderHeight,
544
+ visibleRows = metrics.visibleRows,
545
+ allRowYs = metrics.allRowYs,
546
+ allRowHeights = metrics.allRowHeights;
547
+ var allowRowResize = theme.allowRowResize,
548
+ headerSeparatorHandleSize = theme.headerSeparatorHandleSize;
569
549
  if (rowHeaderWidth < x || !allowRowResize || headerSeparatorHandleSize <= 0) {
570
550
  return null;
571
551
  }
@@ -605,9 +585,7 @@ export class GridUtils {
605
585
  * @returns True if the row is hidden, false otherwise
606
586
  */
607
587
  static isRowHidden(rowIndex, metrics) {
608
- var {
609
- allRowHeights
610
- } = metrics;
588
+ var allRowHeights = metrics.allRowHeights;
611
589
  return GridUtils.isItemHidden(rowIndex, allRowHeights);
612
590
  }
613
591
 
@@ -618,10 +596,8 @@ export class GridUtils {
618
596
  * @returns Array of items that are hidden
619
597
  */
620
598
  static getHiddenRows(rowIndex, metrics) {
621
- var {
622
- visibleRows,
623
- allRowHeights
624
- } = metrics;
599
+ var visibleRows = metrics.visibleRows,
600
+ allRowHeights = metrics.allRowHeights;
625
601
  return GridUtils.getHiddenItems(rowIndex, allRowHeights, visibleRows);
626
602
  }
627
603
 
@@ -733,15 +709,15 @@ export class GridUtils {
733
709
  var reverse = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
734
710
  var result = [[start, end]];
735
711
  var _loop = function _loop() {
736
- var {
737
- from: fromItemOrRange,
738
- to: toItem
739
- } = movedItems[i];
712
+ var _movedItems$i = movedItems[i],
713
+ fromItemOrRange = _movedItems$i.from,
714
+ toItem = _movedItems$i.to;
740
715
  var length = 1;
741
716
  var fromItem;
742
717
  if (isBoundedAxisRange(fromItemOrRange)) {
743
718
  length = fromItemOrRange[1] - fromItemOrRange[0] + 1; // Ranges are inclusive
744
- [fromItem] = fromItemOrRange;
719
+ var _fromItemOrRange = _slicedToArray(fromItemOrRange, 1);
720
+ fromItem = _fromItemOrRange[0];
745
721
  } else {
746
722
  fromItem = fromItemOrRange;
747
723
  }
@@ -755,17 +731,23 @@ export class GridUtils {
755
731
  var currentStart = (_result$j$ = result[j][0]) !== null && _result$j$ !== void 0 ? _result$j$ : Number.NEGATIVE_INFINITY;
756
732
  var currentEnd = (_result$j$2 = result[j][1]) !== null && _result$j$2 !== void 0 ? _result$j$2 : Number.POSITIVE_INFINITY;
757
733
  var movedRange;
758
- var currentResult = [[currentStart, fromStart - 1], [fromStart, fromEnd], [fromEnd + 1, currentEnd]].map(_ref2 => {
759
- var [s, e] = _ref2;
734
+ var currentResult = [[currentStart, fromStart - 1], [fromStart, fromEnd], [fromEnd + 1, currentEnd]].map(_ref3 => {
735
+ var _ref4 = _slicedToArray(_ref3, 2),
736
+ s = _ref4[0],
737
+ e = _ref4[1];
760
738
  return [
761
739
  // Cap the ranges to within the current range bounds
762
740
  Math.max(s, currentStart), Math.min(e, currentEnd)];
763
- }).filter(_ref3 => {
764
- var [s, e] = _ref3;
741
+ }).filter(_ref5 => {
742
+ var _ref6 = _slicedToArray(_ref5, 2),
743
+ s = _ref6[0],
744
+ e = _ref6[1];
765
745
  return s <= e;
766
746
  }) // Remove invalid ranges
767
747
  .map(range => {
768
- var [s, e] = range;
748
+ var _range = _slicedToArray(range, 2),
749
+ s = _range[0],
750
+ e = _range[1];
769
751
  if (fromStart <= s && fromEnd >= e) {
770
752
  // Current range in moved range
771
753
  movedRange = [s + moveDistance, e + moveDistance];
@@ -777,7 +759,9 @@ export class GridUtils {
777
759
  }
778
760
  return range;
779
761
  }).map(range => {
780
- var [s, e] = range;
762
+ var _range2 = _slicedToArray(range, 2),
763
+ s = _range2[0],
764
+ e = _range2[1];
781
765
  if (toStart > s && toStart <= e) {
782
766
  // Moved range splits this range
783
767
  return [[s, toStart - 1], [toStart + length, e + length]];
@@ -800,7 +784,9 @@ export class GridUtils {
800
784
 
801
785
  // Return infinity values back to null
802
786
  result = nextResult.map(_ref => {
803
- var [s, e] = _ref;
787
+ var _ref2 = _slicedToArray(_ref, 2),
788
+ s = _ref2[0],
789
+ e = _ref2[1];
804
790
  return [Number.isFinite(s) ? s : null, Number.isFinite(e) ? e : null];
805
791
  });
806
792
  };
@@ -973,9 +959,7 @@ export class GridUtils {
973
959
  * @returns True if this platform is a Mac, false otherwise
974
960
  */
975
961
  static isMacPlatform() {
976
- var {
977
- platform
978
- } = window.navigator;
962
+ var platform = window.navigator.platform;
979
963
  return platform.startsWith('Mac');
980
964
  }
981
965
 
@@ -1032,22 +1016,20 @@ export class GridUtils {
1032
1016
  * @returns Dimensions of the drag area in relation to the canvas they need to drag outside of to start scrolling
1033
1017
  */
1034
1018
  static getScrollDragBounds(metrics, row, column) {
1035
- var {
1036
- gridX,
1037
- gridY,
1038
- width,
1039
- height,
1040
- floatingTopRowCount,
1041
- floatingBottomRowCount,
1042
- floatingLeftColumnCount,
1043
- floatingRightColumnCount,
1044
- floatingLeftWidth,
1045
- floatingRightWidth,
1046
- floatingTopHeight,
1047
- floatingBottomHeight,
1048
- columnCount,
1049
- rowCount
1050
- } = metrics;
1019
+ var gridX = metrics.gridX,
1020
+ gridY = metrics.gridY,
1021
+ width = metrics.width,
1022
+ height = metrics.height,
1023
+ floatingTopRowCount = metrics.floatingTopRowCount,
1024
+ floatingBottomRowCount = metrics.floatingBottomRowCount,
1025
+ floatingLeftColumnCount = metrics.floatingLeftColumnCount,
1026
+ floatingRightColumnCount = metrics.floatingRightColumnCount,
1027
+ floatingLeftWidth = metrics.floatingLeftWidth,
1028
+ floatingRightWidth = metrics.floatingRightWidth,
1029
+ floatingTopHeight = metrics.floatingTopHeight,
1030
+ floatingBottomHeight = metrics.floatingBottomHeight,
1031
+ columnCount = metrics.columnCount,
1032
+ rowCount = metrics.rowCount;
1051
1033
  var x1 = gridX;
1052
1034
  var y1 = gridY;
1053
1035
  var x2 = width;
@@ -1091,10 +1073,8 @@ export class GridUtils {
1091
1073
  var pageHeight = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 768;
1092
1074
  var lineWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 20;
1093
1075
  var lineHeight = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 20;
1094
- var {
1095
- deltaX,
1096
- deltaY
1097
- } = wheelEvent;
1076
+ var deltaX = wheelEvent.deltaX,
1077
+ deltaY = wheelEvent.deltaY;
1098
1078
 
1099
1079
  // Flip scroll direction if shiftKey is held on windows/linux.
1100
1080
  // On mac, deltaX/Y values are switched at the event level when shiftKey=true.
@@ -1165,20 +1145,16 @@ export class GridUtils {
1165
1145
  * @returns The token box with translated coordinates
1166
1146
  */
1167
1147
  static translateTokenBox(tokenBox, metrics) {
1168
- var {
1169
- x1: left,
1170
- y1: top,
1171
- x2: right,
1172
- y2: bottom
1173
- } = tokenBox;
1174
- var {
1175
- gridX,
1176
- gridY,
1177
- width: gridWidth,
1178
- height: gridHeight,
1179
- verticalBarWidth,
1180
- horizontalBarHeight
1181
- } = metrics;
1148
+ var left = tokenBox.x1,
1149
+ top = tokenBox.y1,
1150
+ right = tokenBox.x2,
1151
+ bottom = tokenBox.y2;
1152
+ var gridX = metrics.gridX,
1153
+ gridY = metrics.gridY,
1154
+ gridWidth = metrics.width,
1155
+ gridHeight = metrics.height,
1156
+ verticalBarWidth = metrics.verticalBarWidth,
1157
+ horizontalBarHeight = metrics.horizontalBarHeight;
1182
1158
 
1183
1159
  // Clamp the values within the grid
1184
1160
  var newLeft = clamp(gridX + left, gridX, gridWidth - verticalBarWidth);
@@ -1205,25 +1181,19 @@ export class GridUtils {
1205
1181
  * @returns Object with width, x, and y of the text
1206
1182
  */
1207
1183
  static getTextRenderMetrics(state, column, row) {
1208
- var {
1209
- metrics,
1210
- model,
1211
- theme
1212
- } = state;
1213
- var {
1214
- firstColumn,
1215
- allColumnXs,
1216
- allColumnWidths,
1217
- allRowYs,
1218
- allRowHeights,
1219
- modelRows,
1220
- modelColumns
1221
- } = metrics;
1222
- var {
1223
- cellHorizontalPadding,
1224
- treeDepthIndent,
1225
- treeHorizontalPadding
1226
- } = theme;
1184
+ var metrics = state.metrics,
1185
+ model = state.model,
1186
+ theme = state.theme;
1187
+ var firstColumn = metrics.firstColumn,
1188
+ allColumnXs = metrics.allColumnXs,
1189
+ allColumnWidths = metrics.allColumnWidths,
1190
+ allRowYs = metrics.allRowYs,
1191
+ allRowHeights = metrics.allRowHeights,
1192
+ modelRows = metrics.modelRows,
1193
+ modelColumns = metrics.modelColumns;
1194
+ var cellHorizontalPadding = theme.cellHorizontalPadding,
1195
+ treeDepthIndent = theme.treeDepthIndent,
1196
+ treeHorizontalPadding = theme.treeHorizontalPadding;
1227
1197
  var modelRow = getOrThrow(modelRows, row);
1228
1198
  var modelColumn = getOrThrow(modelColumns, column);
1229
1199
  var textAlign = model.textAlignForCell(modelColumn, modelRow);