@deephaven/grid 0.15.1 → 0.15.2

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 (62) hide show
  1. package/dist/ColumnHeaderGroup.d.ts +9 -0
  2. package/dist/ColumnHeaderGroup.d.ts.map +1 -0
  3. package/dist/ColumnHeaderGroup.js +2 -0
  4. package/dist/ColumnHeaderGroup.js.map +1 -0
  5. package/dist/Grid.d.ts +5 -4
  6. package/dist/Grid.d.ts.map +1 -1
  7. package/dist/Grid.js +5 -6
  8. package/dist/Grid.js.map +1 -1
  9. package/dist/GridAxisRange.d.ts +10 -0
  10. package/dist/GridAxisRange.d.ts.map +1 -0
  11. package/dist/GridAxisRange.js +17 -0
  12. package/dist/GridAxisRange.js.map +1 -0
  13. package/dist/GridMetricCalculator.d.ts +10 -8
  14. package/dist/GridMetricCalculator.d.ts.map +1 -1
  15. package/dist/GridMetricCalculator.js +38 -16
  16. package/dist/GridMetricCalculator.js.map +1 -1
  17. package/dist/GridMetrics.d.ts +8 -4
  18. package/dist/GridMetrics.d.ts.map +1 -1
  19. package/dist/GridModel.d.ts +20 -2
  20. package/dist/GridModel.d.ts.map +1 -1
  21. package/dist/GridModel.js +30 -2
  22. package/dist/GridModel.js.map +1 -1
  23. package/dist/GridMouseHandler.d.ts +0 -1
  24. package/dist/GridMouseHandler.d.ts.map +1 -1
  25. package/dist/GridRenderer.d.ts +33 -6
  26. package/dist/GridRenderer.d.ts.map +1 -1
  27. package/dist/GridRenderer.js +428 -179
  28. package/dist/GridRenderer.js.map +1 -1
  29. package/dist/GridUtils.d.ts +34 -24
  30. package/dist/GridUtils.d.ts.map +1 -1
  31. package/dist/GridUtils.js +99 -61
  32. package/dist/GridUtils.js.map +1 -1
  33. package/dist/MockGridModel.d.ts +1 -1
  34. package/dist/MockGridModel.d.ts.map +1 -1
  35. package/dist/MockGridModel.js +1 -0
  36. package/dist/MockGridModel.js.map +1 -1
  37. package/dist/MockTreeGridModel.d.ts +0 -1
  38. package/dist/MockTreeGridModel.d.ts.map +1 -1
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +2 -0
  42. package/dist/index.js.map +1 -1
  43. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts +44 -4
  44. package/dist/mouse-handlers/GridColumnMoveMouseHandler.d.ts.map +1 -1
  45. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +486 -80
  46. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  47. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts +7 -5
  48. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.d.ts.map +1 -1
  49. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +26 -14
  50. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  51. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts +7 -5
  52. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.d.ts.map +1 -1
  53. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +11 -14
  54. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  55. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts +11 -4
  56. package/dist/mouse-handlers/GridSeparatorMouseHandler.d.ts.map +1 -1
  57. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +41 -31
  58. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  59. package/dist/mouse-handlers/index.d.ts +1 -0
  60. package/dist/mouse-handlers/index.js +1 -0
  61. package/dist/mouse-handlers/index.js.map +1 -1
  62. package/package.json +3 -3
@@ -1,21 +1,16 @@
1
1
  import React from 'react';
2
2
  import GridRange, { GridRangeIndex } from './GridRange';
3
- import { BoxCoordinates, Coordinate, CoordinateMap, VisibleIndex, IndexModelMap, ModelIndex, ModelSizeMap, MoveOperation, SizeMap } from './GridMetrics';
3
+ import { BoxCoordinates, Coordinate, CoordinateMap, VisibleIndex, VisibleToModelMap, ModelIndex, ModelSizeMap, MoveOperation, SizeMap } from './GridMetrics';
4
4
  import type { GridMetrics } from './GridMetrics';
5
5
  import { GridTheme } from './GridTheme';
6
6
  import { GridWheelEvent } from './GridMouseHandler';
7
- declare type Range<T> = [start: T, end: T];
8
- export declare type AxisRange = Range<GridRangeIndex>;
9
- export declare type BoundedAxisRange = Range<VisibleIndex>;
10
- export declare function isAxisRange(range: unknown): range is AxisRange;
11
- export declare function assertAxisRange(range: unknown): asserts range is AxisRange;
12
- export declare function isBoundedAxisRange(range: unknown): range is BoundedAxisRange;
13
- export declare function assertBoundedAxisRange(range: unknown): asserts range is BoundedAxisRange;
7
+ import { AxisRange, BoundedAxisRange, Range } from './GridAxisRange';
14
8
  export declare type GridPoint = {
15
9
  x: Coordinate;
16
10
  y: Coordinate;
17
11
  column: GridRangeIndex;
18
12
  row: GridRangeIndex;
13
+ columnHeaderDepth?: number;
19
14
  };
20
15
  export interface CellInfo {
21
16
  row: VisibleIndex | null;
@@ -39,6 +34,7 @@ export declare class GridUtils {
39
34
  */
40
35
  static getGridPointFromXY(x: Coordinate, y: Coordinate, metrics: GridMetrics): GridPoint;
41
36
  static getCellInfoFromXY(x: Coordinate, y: Coordinate, metrics: GridMetrics): CellInfo;
37
+ static getColumnHeaderDepthAtY(y: Coordinate, metrics: GridMetrics): number | undefined;
42
38
  /**
43
39
  * Iterate through each floating item at the start and call a callback, returning the first result
44
40
  * @param start The count of floating items at the start
@@ -95,14 +91,14 @@ export declare class GridUtils {
95
91
  * @param itemSizes The size of each item
96
92
  * @returns The item index, or null if no item matches
97
93
  */
98
- static getItemAtOffset(offset: Coordinate, itemCount: number, floatingStart: number, floatingEnd: number, items: VisibleIndex[], itemCoordinates: CoordinateMap, itemSizes: SizeMap): VisibleIndex | null;
94
+ static getItemAtOffset(offset: Coordinate, itemCount: number, floatingStart: number, floatingEnd: number, items: VisibleIndex[], itemCoordinates: CoordinateMap, itemSizes: SizeMap, ignoreFloating?: boolean): VisibleIndex | null;
99
95
  /**
100
96
  * Get the index of the column at the specified x coordinate
101
97
  * @param x Coordinate to get the item of
102
98
  * @param metrics Grid metrics
103
99
  * @returns Index of the column at that coordinate, or null if no column matches
104
100
  */
105
- static getColumnAtX(x: Coordinate, metrics: GridMetrics): VisibleIndex | null;
101
+ static getColumnAtX(x: Coordinate, metrics: GridMetrics, ignoreFloating?: boolean): VisibleIndex | null;
106
102
  /**
107
103
  * Get the index of the row at the specified y coordinate
108
104
  * @param y Coordinate to get the item of
@@ -118,7 +114,7 @@ export declare class GridUtils {
118
114
  * @param userSizes The user set sizes
119
115
  * @returns Index of the next visible item, or null if no more are visible
120
116
  */
121
- static getNextShownItem(startIndex: VisibleIndex, modelIndexes: IndexModelMap, visibleItems: VisibleIndex[], userSizes: ModelSizeMap): VisibleIndex | null;
117
+ static getNextShownItem(startIndex: VisibleIndex, modelIndexes: VisibleToModelMap, visibleItems: VisibleIndex[], userSizes: ModelSizeMap): VisibleIndex | null;
122
118
  /**
123
119
  * Iterate backward through the visible columns until a shown column is hit
124
120
  * @param columnIndex The column index to start iterating backward from
@@ -212,11 +208,11 @@ export declare class GridUtils {
212
208
  /**
213
209
  * Set a new order for items in the grid
214
210
  * @param from The visible index to move from
215
- * @param to The visible index to move the itme to
211
+ * @param to The visible index to move the item to
216
212
  * @param oldMovedItems The old reordered items
217
213
  * @returns The new reordered items
218
214
  */
219
- static moveItem(from: VisibleIndex, to: VisibleIndex, oldMovedItems?: MoveOperation[]): MoveOperation[];
215
+ static moveItem(from: VisibleIndex, to: VisibleIndex, oldMovedItems: MoveOperation[]): MoveOperation[];
220
216
  /**
221
217
  * Move a visible range in the grid
222
218
  *
@@ -229,14 +225,7 @@ export declare class GridUtils {
229
225
  * @param oldMovedItems The old reordered items
230
226
  * @returns The new reordered items
231
227
  */
232
- static moveRange(from: BoundedAxisRange, to: VisibleIndex, oldMovedItems?: MoveOperation[]): MoveOperation[];
233
- /**
234
- * Retrieve the model index given the currently moved items
235
- * @param visibleIndex The visible index of the item to get the model index for
236
- * @param movedItems The moved items
237
- * @returns The model index of the item
238
- */
239
- static getModelIndex(visibleIndex: VisibleIndex, movedItems?: MoveOperation[]): ModelIndex;
228
+ static moveRange(from: BoundedAxisRange, to: VisibleIndex, oldMovedItems: MoveOperation[]): MoveOperation[];
240
229
  /**
241
230
  * Applies the items moves to the AxisRange
242
231
  * @param start The start index of the range
@@ -245,7 +234,7 @@ export declare class GridUtils {
245
234
  * @param reverse If the moved items should be applied in reverse (this reverses the effects of the moves)
246
235
  * @returns A list of AxisRanges in the translated space. Possibly multiple non-continuous ranges
247
236
  */
248
- private static applyItemMoves;
237
+ static applyItemMoves<T extends number | GridRangeIndex>(start: T, end: T, movedItems: MoveOperation[], reverse?: boolean): Range<T>[];
249
238
  /**
250
239
  * Applies the items moves to the givengrid range
251
240
  * @param range The grid range to translate
@@ -255,6 +244,20 @@ export declare class GridUtils {
255
244
  * @returns A list of grid ranges in the translated space. Possibly multiple non-continuous ranges
256
245
  */
257
246
  static translateRange(range: GridRange, movedColumns: MoveOperation[], movedRows: MoveOperation[], reverse: boolean): GridRange[];
247
+ /**
248
+ * Retrieve the model index given the currently moved items
249
+ * @param visibleIndex The visible index of the item to get the model index for
250
+ * @param movedItems The moved items
251
+ * @returns The model index of the item
252
+ */
253
+ static getModelIndex(visibleIndex: VisibleIndex, movedItems: MoveOperation[]): ModelIndex;
254
+ /**
255
+ * Retrieve the model indexes given the currently moved items
256
+ * @param visibleIndexes The visible indexes of the item to get the model indexes for
257
+ * @param movedItems The moved items
258
+ * @returns The model indexes of the item
259
+ */
260
+ static getModelIndexes(visibleIndexes: ModelIndex[], movedItems: MoveOperation[]): VisibleIndex[];
258
261
  /**
259
262
  * Translate the provided UI start/end indexes to the model start/end indexes by applying the `movedItems` transformations.
260
263
  * Since moved items can split apart a range, multiple pairs of indexes are returned
@@ -296,7 +299,7 @@ export declare class GridUtils {
296
299
  */
297
300
  static getVisibleRangeIndexes(start: GridRangeIndex, end: GridRangeIndex, movedItems: MoveOperation[]): AxisRange[];
298
301
  /**
299
- * Translate the provided UI range into model range, using the `movedColumns` and `movedRows` to apply the necessary transforms.
302
+ * Translate the provided UI range into visible range, using the `movedColumns` and `movedRows` to apply the necessary transforms.
300
303
  * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items
301
304
  *
302
305
  * @param uiRange The currently selected UI ranges
@@ -321,7 +324,14 @@ export declare class GridUtils {
321
324
  * @param movedItems Moved items
322
325
  * @returns The visible index of the item
323
326
  */
324
- static getVisibleIndex(modelIndex: ModelIndex, movedItems?: MoveOperation[]): VisibleIndex;
327
+ static getVisibleIndex(modelIndex: ModelIndex, movedItems: MoveOperation[]): VisibleIndex;
328
+ /**
329
+ * Retrieve the visible indexes given the currently moved items
330
+ * @param modelIndexes The model indexes to get the visible indexes for
331
+ * @param movedItems Moved items
332
+ * @returns The visible indexes of the item
333
+ */
334
+ static getVisibleIndexes(modelIndexes: ModelIndex[], movedItems: MoveOperation[]): VisibleIndex[];
325
335
  /**
326
336
  * Check if the current platform is Mac
327
337
  * @returns True if this platform is a Mac, false otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"GridUtils.d.ts","sourceRoot":"","sources":["../src/GridUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GridUtils.d.ts","sourceRoot":"","sources":["../src/GridUtils.ts"],"names":[],"mappings":"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"}
package/dist/GridUtils.js CHANGED
@@ -4,23 +4,9 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
4
4
 
5
5
  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; }
6
6
 
7
+ import clamp from 'lodash.clamp';
7
8
  import GridRange from "./GridRange.js";
8
- export function isAxisRange(range) {
9
- return Array.isArray(range) && range.length === 2 && (range[0] === null || typeof range[0] === 'number') && (range[1] === null || typeof range[1] === 'number');
10
- }
11
- export function assertAxisRange(range) {
12
- if (!isAxisRange(range)) {
13
- throw new Error("Expected axis range. Received: ".concat(range));
14
- }
15
- }
16
- export function isBoundedAxisRange(range) {
17
- return isAxisRange(range) && range[0] != null && range[1] != null;
18
- }
19
- export function assertBoundedAxisRange(range) {
20
- if (!isBoundedAxisRange(range)) {
21
- throw new Error("Expected bounded axis range. Received: ".concat(range));
22
- }
23
- }
9
+ import { isBoundedAxisRange } from "./GridAxisRange.js";
24
10
  export class GridUtils {
25
11
  // use same constant as chrome source for windows
26
12
  // https://github.com/chromium/chromium/blob/973af9d461b6b5dc60208c8d3d66adc27e53da78/ui/events/blink/web_input_event_builders_win.cc#L285
@@ -35,11 +21,13 @@ export class GridUtils {
35
21
  static getGridPointFromXY(x, y, metrics) {
36
22
  var column = GridUtils.getColumnAtX(x, metrics);
37
23
  var row = GridUtils.getRowAtY(y, metrics);
24
+ var columnHeaderDepth = GridUtils.getColumnHeaderDepthAtY(y, metrics);
38
25
  return {
39
26
  x,
40
27
  y,
41
28
  row,
42
- column
29
+ column,
30
+ columnHeaderDepth
43
31
  };
44
32
  }
45
33
 
@@ -73,6 +61,20 @@ export class GridUtils {
73
61
  rowHeight: rowHeight !== null && rowHeight !== void 0 ? rowHeight : null
74
62
  };
75
63
  }
64
+
65
+ static getColumnHeaderDepthAtY(y, metrics) {
66
+ var row = GridUtils.getRowAtY(y, metrics);
67
+ var {
68
+ columnHeaderHeight,
69
+ columnHeaderMaxDepth
70
+ } = metrics;
71
+
72
+ if (row === null && y <= columnHeaderHeight * columnHeaderMaxDepth) {
73
+ return clamp(columnHeaderMaxDepth - Math.ceil(y / columnHeaderHeight), 0, columnHeaderMaxDepth - 1);
74
+ }
75
+
76
+ return undefined;
77
+ }
76
78
  /**
77
79
  * Iterate through each floating item at the start and call a callback, returning the first result
78
80
  * @param start The count of floating items at the start
@@ -194,7 +196,8 @@ export class GridUtils {
194
196
 
195
197
 
196
198
  static getItemAtOffset(offset, itemCount, floatingStart, floatingEnd, items, itemCoordinates, itemSizes) {
197
- var floatingItem = GridUtils.iterateFloating(floatingStart, floatingEnd, itemCount, item => {
199
+ var ignoreFloating = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : false;
200
+ var floatingItem = ignoreFloating ? undefined : GridUtils.iterateFloating(floatingStart, floatingEnd, itemCount, item => {
198
201
  if (GridUtils.isInItem(item, itemCoordinates, itemSizes, offset)) {
199
202
  return item;
200
203
  }
@@ -202,7 +205,7 @@ export class GridUtils {
202
205
  return undefined;
203
206
  });
204
207
 
205
- if (floatingItem !== undefined) {
208
+ if (!ignoreFloating && floatingItem !== undefined) {
206
209
  return floatingItem;
207
210
  }
208
211
 
@@ -225,6 +228,7 @@ export class GridUtils {
225
228
 
226
229
 
227
230
  static getColumnAtX(x, metrics) {
231
+ var ignoreFloating = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
228
232
  var {
229
233
  columnCount,
230
234
  floatingLeftColumnCount,
@@ -239,7 +243,7 @@ export class GridUtils {
239
243
  return null;
240
244
  }
241
245
 
242
- return this.getItemAtOffset(x - gridX, columnCount, floatingLeftColumnCount, floatingRightColumnCount, visibleColumns, visibleColumnXs, visibleColumnWidths);
246
+ return this.getItemAtOffset(x - gridX, columnCount, floatingLeftColumnCount, floatingRightColumnCount, visibleColumns, visibleColumnXs, visibleColumnWidths, ignoreFloating);
243
247
  }
244
248
  /**
245
249
  * Get the index of the row at the specified y coordinate
@@ -343,14 +347,15 @@ export class GridUtils {
343
347
  floatingLeftWidth,
344
348
  visibleColumns,
345
349
  visibleColumnXs,
346
- visibleColumnWidths
350
+ visibleColumnWidths,
351
+ columnHeaderMaxDepth
347
352
  } = metrics;
348
353
  var {
349
354
  allowColumnResize,
350
355
  headerSeparatorHandleSize
351
356
  } = theme;
352
357
 
353
- if (columnHeaderHeight < y || !allowColumnResize || headerSeparatorHandleSize <= 0) {
358
+ if (columnHeaderMaxDepth * columnHeaderHeight < y || !allowColumnResize || headerSeparatorHandleSize <= 0) {
354
359
  return null;
355
360
  }
356
361
 
@@ -633,25 +638,30 @@ export class GridUtils {
633
638
  /**
634
639
  * Set a new order for items in the grid
635
640
  * @param from The visible index to move from
636
- * @param to The visible index to move the itme to
641
+ * @param to The visible index to move the item to
637
642
  * @param oldMovedItems The old reordered items
638
643
  * @returns The new reordered items
639
644
  */
640
645
 
641
646
 
642
- static moveItem(from, to) {
643
- var oldMovedItems = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
644
-
647
+ static moveItem(from, to, oldMovedItems) {
645
648
  if (from === to) {
646
649
  return oldMovedItems;
647
650
  }
648
651
 
649
652
  var movedItems = [...oldMovedItems];
653
+ var lastMovedItem = movedItems[movedItems.length - 1]; // Check if we should combine with the previous move
654
+ // E.g. 1 -> 2, 2 -> 3 can just be 1 -> 3
650
655
 
651
- if (movedItems.length > 0 && movedItems[movedItems.length - 1].to === from) {
652
- movedItems[movedItems.length - 1] = _objectSpread(_objectSpread({}, movedItems[movedItems.length - 1]), {}, {
653
- to
654
- });
656
+ if (lastMovedItem && !isBoundedAxisRange(lastMovedItem.from) && lastMovedItem.to === from) {
657
+ // Remove the move if it is now a no-op
658
+ if (lastMovedItem.from === to) {
659
+ movedItems.pop();
660
+ } else {
661
+ movedItems[movedItems.length - 1] = _objectSpread(_objectSpread({}, lastMovedItem), {}, {
662
+ to
663
+ });
664
+ }
655
665
  } else {
656
666
  movedItems.push({
657
667
  from,
@@ -675,42 +685,37 @@ export class GridUtils {
675
685
  */
676
686
 
677
687
 
678
- static moveRange(from, to) {
679
- var oldMovedItems = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
680
-
688
+ static moveRange(from, to, oldMovedItems) {
681
689
  if (from[0] === to) {
682
690
  return oldMovedItems;
683
691
  }
684
692
 
685
693
  var movedItems = [...oldMovedItems];
686
- var lastMovedItem = movedItems[movedItems.length - 1];
694
+ var lastMovedItem = movedItems[movedItems.length - 1]; // Check if we should combine with the previous move
695
+ // E.g. [1, 2] -> 2, [2, 3] -> 3 can just be [1, 2] -> 3
687
696
 
688
697
  if (lastMovedItem && isBoundedAxisRange(lastMovedItem.from) && lastMovedItem.from[1] - lastMovedItem.from[0] === from[1] - from[0] && lastMovedItem.to === from[0]) {
689
- movedItems[movedItems.length - 1] = _objectSpread(_objectSpread({}, movedItems[movedItems.length - 1]), {}, {
690
- to
691
- });
698
+ // Remove the move if it is now a no-op
699
+ if (lastMovedItem.from[0] === to) {
700
+ movedItems.pop();
701
+ } else {
702
+ movedItems[movedItems.length - 1] = _objectSpread(_objectSpread({}, lastMovedItem), {}, {
703
+ to
704
+ });
705
+ }
692
706
  } else {
693
- // TODO #620
694
707
  movedItems.push({
695
- from: from,
708
+ from,
696
709
  to
697
710
  });
698
- }
711
+ } // Remove the move if it is now a no-op
699
712
 
700
- return movedItems;
701
- }
702
- /**
703
- * Retrieve the model index given the currently moved items
704
- * @param visibleIndex The visible index of the item to get the model index for
705
- * @param movedItems The moved items
706
- * @returns The model index of the item
707
- */
708
713
 
714
+ if (movedItems[movedItems.length - 1].from === movedItems[movedItems.length - 1].to) {
715
+ movedItems.pop();
716
+ }
709
717
 
710
- static getModelIndex(visibleIndex) {
711
- var movedItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
712
- var modelIndex = GridUtils.applyItemMoves(visibleIndex, visibleIndex, movedItems, true)[0][0];
713
- return modelIndex;
718
+ return movedItems;
714
719
  }
715
720
  /**
716
721
  * Applies the items moves to the AxisRange
@@ -843,6 +848,29 @@ export class GridUtils {
843
848
 
844
849
  return ranges;
845
850
  }
851
+ /**
852
+ * Retrieve the model index given the currently moved items
853
+ * @param visibleIndex The visible index of the item to get the model index for
854
+ * @param movedItems The moved items
855
+ * @returns The model index of the item
856
+ */
857
+
858
+
859
+ static getModelIndex(visibleIndex, movedItems) {
860
+ var modelIndex = GridUtils.applyItemMoves(visibleIndex, visibleIndex, movedItems, true)[0][0];
861
+ return modelIndex;
862
+ }
863
+ /**
864
+ * Retrieve the model indexes given the currently moved items
865
+ * @param visibleIndexes The visible indexes of the item to get the model indexes for
866
+ * @param movedItems The moved items
867
+ * @returns The model indexes of the item
868
+ */
869
+
870
+
871
+ static getModelIndexes(visibleIndexes, movedItems) {
872
+ return visibleIndexes.map(i => GridUtils.getModelIndex(i, movedItems));
873
+ }
846
874
  /**
847
875
  * Translate the provided UI start/end indexes to the model start/end indexes by applying the `movedItems` transformations.
848
876
  * Since moved items can split apart a range, multiple pairs of indexes are returned
@@ -910,7 +938,7 @@ export class GridUtils {
910
938
  return GridUtils.applyItemMoves(start, end, movedItems, false);
911
939
  }
912
940
  /**
913
- * Translate the provided UI range into model range, using the `movedColumns` and `movedRows` to apply the necessary transforms.
941
+ * Translate the provided UI range into visible range, using the `movedColumns` and `movedRows` to apply the necessary transforms.
914
942
  * `movedColumns` and `movedRows` are array of operations done to the UI indexes to re-order items
915
943
  *
916
944
  * @param uiRange The currently selected UI ranges
@@ -955,11 +983,21 @@ export class GridUtils {
955
983
  */
956
984
 
957
985
 
958
- static getVisibleIndex(modelIndex) {
959
- var movedItems = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
986
+ static getVisibleIndex(modelIndex, movedItems) {
960
987
  var visibleIndex = GridUtils.applyItemMoves(modelIndex, modelIndex, movedItems)[0][0];
961
988
  return visibleIndex;
962
989
  }
990
+ /**
991
+ * Retrieve the visible indexes given the currently moved items
992
+ * @param modelIndexes The model indexes to get the visible indexes for
993
+ * @param movedItems Moved items
994
+ * @returns The visible indexes of the item
995
+ */
996
+
997
+
998
+ static getVisibleIndexes(modelIndexes, movedItems) {
999
+ return modelIndexes.map(i => GridUtils.getVisibleIndex(i, movedItems));
1000
+ }
963
1001
  /**
964
1002
  * Check if the current platform is Mac
965
1003
  * @returns True if this platform is a Mac, false otherwise
@@ -1156,15 +1194,15 @@ export class GridUtils {
1156
1194
 
1157
1195
  for (var i = 0; i < ranges.length; i += 1) {
1158
1196
  var range = ranges[i];
1159
- var _start = range[0];
1160
- var _end = range[1];
1197
+ var start = range[0];
1198
+ var end = range[1];
1161
1199
 
1162
1200
  if (i === 0) {
1163
- mergedRanges.push([_start, _end]);
1164
- } else if (_start - 1 <= mergedRanges[mergedRanges.length - 1][1]) {
1165
- mergedRanges[mergedRanges.length - 1][1] = Math.max(mergedRanges[mergedRanges.length - 1][1], _end);
1201
+ mergedRanges.push([start, end]);
1202
+ } else if (start - 1 <= mergedRanges[mergedRanges.length - 1][1]) {
1203
+ mergedRanges[mergedRanges.length - 1][1] = Math.max(mergedRanges[mergedRanges.length - 1][1], end);
1166
1204
  } else {
1167
- mergedRanges.push([_start, _end]);
1205
+ mergedRanges.push([start, end]);
1168
1206
  }
1169
1207
  }
1170
1208