@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
@@ -46,12 +46,8 @@ class SelectionKeyHandler extends KeyHandler {
46
46
  case 'L':
47
47
  {
48
48
  if (GridUtils.isModifierKeyDown(event)) return false;
49
- var {
50
- model
51
- } = grid.props;
52
- var {
53
- columnCount
54
- } = model;
49
+ var model = grid.props.model;
50
+ var columnCount = model.columnCount;
55
51
  if (!event.shiftKey) {
56
52
  grid.clearSelectedRanges();
57
53
  }
@@ -70,13 +66,9 @@ class SelectionKeyHandler extends KeyHandler {
70
66
  return true;
71
67
  case 'End':
72
68
  {
73
- var {
74
- model: _model
75
- } = grid.props;
76
- var {
77
- columnCount: _columnCount,
78
- rowCount
79
- } = _model;
69
+ var _model = grid.props.model;
70
+ var _columnCount = _model.columnCount,
71
+ rowCount = _model.rowCount;
80
72
  if (!event.shiftKey) {
81
73
  grid.clearSelectedRanges();
82
74
  }
@@ -116,22 +108,17 @@ class SelectionKeyHandler extends KeyHandler {
116
108
  } else {
117
109
  grid.clearSelectedRanges();
118
110
  }
119
- var {
120
- cursorRow,
121
- cursorColumn,
122
- selectionEndColumn,
123
- selectionEndRow
124
- } = grid.state;
111
+ var _grid$state = grid.state,
112
+ cursorRow = _grid$state.cursorRow,
113
+ cursorColumn = _grid$state.cursorColumn,
114
+ selectionEndColumn = _grid$state.selectionEndColumn,
115
+ selectionEndRow = _grid$state.selectionEndRow;
125
116
  var column = isShiftKey ? selectionEndColumn : cursorColumn;
126
117
  var row = isShiftKey ? selectionEndRow : cursorRow;
127
118
  if (isModifierKey) {
128
- var {
129
- model
130
- } = grid.props;
131
- var {
132
- columnCount,
133
- rowCount
134
- } = model;
119
+ var model = grid.props.model;
120
+ var columnCount = model.columnCount,
121
+ rowCount = model.rowCount;
135
122
  var maximizePreviousRange = isModifierKey && isShiftKey;
136
123
  var moveToColumn = null;
137
124
  var moveToRow = null;
@@ -153,32 +140,22 @@ class SelectionKeyHandler extends KeyHandler {
153
140
  }
154
141
  } else {
155
142
  if (!grid.metrics) throw new Error('grid.metrics are not set');
156
- var {
157
- theme
158
- } = grid.props;
159
- var {
160
- autoSelectRow = false,
161
- autoSelectColumn = false
162
- } = theme;
143
+ var theme = grid.props.theme;
144
+ var _theme$autoSelectRow = theme.autoSelectRow,
145
+ autoSelectRow = _theme$autoSelectRow === void 0 ? false : _theme$autoSelectRow,
146
+ _theme$autoSelectColu = theme.autoSelectColumn,
147
+ autoSelectColumn = _theme$autoSelectColu === void 0 ? false : _theme$autoSelectColu;
163
148
  if (autoSelectRow && deltaColumn !== 0) {
164
- var {
165
- lastLeft
166
- } = grid.metrics;
167
- var {
168
- left
169
- } = grid.state;
149
+ var lastLeft = grid.metrics.lastLeft;
150
+ var left = grid.state.left;
170
151
  left = clamp(left + deltaColumn, 0, lastLeft);
171
152
  grid.moveCursorToPosition(left, cursorRow, isShiftKey, false);
172
153
  grid.setViewState({
173
154
  left
174
155
  });
175
156
  } else if (autoSelectColumn && deltaRow !== 0) {
176
- var {
177
- lastTop
178
- } = grid.metrics;
179
- var {
180
- top
181
- } = grid.state;
157
+ var lastTop = grid.metrics.lastTop;
158
+ var top = grid.state.top;
182
159
  top = clamp(top + deltaRow, 0, lastTop);
183
160
  grid.moveCursorToPosition(top, cursorColumn, isShiftKey, false);
184
161
  grid.setViewState({
@@ -197,24 +174,20 @@ class SelectionKeyHandler extends KeyHandler {
197
174
  } else {
198
175
  grid.clearSelectedRanges();
199
176
  }
200
- var {
201
- cursorColumn,
202
- selectionEndRow
203
- } = grid.state;
177
+ var _grid$state2 = grid.state,
178
+ cursorColumn = _grid$state2.cursorColumn,
179
+ selectionEndRow = _grid$state2.selectionEndRow;
204
180
  var row = selectionEndRow;
205
181
  var column = cursorColumn;
206
182
  if (row == null) {
207
183
  return false;
208
184
  }
209
185
  var metricState = grid.getMetricState();
210
- var {
211
- metricCalculator
212
- } = grid;
213
- var {
214
- bottomVisible,
215
- topVisible,
216
- hasHorizontalBar
217
- } = metricCalculator.getMetrics(metricState);
186
+ var metricCalculator = grid.metricCalculator;
187
+ var _metricCalculator$get = metricCalculator.getMetrics(metricState),
188
+ bottomVisible = _metricCalculator$get.bottomVisible,
189
+ topVisible = _metricCalculator$get.topVisible,
190
+ hasHorizontalBar = _metricCalculator$get.hasHorizontalBar;
218
191
  var selectRangeEndPosition = row - (bottomVisible - topVisible);
219
192
  selectRangeEndPosition -= hasHorizontalBar ? 0 : 1;
220
193
 
@@ -234,26 +207,22 @@ class SelectionKeyHandler extends KeyHandler {
234
207
  } else {
235
208
  grid.clearSelectedRanges();
236
209
  }
237
- var {
238
- selectionEndRow,
239
- cursorColumn
240
- } = grid.state;
210
+ var _grid$state3 = grid.state,
211
+ selectionEndRow = _grid$state3.selectionEndRow,
212
+ cursorColumn = _grid$state3.cursorColumn;
241
213
  var row = selectionEndRow;
242
214
  var column = cursorColumn;
243
215
  if (row === null) {
244
216
  return false;
245
217
  }
246
218
  var metricState = grid.getMetricState();
247
- var {
248
- metricCalculator
249
- } = grid;
250
- var {
251
- bottomVisible,
252
- topVisible,
253
- hasHorizontalBar,
254
- rowCount,
255
- lastTop
256
- } = metricCalculator.getMetrics(metricState);
219
+ var metricCalculator = grid.metricCalculator;
220
+ var _metricCalculator$get2 = metricCalculator.getMetrics(metricState),
221
+ bottomVisible = _metricCalculator$get2.bottomVisible,
222
+ topVisible = _metricCalculator$get2.topVisible,
223
+ hasHorizontalBar = _metricCalculator$get2.hasHorizontalBar,
224
+ rowCount = _metricCalculator$get2.rowCount,
225
+ lastTop = _metricCalculator$get2.lastTop;
257
226
  var lastRowIndex = rowCount - 1;
258
227
  var selectRangeEndPosition = bottomVisible - topVisible + row;
259
228
  selectRangeEndPosition += hasHorizontalBar ? 0 : 1;
@@ -1 +1 @@
1
- {"version":3,"file":"SelectionKeyHandler.js","names":["clamp","GridRange","GridUtils","KeyHandler","SelectionKeyHandler","onDown","event","grid","key","isModifierKeyDown","selectAll","handleArrowMove","handlePageUp","handlePageDown","shiftKey","clearSelectedRanges","moveCursorToPosition","state","cursorRow","model","props","columnCount","cursorColumn","rowCount","selectedRanges","length","preventDefault","stopPropagation","moveCursorInDirection","SELECTION_DIRECTION","UP","DOWN","LEFT","RIGHT","deltaColumn","deltaRow","isShiftKey","isModifierKey","trimSelectedRanges","selectionEndColumn","selectionEndRow","column","row","maximizePreviousRange","moveToColumn","moveToRow","metrics","Error","theme","autoSelectRow","autoSelectColumn","lastLeft","left","setViewState","lastTop","top","moveCursor","e","metricState","getMetricState","metricCalculator","bottomVisible","topVisible","hasHorizontalBar","getMetrics","selectRangeEndPosition","Math","max","viewportPosition","lastRowIndex","min"],"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridRange from '../GridRange';\nimport GridUtils from '../GridUtils';\nimport KeyHandler, { type GridKeyboardEvent } from '../KeyHandler';\n\nclass SelectionKeyHandler extends KeyHandler {\n onDown(event: GridKeyboardEvent, grid: Grid): EventHandlerResult {\n switch (event.key) {\n case 'a':\n if (GridUtils.isModifierKeyDown(event)) {\n grid.selectAll();\n return true;\n }\n break;\n case 'ArrowUp':\n return this.handleArrowMove(0, -1, event, grid);\n case 'ArrowDown':\n return this.handleArrowMove(0, 1, event, grid);\n case 'ArrowRight':\n return this.handleArrowMove(1, 0, event, grid);\n case 'ArrowLeft':\n return this.handleArrowMove(-1, 0, event, grid);\n /**\n * h/j/k/l keys are grouped together for quick navigation by power users.\n * Bender added these as shortcuts in the original commit of keyboard shortcuts.\n * We have no idea why, or what might have inspired them (not excel, not swing, vim?).\n * Maybe lack of page up keys on a laptop at the time?\n */\n case 'k':\n case 'K':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageUp(event, grid);\n case 'j':\n case 'J':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageDown(event, grid);\n case 'h':\n case 'H':\n if (GridUtils.isModifierKeyDown(event)) return false;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(0, grid.state.cursorRow, event.shiftKey);\n return true;\n case 'l':\n case 'L': {\n if (GridUtils.isModifierKeyDown(event)) return false;\n const { model } = grid.props;\n const { columnCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n columnCount - 1,\n grid.state.cursorRow,\n event.shiftKey\n );\n return true;\n }\n case 'PageDown':\n return this.handlePageDown(event, grid);\n case 'PageUp':\n return this.handlePageUp(event, grid);\n case 'Home':\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event) ? grid.state.cursorColumn : 0,\n GridUtils.isModifierKeyDown(event) ? 0 : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n case 'End': {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event)\n ? grid.state.cursorColumn\n : columnCount - 1,\n GridUtils.isModifierKeyDown(event)\n ? rowCount - 1\n : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n }\n case 'Escape':\n if (grid.state.selectedRanges.length === 0) return false;\n grid.clearSelectedRanges();\n // consume the event, and stop propagation only if there were selected ranges to clear\n return { preventDefault: false, stopPropagation: true };\n case 'Enter':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.UP\n : GridRange.SELECTION_DIRECTION.DOWN\n );\n return true;\n }\n break;\n case 'Tab':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.LEFT\n : GridRange.SELECTION_DIRECTION.RIGHT\n );\n return true;\n }\n break;\n default:\n break;\n }\n return false;\n }\n\n handleArrowMove(\n deltaColumn: number,\n deltaRow: number,\n event: GridKeyboardEvent,\n grid: Grid\n ): boolean {\n const isShiftKey = event.shiftKey;\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorRow, cursorColumn, selectionEndColumn, selectionEndRow } =\n grid.state;\n const column = isShiftKey ? selectionEndColumn : cursorColumn;\n const row = isShiftKey ? selectionEndRow : cursorRow;\n if (isModifierKey) {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n const maximizePreviousRange = isModifierKey && isShiftKey;\n let moveToColumn = null;\n let moveToRow = null;\n if (deltaColumn < 0) {\n moveToColumn = 0;\n moveToRow = row;\n } else if (deltaColumn > 0) {\n moveToColumn = columnCount - 1;\n moveToRow = row;\n } else if (deltaRow < 0) {\n moveToColumn = column;\n moveToRow = 0;\n } else if (deltaRow > 0) {\n moveToColumn = column;\n moveToRow = rowCount - 1;\n }\n if (moveToColumn != null && moveToRow != null) {\n grid.moveCursorToPosition(\n moveToColumn,\n moveToRow,\n isShiftKey,\n true,\n maximizePreviousRange\n );\n }\n } else {\n if (!grid.metrics) throw new Error('grid.metrics are not set');\n\n const { theme } = grid.props;\n const { autoSelectRow = false, autoSelectColumn = false } = theme;\n if (autoSelectRow && deltaColumn !== 0) {\n const { lastLeft } = grid.metrics;\n let { left } = grid.state;\n\n left = clamp(left + deltaColumn, 0, lastLeft);\n\n grid.moveCursorToPosition(left, cursorRow, isShiftKey, false);\n\n grid.setViewState({ left });\n } else if (autoSelectColumn && deltaRow !== 0) {\n const { lastTop } = grid.metrics;\n let { top } = grid.state;\n\n top = clamp(top + deltaRow, 0, lastTop);\n\n grid.moveCursorToPosition(top, cursorColumn, isShiftKey, false);\n\n grid.setViewState({ top });\n } else {\n grid.moveCursor(deltaColumn, deltaRow, isShiftKey);\n }\n }\n return true;\n }\n\n handlePageUp(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorColumn, selectionEndRow } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row == null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar } =\n metricCalculator.getMetrics(metricState);\n\n let selectRangeEndPosition = row - (bottomVisible - topVisible);\n selectRangeEndPosition -= hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the top table row.\n selectRangeEndPosition = Math.max(selectRangeEndPosition, 0);\n const viewportPosition = Math.max(\n selectRangeEndPosition - (row - topVisible),\n 0\n );\n\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n return true;\n }\n\n handlePageDown(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { selectionEndRow, cursorColumn } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row === null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar, rowCount, lastTop } =\n metricCalculator.getMetrics(metricState);\n const lastRowIndex = rowCount - 1;\n\n let selectRangeEndPosition = bottomVisible - topVisible + row;\n selectRangeEndPosition += hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the bottom table row.\n selectRangeEndPosition = Math.min(selectRangeEndPosition, lastRowIndex);\n\n const viewportPosition = Math.min(\n lastTop,\n selectRangeEndPosition - (row - topVisible)\n );\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n\n return true;\n }\n}\n\nexport default SelectionKeyHandler;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SelectionKeyHandler.js","names":["clamp","GridRange","GridUtils","KeyHandler","SelectionKeyHandler","onDown","event","grid","key","isModifierKeyDown","selectAll","handleArrowMove","handlePageUp","handlePageDown","shiftKey","clearSelectedRanges","moveCursorToPosition","state","cursorRow","model","props","columnCount","cursorColumn","rowCount","selectedRanges","length","preventDefault","stopPropagation","moveCursorInDirection","SELECTION_DIRECTION","UP","DOWN","LEFT","RIGHT","deltaColumn","deltaRow","isShiftKey","isModifierKey","trimSelectedRanges","_grid$state","selectionEndColumn","selectionEndRow","column","row","maximizePreviousRange","moveToColumn","moveToRow","metrics","Error","theme","_theme$autoSelectRow","autoSelectRow","_theme$autoSelectColu","autoSelectColumn","lastLeft","left","setViewState","lastTop","top","moveCursor","e","_grid$state2","metricState","getMetricState","metricCalculator","_metricCalculator$get","getMetrics","bottomVisible","topVisible","hasHorizontalBar","selectRangeEndPosition","Math","max","viewportPosition","_grid$state3","_metricCalculator$get2","lastRowIndex","min"],"sources":["../../src/key-handlers/SelectionKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport clamp from 'lodash.clamp';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridRange from '../GridRange';\nimport GridUtils from '../GridUtils';\nimport KeyHandler, { type GridKeyboardEvent } from '../KeyHandler';\n\nclass SelectionKeyHandler extends KeyHandler {\n onDown(event: GridKeyboardEvent, grid: Grid): EventHandlerResult {\n switch (event.key) {\n case 'a':\n if (GridUtils.isModifierKeyDown(event)) {\n grid.selectAll();\n return true;\n }\n break;\n case 'ArrowUp':\n return this.handleArrowMove(0, -1, event, grid);\n case 'ArrowDown':\n return this.handleArrowMove(0, 1, event, grid);\n case 'ArrowRight':\n return this.handleArrowMove(1, 0, event, grid);\n case 'ArrowLeft':\n return this.handleArrowMove(-1, 0, event, grid);\n /**\n * h/j/k/l keys are grouped together for quick navigation by power users.\n * Bender added these as shortcuts in the original commit of keyboard shortcuts.\n * We have no idea why, or what might have inspired them (not excel, not swing, vim?).\n * Maybe lack of page up keys on a laptop at the time?\n */\n case 'k':\n case 'K':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageUp(event, grid);\n case 'j':\n case 'J':\n if (GridUtils.isModifierKeyDown(event)) return false;\n return this.handlePageDown(event, grid);\n case 'h':\n case 'H':\n if (GridUtils.isModifierKeyDown(event)) return false;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(0, grid.state.cursorRow, event.shiftKey);\n return true;\n case 'l':\n case 'L': {\n if (GridUtils.isModifierKeyDown(event)) return false;\n const { model } = grid.props;\n const { columnCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n columnCount - 1,\n grid.state.cursorRow,\n event.shiftKey\n );\n return true;\n }\n case 'PageDown':\n return this.handlePageDown(event, grid);\n case 'PageUp':\n return this.handlePageUp(event, grid);\n case 'Home':\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event) ? grid.state.cursorColumn : 0,\n GridUtils.isModifierKeyDown(event) ? 0 : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n case 'End': {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n if (!event.shiftKey) {\n grid.clearSelectedRanges();\n }\n grid.moveCursorToPosition(\n GridUtils.isModifierKeyDown(event)\n ? grid.state.cursorColumn\n : columnCount - 1,\n GridUtils.isModifierKeyDown(event)\n ? rowCount - 1\n : grid.state.cursorRow,\n event.shiftKey,\n true,\n true\n );\n return true;\n }\n case 'Escape':\n if (grid.state.selectedRanges.length === 0) return false;\n grid.clearSelectedRanges();\n // consume the event, and stop propagation only if there were selected ranges to clear\n return { preventDefault: false, stopPropagation: true };\n case 'Enter':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.UP\n : GridRange.SELECTION_DIRECTION.DOWN\n );\n return true;\n }\n break;\n case 'Tab':\n if (grid.state.selectedRanges.length > 0) {\n grid.moveCursorInDirection(\n event.shiftKey\n ? GridRange.SELECTION_DIRECTION.LEFT\n : GridRange.SELECTION_DIRECTION.RIGHT\n );\n return true;\n }\n break;\n default:\n break;\n }\n return false;\n }\n\n handleArrowMove(\n deltaColumn: number,\n deltaRow: number,\n event: GridKeyboardEvent,\n grid: Grid\n ): boolean {\n const isShiftKey = event.shiftKey;\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorRow, cursorColumn, selectionEndColumn, selectionEndRow } =\n grid.state;\n const column = isShiftKey ? selectionEndColumn : cursorColumn;\n const row = isShiftKey ? selectionEndRow : cursorRow;\n if (isModifierKey) {\n const { model } = grid.props;\n const { columnCount, rowCount } = model;\n const maximizePreviousRange = isModifierKey && isShiftKey;\n let moveToColumn = null;\n let moveToRow = null;\n if (deltaColumn < 0) {\n moveToColumn = 0;\n moveToRow = row;\n } else if (deltaColumn > 0) {\n moveToColumn = columnCount - 1;\n moveToRow = row;\n } else if (deltaRow < 0) {\n moveToColumn = column;\n moveToRow = 0;\n } else if (deltaRow > 0) {\n moveToColumn = column;\n moveToRow = rowCount - 1;\n }\n if (moveToColumn != null && moveToRow != null) {\n grid.moveCursorToPosition(\n moveToColumn,\n moveToRow,\n isShiftKey,\n true,\n maximizePreviousRange\n );\n }\n } else {\n if (!grid.metrics) throw new Error('grid.metrics are not set');\n\n const { theme } = grid.props;\n const { autoSelectRow = false, autoSelectColumn = false } = theme;\n if (autoSelectRow && deltaColumn !== 0) {\n const { lastLeft } = grid.metrics;\n let { left } = grid.state;\n\n left = clamp(left + deltaColumn, 0, lastLeft);\n\n grid.moveCursorToPosition(left, cursorRow, isShiftKey, false);\n\n grid.setViewState({ left });\n } else if (autoSelectColumn && deltaRow !== 0) {\n const { lastTop } = grid.metrics;\n let { top } = grid.state;\n\n top = clamp(top + deltaRow, 0, lastTop);\n\n grid.moveCursorToPosition(top, cursorColumn, isShiftKey, false);\n\n grid.setViewState({ top });\n } else {\n grid.moveCursor(deltaColumn, deltaRow, isShiftKey);\n }\n }\n return true;\n }\n\n handlePageUp(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { cursorColumn, selectionEndRow } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row == null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar } =\n metricCalculator.getMetrics(metricState);\n\n let selectRangeEndPosition = row - (bottomVisible - topVisible);\n selectRangeEndPosition -= hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the top table row.\n selectRangeEndPosition = Math.max(selectRangeEndPosition, 0);\n const viewportPosition = Math.max(\n selectRangeEndPosition - (row - topVisible),\n 0\n );\n\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n return true;\n }\n\n handlePageDown(e: GridKeyboardEvent, grid: Grid): boolean {\n const isShiftKey = e.shiftKey;\n\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n\n const { selectionEndRow, cursorColumn } = grid.state;\n const row: number | null = selectionEndRow;\n const column: number | null = cursorColumn;\n if (row === null) {\n return false;\n }\n const metricState = grid.getMetricState();\n const { metricCalculator } = grid;\n const { bottomVisible, topVisible, hasHorizontalBar, rowCount, lastTop } =\n metricCalculator.getMetrics(metricState);\n const lastRowIndex = rowCount - 1;\n\n let selectRangeEndPosition = bottomVisible - topVisible + row;\n selectRangeEndPosition += hasHorizontalBar ? 0 : 1;\n\n // Don't move beyond the bottom table row.\n selectRangeEndPosition = Math.min(selectRangeEndPosition, lastRowIndex);\n\n const viewportPosition = Math.min(\n lastTop,\n selectRangeEndPosition - (row - topVisible)\n );\n grid.moveCursorToPosition(\n column,\n selectRangeEndPosition,\n isShiftKey,\n false\n );\n grid.setViewState({ top: viewportPosition });\n\n return true;\n }\n}\n\nexport default SelectionKeyHandler;\n"],"mappings":"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","ignoreList":[]}
@@ -15,20 +15,14 @@ class TreeKeyHandler extends KeyHandler {
15
15
  return false;
16
16
  }
17
17
  handleExpandKey(event, grid) {
18
- var {
19
- selectedRanges
20
- } = grid.state;
18
+ var selectedRanges = grid.state.selectedRanges;
21
19
  if (selectedRanges.length === 1) {
22
20
  var range = selectedRanges[0];
23
21
  if (range.startRow === range.endRow && range.startColumn === range.endColumn) {
24
22
  if (!grid.metrics) throw new Error('grid.metrics not set');
25
- var {
26
- model
27
- } = grid.props;
28
- var {
29
- startRow: row,
30
- startColumn: column
31
- } = range;
23
+ var model = grid.props.model;
24
+ var row = range.startRow,
25
+ column = range.startColumn;
32
26
  if (row != null) {
33
27
  var modelRow = grid.getModelRow(row);
34
28
  if ((column === 0 || column == null) && isExpandableGridModel(model) && model.isRowExpandable(modelRow)) {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeKeyHandler.js","names":["isExpandableGridModel","KeyHandler","TreeKeyHandler","onDown","event","grid","key","handleExpandKey","selectedRanges","state","length","range","startRow","endRow","startColumn","endColumn","metrics","Error","model","props","row","column","modelRow","getModelRow","isRowExpandable","toggleRowExpanded"],"sources":["../../src/key-handlers/TreeKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isExpandableGridModel } from '../ExpandableGridModel';\nimport type Grid from '../Grid';\nimport type GridRange from '../GridRange';\nimport KeyHandler from '../KeyHandler';\n\nclass TreeKeyHandler extends KeyHandler {\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n return this.handleExpandKey(event, grid);\n }\n default:\n break;\n }\n return false;\n }\n\n handleExpandKey(event: KeyboardEvent, grid: Grid): boolean {\n const { selectedRanges } = grid.state;\n if (selectedRanges.length === 1) {\n const range = selectedRanges[0] as GridRange;\n if (\n range.startRow === range.endRow &&\n range.startColumn === range.endColumn\n ) {\n if (!grid.metrics) throw new Error('grid.metrics not set');\n\n const { model } = grid.props;\n const { startRow: row, startColumn: column } = range;\n if (row != null) {\n const modelRow = grid.getModelRow(row);\n if (\n (column === 0 || column == null) &&\n isExpandableGridModel(model) &&\n model.isRowExpandable(modelRow)\n ) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\nexport default TreeKeyHandler;\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB;AAAA,OAGvBC,UAAU;AAEjB,MAAMC,cAAc,SAASD,UAAU,CAAC;EACtCE,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,QAAQD,KAAK,CAACE,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;UACR,OAAO,IAAI,CAACC,eAAe,CAACH,KAAK,EAAEC,IAAI,CAAC;QAC1C;MACA;QACE;IACJ;IACA,OAAO,KAAK;EACd;EAEAE,eAAeA,CAACH,KAAoB,EAAEC,IAAU,EAAW;IACzD,IAAM;MAAEG;IAAe,CAAC,GAAGH,IAAI,CAACI,KAAK;IACrC,IAAID,cAAc,CAACE,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAMC,KAAK,GAAGH,cAAc,CAAC,CAAC,CAAc;MAC5C,IACEG,KAAK,CAACC,QAAQ,KAAKD,KAAK,CAACE,MAAM,IAC/BF,KAAK,CAACG,WAAW,KAAKH,KAAK,CAACI,SAAS,EACrC;QACA,IAAI,CAACV,IAAI,CAACW,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;QAE1D,IAAM;UAAEC;QAAM,CAAC,GAAGb,IAAI,CAACc,KAAK;QAC5B,IAAM;UAAEP,QAAQ,EAAEQ,GAAG;UAAEN,WAAW,EAAEO;QAAO,CAAC,GAAGV,KAAK;QACpD,IAAIS,GAAG,IAAI,IAAI,EAAE;UACf,IAAME,QAAQ,GAAGjB,IAAI,CAACkB,WAAW,CAACH,GAAG,CAAC;UACtC,IACE,CAACC,MAAM,KAAK,CAAC,IAAIA,MAAM,IAAI,IAAI,KAC/BrB,qBAAqB,CAACkB,KAAK,CAAC,IAC5BA,KAAK,CAACM,eAAe,CAACF,QAAQ,CAAC,EAC/B;YACAjB,IAAI,CAACoB,iBAAiB,CAACL,GAAG,CAAC;YAC3B,OAAO,IAAI;UACb;QACF;MACF;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAelB,cAAc","ignoreList":[]}
1
+ {"version":3,"file":"TreeKeyHandler.js","names":["isExpandableGridModel","KeyHandler","TreeKeyHandler","onDown","event","grid","key","handleExpandKey","selectedRanges","state","length","range","startRow","endRow","startColumn","endColumn","metrics","Error","model","props","row","column","modelRow","getModelRow","isRowExpandable","toggleRowExpanded"],"sources":["../../src/key-handlers/TreeKeyHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isExpandableGridModel } from '../ExpandableGridModel';\nimport type Grid from '../Grid';\nimport type GridRange from '../GridRange';\nimport KeyHandler from '../KeyHandler';\n\nclass TreeKeyHandler extends KeyHandler {\n onDown(event: KeyboardEvent, grid: Grid): boolean {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n return this.handleExpandKey(event, grid);\n }\n default:\n break;\n }\n return false;\n }\n\n handleExpandKey(event: KeyboardEvent, grid: Grid): boolean {\n const { selectedRanges } = grid.state;\n if (selectedRanges.length === 1) {\n const range = selectedRanges[0] as GridRange;\n if (\n range.startRow === range.endRow &&\n range.startColumn === range.endColumn\n ) {\n if (!grid.metrics) throw new Error('grid.metrics not set');\n\n const { model } = grid.props;\n const { startRow: row, startColumn: column } = range;\n if (row != null) {\n const modelRow = grid.getModelRow(row);\n if (\n (column === 0 || column == null) &&\n isExpandableGridModel(model) &&\n model.isRowExpandable(modelRow)\n ) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n }\n }\n return false;\n }\n}\n\nexport default TreeKeyHandler;\n"],"mappings":"AAAA;AAAA,SACSA,qBAAqB;AAAA,OAGvBC,UAAU;AAEjB,MAAMC,cAAc,SAASD,UAAU,CAAC;EACtCE,MAAMA,CAACC,KAAoB,EAAEC,IAAU,EAAW;IAChD,QAAQD,KAAK,CAACE,GAAG;MACf,KAAK,OAAO;MACZ,KAAK,GAAG;QAAE;UACR,OAAO,IAAI,CAACC,eAAe,CAACH,KAAK,EAAEC,IAAI,CAAC;QAC1C;MACA;QACE;IACJ;IACA,OAAO,KAAK;EACd;EAEAE,eAAeA,CAACH,KAAoB,EAAEC,IAAU,EAAW;IACzD,IAAQG,cAAc,GAAKH,IAAI,CAACI,KAAK,CAA7BD,cAAc;IACtB,IAAIA,cAAc,CAACE,MAAM,KAAK,CAAC,EAAE;MAC/B,IAAMC,KAAK,GAAGH,cAAc,CAAC,CAAC,CAAc;MAC5C,IACEG,KAAK,CAACC,QAAQ,KAAKD,KAAK,CAACE,MAAM,IAC/BF,KAAK,CAACG,WAAW,KAAKH,KAAK,CAACI,SAAS,EACrC;QACA,IAAI,CAACV,IAAI,CAACW,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,sBAAsB,CAAC;QAE1D,IAAQC,KAAK,GAAKb,IAAI,CAACc,KAAK,CAApBD,KAAK;QACb,IAAkBE,GAAG,GAA0BT,KAAK,CAA5CC,QAAQ;UAAoBS,MAAM,GAAKV,KAAK,CAA7BG,WAAW;QAClC,IAAIM,GAAG,IAAI,IAAI,EAAE;UACf,IAAME,QAAQ,GAAGjB,IAAI,CAACkB,WAAW,CAACH,GAAG,CAAC;UACtC,IACE,CAACC,MAAM,KAAK,CAAC,IAAIA,MAAM,IAAI,IAAI,KAC/BrB,qBAAqB,CAACkB,KAAK,CAAC,IAC5BA,KAAK,CAACM,eAAe,CAACF,QAAQ,CAAC,EAC/B;YACAjB,IAAI,CAACoB,iBAAiB,CAACL,GAAG,CAAC;YAC3B,OAAO,IAAI;UACb;QACF;MACF;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAelB,cAAc","ignoreList":[]}
@@ -7,13 +7,9 @@ import GridRange from "../GridRange.js";
7
7
  */
8
8
  class EditMouseHandler extends GridMouseHandler {
9
9
  onDoubleClick(_ref, grid) {
10
- var {
11
- column,
12
- row
13
- } = _ref;
14
- var {
15
- model
16
- } = grid.props;
10
+ var column = _ref.column,
11
+ row = _ref.row;
12
+ var model = grid.props.model;
17
13
  if (isEditableGridModel(model) && column != null && row != null && model.isEditableRange(GridRange.makeCell(column, row))) {
18
14
  grid.startEditing(column, row);
19
15
  return true;
@@ -1 +1 @@
1
- {"version":3,"file":"EditMouseHandler.js","names":["isEditableGridModel","GridMouseHandler","GridRange","EditMouseHandler","onDoubleClick","_ref","grid","column","row","model","props","isEditableRange","makeCell","startEditing"],"sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isEditableGridModel } from '../EditableGridModel';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridRange from '../GridRange';\nimport { type GridPoint } from '../GridUtils';\n\n/**\n * Handles clicking on a cell to edit it in an editable grid\n */\nclass EditMouseHandler extends GridMouseHandler {\n onDoubleClick({ column, row }: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n if (\n isEditableGridModel(model) &&\n column != null &&\n row != null &&\n model.isEditableRange(GridRange.makeCell(column, row))\n ) {\n grid.startEditing(column, row);\n return true;\n }\n return false;\n }\n}\n\nexport default EditMouseHandler;\n"],"mappings":"AAAA;AAAA,SACSA,mBAAmB;AAAA,OAGrBC,gBAAgB;AAAA,OAChBC,SAAS;AAGhB;AACA;AACA;AACA,MAAMC,gBAAgB,SAASF,gBAAgB,CAAC;EAC9CG,aAAaA,CAAAC,IAAA,EAA6BC,IAAU,EAAsB;IAAA,IAA5D;MAAEC,MAAM;MAAEC;IAAe,CAAC,GAAAH,IAAA;IACtC,IAAM;MAAEI;IAAM,CAAC,GAAGH,IAAI,CAACI,KAAK;IAC5B,IACEV,mBAAmB,CAACS,KAAK,CAAC,IAC1BF,MAAM,IAAI,IAAI,IACdC,GAAG,IAAI,IAAI,IACXC,KAAK,CAACE,eAAe,CAACT,SAAS,CAACU,QAAQ,CAACL,MAAM,EAAEC,GAAG,CAAC,CAAC,EACtD;MACAF,IAAI,CAACO,YAAY,CAACN,MAAM,EAAEC,GAAG,CAAC;MAC9B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeL,gBAAgB","ignoreList":[]}
1
+ {"version":3,"file":"EditMouseHandler.js","names":["isEditableGridModel","GridMouseHandler","GridRange","EditMouseHandler","onDoubleClick","_ref","grid","column","row","model","props","isEditableRange","makeCell","startEditing"],"sources":["../../src/mouse-handlers/EditMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { isEditableGridModel } from '../EditableGridModel';\nimport { type EventHandlerResult } from '../EventHandlerResult';\nimport type Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridRange from '../GridRange';\nimport { type GridPoint } from '../GridUtils';\n\n/**\n * Handles clicking on a cell to edit it in an editable grid\n */\nclass EditMouseHandler extends GridMouseHandler {\n onDoubleClick({ column, row }: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n if (\n isEditableGridModel(model) &&\n column != null &&\n row != null &&\n model.isEditableRange(GridRange.makeCell(column, row))\n ) {\n grid.startEditing(column, row);\n return true;\n }\n return false;\n }\n}\n\nexport default EditMouseHandler;\n"],"mappings":"AAAA;AAAA,SACSA,mBAAmB;AAAA,OAGrBC,gBAAgB;AAAA,OAChBC,SAAS;AAGhB;AACA;AACA;AACA,MAAMC,gBAAgB,SAASF,gBAAgB,CAAC;EAC9CG,aAAaA,CAAAC,IAAA,EAA6BC,IAAU,EAAsB;IAAA,IAA1DC,MAAM,GAAAF,IAAA,CAANE,MAAM;MAAEC,GAAG,GAAAH,IAAA,CAAHG,GAAG;IACzB,IAAQC,KAAK,GAAKH,IAAI,CAACI,KAAK,CAApBD,KAAK;IACb,IACET,mBAAmB,CAACS,KAAK,CAAC,IAC1BF,MAAM,IAAI,IAAI,IACdC,GAAG,IAAI,IAAI,IACXC,KAAK,CAACE,eAAe,CAACT,SAAS,CAACU,QAAQ,CAACL,MAAM,EAAEC,GAAG,CAAC,CAAC,EACtD;MACAF,IAAI,CAACO,YAAY,CAACN,MAAM,EAAEC,GAAG,CAAC;MAC9B,OAAO,IAAI;IACb;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeL,gBAAgB","ignoreList":[]}
@@ -3,6 +3,12 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
3
3
  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; }
4
4
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
5
5
  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); }
6
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
7
+ 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."); }
8
+ 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; } }
9
+ 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; }
10
+ 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; } }
11
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
6
12
  import clamp from 'lodash.clamp';
7
13
  import { assertNotNull } from '@deephaven/utils';
8
14
  import GridUtils from "../GridUtils.js";
@@ -22,17 +28,15 @@ var SCROLL_DELTA = 10;
22
28
  */
23
29
  function getColumnInfo(visibleIndex, depth, metrics, model) {
24
30
  var _modelColumns$get;
25
- var {
26
- modelColumns,
27
- movedColumns,
28
- allColumnXs,
29
- columnCount,
30
- allColumnWidths,
31
- userColumnWidths,
32
- calculatedColumnWidths,
33
- floatingLeftWidth,
34
- maxX
35
- } = metrics;
31
+ var modelColumns = metrics.modelColumns,
32
+ movedColumns = metrics.movedColumns,
33
+ allColumnXs = metrics.allColumnXs,
34
+ columnCount = metrics.columnCount,
35
+ allColumnWidths = metrics.allColumnWidths,
36
+ userColumnWidths = metrics.userColumnWidths,
37
+ calculatedColumnWidths = metrics.calculatedColumnWidths,
38
+ floatingLeftWidth = metrics.floatingLeftWidth,
39
+ maxX = metrics.maxX;
36
40
  if (depth == null || visibleIndex == null || visibleIndex > columnCount || visibleIndex < 0) {
37
41
  return null;
38
42
  }
@@ -44,7 +48,10 @@ function getColumnInfo(visibleIndex, depth, metrics, model) {
44
48
  var range;
45
49
  if (group != null) {
46
50
  var _allColumnXs$get, _allColumnXs$get2, _allColumnWidths$get;
47
- var [startVisibleIndex, endVisibleIndex] = group.getVisibleRange(movedColumns);
51
+ var _group$getVisibleRang = group.getVisibleRange(movedColumns),
52
+ _group$getVisibleRang2 = _slicedToArray(_group$getVisibleRang, 2),
53
+ startVisibleIndex = _group$getVisibleRang2[0],
54
+ endVisibleIndex = _group$getVisibleRang2[1];
48
55
  left = (_allColumnXs$get = allColumnXs.get(startVisibleIndex)) !== null && _allColumnXs$get !== void 0 ? _allColumnXs$get : floatingLeftWidth;
49
56
  right = ((_allColumnXs$get2 = allColumnXs.get(endVisibleIndex)) !== null && _allColumnXs$get2 !== void 0 ? _allColumnXs$get2 : maxX) + ((_allColumnWidths$get = allColumnWidths.get(endVisibleIndex)) !== null && _allColumnWidths$get !== void 0 ? _allColumnWidths$get : 0);
50
57
  range = [startVisibleIndex, endVisibleIndex];
@@ -86,21 +93,17 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
86
93
  }
87
94
  this.scrollingDirection = direction;
88
95
  this.scrollingInterval = window.setInterval(() => {
89
- var {
90
- metrics
91
- } = grid;
96
+ var metrics = grid.metrics;
92
97
  if (!metrics) {
93
98
  return;
94
99
  }
95
- var {
96
- left,
97
- lastLeft,
98
- leftOffset,
99
- userColumnWidths,
100
- calculatedColumnWidths,
101
- movedColumns,
102
- allColumnWidths
103
- } = metrics;
100
+ var left = metrics.left,
101
+ lastLeft = metrics.lastLeft,
102
+ leftOffset = metrics.leftOffset,
103
+ userColumnWidths = metrics.userColumnWidths,
104
+ calculatedColumnWidths = metrics.calculatedColumnWidths,
105
+ movedColumns = metrics.movedColumns,
106
+ allColumnWidths = metrics.allColumnWidths;
104
107
  var nextLeft = left;
105
108
  var nextOffset = leftOffset;
106
109
  if (direction === 'left') {
@@ -135,10 +138,9 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
135
138
  }
136
139
  }
137
140
  }
138
- var {
139
- mouseX,
140
- mouseY
141
- } = grid.state;
141
+ var _grid$state = grid.state,
142
+ mouseX = _grid$state.mouseX,
143
+ mouseY = _grid$state.mouseY;
142
144
  if (metrics == null || mouseX == null || mouseY == null) {
143
145
  return;
144
146
  }
@@ -162,17 +164,11 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
162
164
  return false;
163
165
  }
164
166
  onDown(gridPoint, grid) {
165
- var {
166
- model
167
- } = grid.props;
168
- var {
169
- x,
170
- column,
171
- columnHeaderDepth
172
- } = gridPoint;
173
- var {
174
- metrics
175
- } = grid;
167
+ var model = grid.props.model;
168
+ var x = gridPoint.x,
169
+ column = gridPoint.column,
170
+ columnHeaderDepth = gridPoint.columnHeaderDepth;
171
+ var metrics = grid.metrics;
176
172
  if (!metrics) throw new Error('Metrics not set');
177
173
  var columnInfo = getColumnInfo(column, columnHeaderDepth, metrics, model);
178
174
  if (column == null || columnInfo == null || columnHeaderDepth == null) {
@@ -183,9 +179,7 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
183
179
  if (columnHeaderDepth > 0 && !columnInfo.isColumnGroup) {
184
180
  return false;
185
181
  }
186
- var {
187
- rowHeaderWidth
188
- } = metrics;
182
+ var rowHeaderWidth = metrics.rowHeaderWidth;
189
183
  this.initialGridPoint = gridPoint;
190
184
  this.draggingColumn = null;
191
185
  this.cursor = null;
@@ -199,22 +193,12 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
199
193
  if (this.draggingOffset === undefined || this.initialGridPoint === undefined || this.initialOffset === undefined) {
200
194
  return false;
201
195
  }
202
- var {
203
- x: mouseX,
204
- y: mouseY
205
- } = gridPoint;
206
- var {
207
- columnHeaderDepth
208
- } = this.initialGridPoint;
209
- var {
210
- model
211
- } = grid.props;
212
- var {
213
- draggingColumn
214
- } = this;
215
- var {
216
- metrics
217
- } = grid;
196
+ var mouseX = gridPoint.x,
197
+ mouseY = gridPoint.y;
198
+ var columnHeaderDepth = this.initialGridPoint.columnHeaderDepth;
199
+ var model = grid.props.model;
200
+ var draggingColumn = this.draggingColumn;
201
+ var metrics = grid.metrics;
218
202
  if (!metrics) throw new Error('Metrics not set');
219
203
 
220
204
  // before considering it a drag, the mouse must have moved a minimum distance
@@ -281,13 +265,9 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
281
265
  if (this.draggingOffset === undefined || this.initialGridPoint === undefined || this.initialOffset === undefined || this.draggingColumn == null || deltaX === 0) {
282
266
  return;
283
267
  }
284
- var {
285
- metrics
286
- } = grid;
268
+ var metrics = grid.metrics;
287
269
  assertNotNull(metrics, 'Metrics not set');
288
- var {
289
- gridX
290
- } = metrics;
270
+ var gridX = metrics.gridX;
291
271
 
292
272
  // Cursor has moved past the column drag bounds, don't move the column until we hit the initial offset point again
293
273
  if (this.initialOffset !== this.draggingOffset) {
@@ -307,21 +287,13 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
307
287
  });
308
288
  return;
309
289
  }
310
- var {
311
- depth: draggingColumnDepth
312
- } = this.draggingColumn;
313
- var {
314
- model
315
- } = grid.props;
316
- var {
317
- movedColumns
318
- } = grid.state;
319
- var {
320
- floatingLeftWidth,
321
- width,
322
- columnHeaderMaxDepth,
323
- allColumnXs
324
- } = metrics;
290
+ var draggingColumnDepth = this.draggingColumn.depth;
291
+ var model = grid.props.model;
292
+ var movedColumns = grid.state.movedColumns;
293
+ var floatingLeftWidth = metrics.floatingLeftWidth,
294
+ width = metrics.width,
295
+ columnHeaderMaxDepth = metrics.columnHeaderMaxDepth,
296
+ allColumnXs = metrics.allColumnXs;
325
297
  var isDraggingLeft = deltaX < 0;
326
298
  var draggingColumn = getColumnInfo(this.draggingColumn.range[0], draggingColumnDepth, metrics, model);
327
299
  if (!draggingColumn) {
@@ -367,9 +339,9 @@ class GridColumnMoveMouseHandler extends GridMouseHandler {
367
339
  if (swapColumn.visibleIndex > parentVisibleRange[1]) {
368
340
  var _getColumnInfo;
369
341
  var _newMovedColumns2 = this.moveColumn(draggingColumn, parentVisibleRange[1] - (draggingColumn.range[1] - draggingColumn.range[0]), movedColumns);
370
- var {
371
- right: parentRight = 0
372
- } = (_getColumnInfo = getColumnInfo(parentVisibleRange[1], 0, metrics, model)) !== null && _getColumnInfo !== void 0 ? _getColumnInfo : {};
342
+ var _ref3 = (_getColumnInfo = getColumnInfo(parentVisibleRange[1], 0, metrics, model)) !== null && _getColumnInfo !== void 0 ? _getColumnInfo : {},
343
+ _ref3$right = _ref3.right,
344
+ parentRight = _ref3$right === void 0 ? 0 : _ref3$right;
373
345
  this.draggingOffset = mouseX - (parentRight - draggingColumn.width);
374
346
  this.draggingColumn = _objectSpread(_objectSpread({}, this.draggingColumn), {}, {
375
347
  left: mouseX - this.draggingOffset - gridX