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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/CellInputField.d.ts +5 -5
  2. package/dist/CellInputField.d.ts.map +1 -1
  3. package/dist/CellInputField.js +6 -23
  4. package/dist/CellInputField.js.map +1 -1
  5. package/dist/EditableGridModel.js +1 -0
  6. package/dist/EditableGridModel.js.map +1 -1
  7. package/dist/ExpandableGridModel.js +1 -0
  8. package/dist/ExpandableGridModel.js.map +1 -1
  9. package/dist/Grid.js +77 -315
  10. package/dist/Grid.js.map +1 -1
  11. package/dist/GridAxisRange.js.map +1 -1
  12. package/dist/GridColorUtils.js +1 -2
  13. package/dist/GridColorUtils.js.map +1 -1
  14. package/dist/GridMetricCalculator.js +83 -240
  15. package/dist/GridMetricCalculator.js.map +1 -1
  16. package/dist/GridModel.js +13 -31
  17. package/dist/GridModel.js.map +1 -1
  18. package/dist/GridMouseHandler.js +2 -15
  19. package/dist/GridMouseHandler.js.map +1 -1
  20. package/dist/GridRange.js +46 -160
  21. package/dist/GridRange.js.map +1 -1
  22. package/dist/GridRenderer.js +126 -407
  23. package/dist/GridRenderer.js.map +1 -1
  24. package/dist/GridTestUtils.js +0 -5
  25. package/dist/GridTestUtils.js.map +1 -1
  26. package/dist/GridTheme.js.map +1 -1
  27. package/dist/GridUtils.js +68 -217
  28. package/dist/GridUtils.js.map +1 -1
  29. package/dist/KeyHandler.js +2 -8
  30. package/dist/KeyHandler.js.map +1 -1
  31. package/dist/MockGridData.js.map +1 -1
  32. package/dist/MockGridModel.js +0 -42
  33. package/dist/MockGridModel.js.map +1 -1
  34. package/dist/MockTreeGridModel.js +6 -55
  35. package/dist/MockTreeGridModel.js.map +1 -1
  36. package/dist/StaticDataGridModel.js +0 -15
  37. package/dist/StaticDataGridModel.js.map +1 -1
  38. package/dist/ThemeContext.js.map +1 -1
  39. package/dist/ViewportDataGridModel.js +0 -14
  40. package/dist/ViewportDataGridModel.js.map +1 -1
  41. package/dist/errors/AssertionError.js +0 -3
  42. package/dist/errors/AssertionError.js.map +1 -1
  43. package/dist/errors/PasteError.js +0 -3
  44. package/dist/errors/PasteError.js.map +1 -1
  45. package/dist/errors/assertIsDefined.js.map +1 -1
  46. package/dist/errors/index.js.map +1 -1
  47. package/dist/index.js.map +1 -1
  48. package/dist/key-handlers/EditKeyHandler.js +0 -12
  49. package/dist/key-handlers/EditKeyHandler.js.map +1 -1
  50. package/dist/key-handlers/PasteKeyHandler.js +15 -33
  51. package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
  52. package/dist/key-handlers/SelectionKeyHandler.js +6 -53
  53. package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
  54. package/dist/key-handlers/TreeKeyHandler.js +0 -11
  55. package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
  56. package/dist/key-handlers/index.js.map +1 -1
  57. package/dist/memoizeClear.js +1 -4
  58. package/dist/memoizeClear.js.map +1 -1
  59. package/dist/mouse-handlers/EditMouseHandler.js +0 -5
  60. package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
  61. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +35 -123
  62. package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
  63. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -27
  64. package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
  65. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +0 -28
  66. package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
  67. package/dist/mouse-handlers/GridRowMoveMouseHandler.js +0 -27
  68. package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
  69. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +0 -23
  70. package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
  71. package/dist/mouse-handlers/GridRowTreeMouseHandler.js +0 -10
  72. package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
  73. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +0 -6
  74. package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
  75. package/dist/mouse-handlers/GridSelectionMouseHandler.js +8 -38
  76. package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
  77. package/dist/mouse-handlers/GridSeparatorMouseHandler.js +5 -54
  78. package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
  79. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +0 -28
  80. package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
  81. package/dist/mouse-handlers/index.js.map +1 -1
  82. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"GridRowMoveMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowMoveMouseHandler","onDown","gridPoint","grid","model","props","x","y","row","metrics","Error","columnHeaderHeight","rowHeaderWidth","visibleRowYs","isRowMovable","rowY","draggingOffset","setState","draggingRowOffset","onDrag","draggingRow","state","mouseX","mouseY","getGridPointFromXY","isDragging","top","lastTop","bottom","bottomVisible","rowCount","visibleRowHeights","height","minY","topRow","maxY","bottomRow","movedRows","moveItem","minMoveY","maxMoveY","onUp","undefined"],"sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nclass GridRowMoveMouseHandler extends GridMouseHandler {\n cursor = 'move';\n\n private draggingOffset?: number;\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, y, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { columnHeaderHeight, rowHeaderWidth, visibleRowYs } = metrics;\n\n if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {\n const rowY = getOrThrow(visibleRowYs, row);\n this.draggingOffset = y - rowY - columnHeaderHeight;\n grid.setState({ draggingRowOffset: this.draggingOffset });\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset == null) {\n return false;\n }\n\n const { model } = grid.props;\n let { draggingRow } = grid.state;\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n if (draggingRow == null) {\n const { row } = grid.getGridPointFromXY(mouseX, mouseY);\n if (row != null && !model.isRowMovable(row)) {\n return false;\n }\n\n draggingRow = row;\n\n grid.setState({ draggingRow, isDragging: true });\n\n if (draggingRow == null) {\n return false;\n }\n }\n\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n top,\n lastTop,\n bottom,\n bottomVisible,\n rowCount,\n columnHeaderHeight,\n visibleRowHeights,\n visibleRowYs,\n height,\n } = metrics;\n let minY = columnHeaderHeight;\n if (top < draggingRow) {\n const topRow = draggingRow - 1;\n minY =\n getOrThrow(visibleRowYs, topRow) +\n getOrThrow(visibleRowHeights, topRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let maxY = height;\n if (draggingRow < bottom) {\n const bottomRow = draggingRow + 1;\n maxY =\n getOrThrow(visibleRowYs, bottomRow) +\n getOrThrow(visibleRowHeights, bottomRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let { movedRows } = grid.state;\n if (\n mouseY < minY &&\n draggingRow > 0 &&\n model.isRowMovable(draggingRow - 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);\n draggingRow -= 1;\n } else if (\n maxY < mouseY &&\n draggingRow < rowCount - 1 &&\n model.isRowMovable(draggingRow + 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);\n draggingRow += 1;\n }\n grid.setState({ movedRows, draggingRow });\n\n const minMoveY =\n columnHeaderHeight + getOrThrow(visibleRowHeights, top) * 0.5;\n const maxMoveY =\n columnHeaderHeight +\n getOrThrow(visibleRowYs, bottomVisible) +\n getOrThrow(visibleRowHeights, bottomVisible) * 0.5;\n if (mouseY < minMoveY && top > 0) {\n grid.setState({ top: top - 1 });\n } else if (mouseY > maxMoveY && top < lastTop) {\n grid.setState({ top: top + 1 });\n }\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset !== undefined) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingRowOffset: null,\n draggingRow: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridRowMoveMouseHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridRowMoveMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowMoveMouseHandler","onDown","gridPoint","grid","model","props","x","y","row","metrics","Error","columnHeaderHeight","rowHeaderWidth","visibleRowYs","isRowMovable","rowY","draggingOffset","setState","draggingRowOffset","onDrag","draggingRow","state","mouseX","mouseY","getGridPointFromXY","isDragging","top","lastTop","bottom","bottomVisible","rowCount","visibleRowHeights","height","minY","topRow","maxY","bottomRow","movedRows","moveItem","minMoveY","maxMoveY","onUp","undefined"],"sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nclass GridRowMoveMouseHandler extends GridMouseHandler {\n cursor = 'move';\n\n private draggingOffset?: number;\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { model } = grid.props;\n const { x, y, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { columnHeaderHeight, rowHeaderWidth, visibleRowYs } = metrics;\n\n if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {\n const rowY = getOrThrow(visibleRowYs, row);\n this.draggingOffset = y - rowY - columnHeaderHeight;\n grid.setState({ draggingRowOffset: this.draggingOffset });\n }\n return false;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset == null) {\n return false;\n }\n\n const { model } = grid.props;\n let { draggingRow } = grid.state;\n const { mouseX, mouseY } = grid.state;\n if (mouseX == null || mouseY == null) {\n return false;\n }\n\n if (draggingRow == null) {\n const { row } = grid.getGridPointFromXY(mouseX, mouseY);\n if (row != null && !model.isRowMovable(row)) {\n return false;\n }\n\n draggingRow = row;\n\n grid.setState({ draggingRow, isDragging: true });\n\n if (draggingRow == null) {\n return false;\n }\n }\n\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n top,\n lastTop,\n bottom,\n bottomVisible,\n rowCount,\n columnHeaderHeight,\n visibleRowHeights,\n visibleRowYs,\n height,\n } = metrics;\n let minY = columnHeaderHeight;\n if (top < draggingRow) {\n const topRow = draggingRow - 1;\n minY =\n getOrThrow(visibleRowYs, topRow) +\n getOrThrow(visibleRowHeights, topRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let maxY = height;\n if (draggingRow < bottom) {\n const bottomRow = draggingRow + 1;\n maxY =\n getOrThrow(visibleRowYs, bottomRow) +\n getOrThrow(visibleRowHeights, bottomRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let { movedRows } = grid.state;\n if (\n mouseY < minY &&\n draggingRow > 0 &&\n model.isRowMovable(draggingRow - 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);\n draggingRow -= 1;\n } else if (\n maxY < mouseY &&\n draggingRow < rowCount - 1 &&\n model.isRowMovable(draggingRow + 1)\n ) {\n movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);\n draggingRow += 1;\n }\n grid.setState({ movedRows, draggingRow });\n\n const minMoveY =\n columnHeaderHeight + getOrThrow(visibleRowHeights, top) * 0.5;\n const maxMoveY =\n columnHeaderHeight +\n getOrThrow(visibleRowYs, bottomVisible) +\n getOrThrow(visibleRowHeights, bottomVisible) * 0.5;\n if (mouseY < minMoveY && top > 0) {\n grid.setState({ top: top - 1 });\n } else if (mouseY > maxMoveY && top < lastTop) {\n grid.setState({ top: top + 1 });\n }\n\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.draggingOffset !== undefined) {\n this.draggingOffset = undefined;\n grid.setState({\n draggingRowOffset: null,\n draggingRow: null,\n isDragging: false,\n });\n return true;\n }\n\n return false;\n }\n}\n\nexport default GridRowMoveMouseHandler;\n"],"mappings":"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"}
@@ -1,47 +1,29 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
2
  /* eslint class-methods-use-this: "off" */
4
3
  import GridUtils from "../GridUtils.js";
5
4
  import GridSeparatorMouseHandler from "./GridSeparatorMouseHandler.js";
6
-
7
5
  class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
8
6
  constructor() {
9
7
  super(...arguments);
10
-
11
8
  _defineProperty(this, "hiddenCursor", 's-resize');
12
-
13
9
  _defineProperty(this, "defaultCursor", 'row-resize');
14
-
15
10
  _defineProperty(this, "pointProperty", 'y');
16
-
17
11
  _defineProperty(this, "userSizesProperty", 'userRowHeights');
18
-
19
12
  _defineProperty(this, "visibleOffsetProperty", 'visibleRowYs');
20
-
21
13
  _defineProperty(this, "visibleSizesProperty", 'visibleRowHeights');
22
-
23
14
  _defineProperty(this, "marginProperty", 'columnHeaderHeight');
24
-
25
15
  _defineProperty(this, "calculatedSizesProperty", 'calculatedRowHeights');
26
-
27
16
  _defineProperty(this, "modelIndexesProperty", 'modelRows');
28
-
29
17
  _defineProperty(this, "firstIndexProperty", 'firstRow');
30
-
31
18
  _defineProperty(this, "treePaddingProperty", 'treePaddingY');
32
-
33
19
  _defineProperty(this, "getHiddenItems", GridUtils.getHiddenRows);
34
-
35
20
  _defineProperty(this, "getNextShownItem", GridUtils.getNextShownRow);
36
-
37
21
  _defineProperty(this, "getSeparator", GridRowSeparatorMouseHandler.getRowSeparator);
38
22
  }
39
-
40
23
  static getRowSeparator(gridPoint, metrics, model, theme) {
41
24
  if (!theme.allowRowResize) {
42
25
  return null;
43
26
  }
44
-
45
27
  var {
46
28
  x,
47
29
  y
@@ -52,23 +34,18 @@ class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
52
34
  depth: 0
53
35
  } : null;
54
36
  }
55
-
56
37
  setSize(metricCalculator, modelIndex, size) {
57
38
  metricCalculator.setRowHeight(modelIndex, size);
58
39
  }
59
-
60
40
  resetSize(metricCalculator, modelIndex) {
61
41
  metricCalculator.resetRowHeight(modelIndex);
62
42
  }
63
-
64
43
  updateSeparator(grid, separator) {
65
44
  grid.setState({
66
45
  draggingRowSeparator: separator,
67
46
  isDragging: separator !== null
68
47
  });
69
48
  }
70
-
71
49
  }
72
-
73
50
  export default GridRowSeparatorMouseHandler;
74
51
  //# sourceMappingURL=GridRowSeparatorMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridRowSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridRowSeparatorMouseHandler","getHiddenRows","getNextShownRow","getRowSeparator","gridPoint","metrics","model","theme","allowRowResize","x","y","index","getRowSeparatorIndex","depth","setSize","metricCalculator","modelIndex","size","setRowHeight","resetSize","resetRowHeight","updateSeparator","grid","separator","setState","draggingRowSeparator","isDragging"],"sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport Grid from '../Grid';\nimport GridMetricCalculator from '../GridMetricCalculator';\nimport type { ModelIndex, GridMetrics } from '../GridMetrics';\nimport type GridModel from '../GridModel';\nimport { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getRowSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowRowResize) {\n return null;\n }\n\n const { x, y } = gridPoint;\n\n const index = GridUtils.getRowSeparatorIndex(x, y, metrics, theme);\n\n return index != null ? { index, depth: 0 } : null;\n }\n\n hiddenCursor = 's-resize';\n\n defaultCursor = 'row-resize';\n\n pointProperty = 'y' as const;\n\n userSizesProperty = 'userRowHeights' as const;\n\n visibleOffsetProperty = 'visibleRowYs' as const;\n\n visibleSizesProperty = 'visibleRowHeights' as const;\n\n marginProperty = 'columnHeaderHeight' as const;\n\n calculatedSizesProperty = 'calculatedRowHeights' as const;\n\n modelIndexesProperty = 'modelRows' as const;\n\n firstIndexProperty = 'firstRow' as const;\n\n treePaddingProperty = 'treePaddingY' as const;\n\n getHiddenItems = GridUtils.getHiddenRows;\n\n getNextShownItem = GridUtils.getNextShownRow;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setRowHeight(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetRowHeight(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingRowSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridRowSeparatorMouseHandler.getRowSeparator;\n}\n\nexport default GridRowSeparatorMouseHandler;\n"],"mappings":";;AAAA;OAMOA,S;OACAC,yB;;AAIP,MAAMC,4BAAN,SAA2CD,yBAA3C,CAAqE;EAAA;IAAA;;IAAA,sCAkBpD,UAlBoD;;IAAA,uCAoBnD,YApBmD;;IAAA,uCAsBnD,GAtBmD;;IAAA,2CAwB/C,gBAxB+C;;IAAA,+CA0B3C,cA1B2C;;IAAA,8CA4B5C,mBA5B4C;;IAAA,wCA8BlD,oBA9BkD;;IAAA,iDAgCzC,sBAhCyC;;IAAA,8CAkC5C,WAlC4C;;IAAA,4CAoC9C,UApC8C;;IAAA,6CAsC7C,cAtC6C;;IAAA,wCAwClDD,SAAS,CAACG,aAxCwC;;IAAA,0CA0ChDH,SAAS,CAACI,eA1CsC;;IAAA,sCAkEpDF,4BAA4B,CAACG,eAlEuB;EAAA;;EAC7C,OAAfA,eAAe,CACpBC,SADoB,EAEpBC,OAFoB,EAGpBC,KAHoB,EAIpBC,KAJoB,EAKE;IACtB,IAAI,CAACA,KAAK,CAACC,cAAX,EAA2B;MACzB,OAAO,IAAP;IACD;;IAED,IAAM;MAAEC,CAAF;MAAKC;IAAL,IAAWN,SAAjB;IAEA,IAAMO,KAAK,GAAGb,SAAS,CAACc,oBAAV,CAA+BH,CAA/B,EAAkCC,CAAlC,EAAqCL,OAArC,EAA8CE,KAA9C,CAAd;IAEA,OAAOI,KAAK,IAAI,IAAT,GAAgB;MAAEA,KAAF;MAASE,KAAK,EAAE;IAAhB,CAAhB,GAAsC,IAA7C;EACD;;EA4BDC,OAAO,CACLC,gBADK,EAELC,UAFK,EAGLC,IAHK,EAIC;IACNF,gBAAgB,CAACG,YAAjB,CAA8BF,UAA9B,EAA0CC,IAA1C;EACD;;EAEDE,SAAS,CACPJ,gBADO,EAEPC,UAFO,EAGD;IACND,gBAAgB,CAACK,cAAjB,CAAgCJ,UAAhC;EACD;;EAEDK,eAAe,CAACC,IAAD,EAAaC,SAAb,EAAoD;IACjED,IAAI,CAACE,QAAL,CAAc;MACZC,oBAAoB,EAAEF,SADV;MAEZG,UAAU,EAAEH,SAAS,KAAK;IAFd,CAAd;EAID;;AAhEkE;;AAqErE,eAAevB,4BAAf"}
1
+ {"version":3,"file":"GridRowSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridRowSeparatorMouseHandler","getHiddenRows","getNextShownRow","getRowSeparator","gridPoint","metrics","model","theme","allowRowResize","x","y","index","getRowSeparatorIndex","depth","setSize","metricCalculator","modelIndex","size","setRowHeight","resetSize","resetRowHeight","updateSeparator","grid","separator","setState","draggingRowSeparator","isDragging"],"sources":["../../src/mouse-handlers/GridRowSeparatorMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport Grid from '../Grid';\nimport GridMetricCalculator from '../GridMetricCalculator';\nimport type { ModelIndex, GridMetrics } from '../GridMetrics';\nimport type GridModel from '../GridModel';\nimport { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getRowSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowRowResize) {\n return null;\n }\n\n const { x, y } = gridPoint;\n\n const index = GridUtils.getRowSeparatorIndex(x, y, metrics, theme);\n\n return index != null ? { index, depth: 0 } : null;\n }\n\n hiddenCursor = 's-resize';\n\n defaultCursor = 'row-resize';\n\n pointProperty = 'y' as const;\n\n userSizesProperty = 'userRowHeights' as const;\n\n visibleOffsetProperty = 'visibleRowYs' as const;\n\n visibleSizesProperty = 'visibleRowHeights' as const;\n\n marginProperty = 'columnHeaderHeight' as const;\n\n calculatedSizesProperty = 'calculatedRowHeights' as const;\n\n modelIndexesProperty = 'modelRows' as const;\n\n firstIndexProperty = 'firstRow' as const;\n\n treePaddingProperty = 'treePaddingY' as const;\n\n getHiddenItems = GridUtils.getHiddenRows;\n\n getNextShownItem = GridUtils.getNextShownRow;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setRowHeight(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetRowHeight(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingRowSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridRowSeparatorMouseHandler.getRowSeparator;\n}\n\nexport default GridRowSeparatorMouseHandler;\n"],"mappings":";AAAA;AAAA,OAMOA,SAAS;AAAA,OACTC,yBAAyB;AAIhC,MAAMC,4BAA4B,SAASD,yBAAyB,CAAC;EAAA;IAAA;IAAA,sCAkBpD,UAAU;IAAA,uCAET,YAAY;IAAA,uCAEZ,GAAG;IAAA,2CAEC,gBAAgB;IAAA,+CAEZ,cAAc;IAAA,8CAEf,mBAAmB;IAAA,wCAEzB,oBAAoB;IAAA,iDAEX,sBAAsB;IAAA,8CAEzB,WAAW;IAAA,4CAEb,UAAU;IAAA,6CAET,cAAc;IAAA,wCAEnBD,SAAS,CAACG,aAAa;IAAA,0CAErBH,SAAS,CAACI,eAAe;IAAA,sCAwB7BF,4BAA4B,CAACG,eAAe;EAAA;EAjE3D,OAAOA,eAAe,CACpBC,SAAoB,EACpBC,OAAoB,EACpBC,KAAgB,EAChBC,KAAgB,EACM;IACtB,IAAI,CAACA,KAAK,CAACC,cAAc,EAAE;MACzB,OAAO,IAAI;IACb;IAEA,IAAM;MAAEC,CAAC;MAAEC;IAAE,CAAC,GAAGN,SAAS;IAE1B,IAAMO,KAAK,GAAGb,SAAS,CAACc,oBAAoB,CAACH,CAAC,EAAEC,CAAC,EAAEL,OAAO,EAAEE,KAAK,CAAC;IAElE,OAAOI,KAAK,IAAI,IAAI,GAAG;MAAEA,KAAK;MAAEE,KAAK,EAAE;IAAE,CAAC,GAAG,IAAI;EACnD;EA4BAC,OAAO,CACLC,gBAAsC,EACtCC,UAAsB,EACtBC,IAAY,EACN;IACNF,gBAAgB,CAACG,YAAY,CAACF,UAAU,EAAEC,IAAI,CAAC;EACjD;EAEAE,SAAS,CACPJ,gBAAsC,EACtCC,UAAsB,EAChB;IACND,gBAAgB,CAACK,cAAc,CAACJ,UAAU,CAAC;EAC7C;EAEAK,eAAe,CAACC,IAAU,EAAEC,SAA+B,EAAQ;IACjED,IAAI,CAACE,QAAQ,CAAC;MACZC,oBAAoB,EAAEF,SAAS;MAC/BG,UAAU,EAAEH,SAAS,KAAK;IAC5B,CAAC,CAAC;EACJ;AAGF;AAEA,eAAevB,4BAA4B"}
@@ -1,7 +1,6 @@
1
1
  /* eslint class-methods-use-this: "off" */
2
2
  import { getOrThrow } from "../GridMetricCalculator.js";
3
3
  import GridMouseHandler from "../GridMouseHandler.js";
4
-
5
4
  /**
6
5
  * Detect when the tree expand/collapse button is clicked
7
6
  */
@@ -27,41 +26,32 @@ class GridRowTreeMouseHandler extends GridMouseHandler {
27
26
  visibleRowYs,
28
27
  visibleRowTreeBoxes
29
28
  } = metrics;
30
-
31
29
  if (column === firstColumn && row != null && visibleRowTreeBoxes.get(row) != null && x > gridX && y > gridY) {
32
30
  var columnX = getOrThrow(visibleColumnXs, column);
33
31
  var width = getOrThrow(visibleColumnWidths, column);
34
32
  var rowY = getOrThrow(visibleRowYs, row);
35
33
  var height = getOrThrow(visibleRowHeights, row);
36
-
37
34
  if (x >= gridX + columnX && x <= gridX + columnX + width && y >= gridY + rowY && y <= gridY + rowY + height) {
38
35
  return true;
39
36
  }
40
37
  }
41
-
42
38
  return false;
43
39
  }
44
-
45
40
  onDown(gridPoint, grid) {
46
41
  return GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid);
47
42
  }
48
-
49
43
  onClick(gridPoint, grid) {
50
44
  if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {
51
45
  var {
52
46
  row
53
47
  } = gridPoint;
54
-
55
48
  if (row !== null) {
56
49
  grid.toggleRowExpanded(row);
57
50
  return true;
58
51
  }
59
52
  }
60
-
61
53
  return false;
62
54
  }
63
-
64
55
  }
65
-
66
56
  export default GridRowTreeMouseHandler;
67
57
  //# sourceMappingURL=GridRowTreeMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridRowTreeMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridRowTreeMouseHandler","isInTreeBox","gridPoint","grid","column","row","x","y","metrics","Error","gridX","gridY","firstColumn","visibleColumnXs","visibleColumnWidths","visibleRowHeights","visibleRowYs","visibleRowTreeBoxes","get","columnX","width","rowY","height","onDown","onClick","toggleRowExpanded"],"sources":["../../src/mouse-handlers/GridRowTreeMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/**\n * Detect when the tree expand/collapse button is clicked\n */\nclass GridRowTreeMouseHandler extends GridMouseHandler {\n static isInTreeBox(gridPoint: GridPoint, grid: Grid): boolean {\n const { column, row, x, y } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n gridX,\n gridY,\n firstColumn,\n visibleColumnXs,\n visibleColumnWidths,\n visibleRowHeights,\n visibleRowYs,\n visibleRowTreeBoxes,\n } = metrics;\n\n if (\n column === firstColumn &&\n row != null &&\n visibleRowTreeBoxes.get(row) != null &&\n x > gridX &&\n y > gridY\n ) {\n const columnX = getOrThrow(visibleColumnXs, column);\n const width = getOrThrow(visibleColumnWidths, column);\n const rowY = getOrThrow(visibleRowYs, row);\n const height = getOrThrow(visibleRowHeights, row);\n if (\n x >= gridX + columnX &&\n x <= gridX + columnX + width &&\n y >= gridY + rowY &&\n y <= gridY + rowY + height\n ) {\n return true;\n }\n }\n return false;\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n const { row } = gridPoint;\n if (row !== null) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n return false;\n }\n}\n\nexport default GridRowTreeMouseHandler;\n"],"mappings":"AAAA;SAGSA,U;OACFC,gB;;AAGP;AACA;AACA;AACA,MAAMC,uBAAN,SAAsCD,gBAAtC,CAAuD;EACnC,OAAXE,WAAW,CAACC,SAAD,EAAuBC,IAAvB,EAA4C;IAC5D,IAAM;MAAEC,MAAF;MAAUC,GAAV;MAAeC,CAAf;MAAkBC;IAAlB,IAAwBL,SAA9B;IACA,IAAM;MAAEM;IAAF,IAAcL,IAApB;IACA,IAAI,CAACK,OAAL,EAAc,MAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAM;MACJC,KADI;MAEJC,KAFI;MAGJC,WAHI;MAIJC,eAJI;MAKJC,mBALI;MAMJC,iBANI;MAOJC,YAPI;MAQJC;IARI,IASFT,OATJ;;IAWA,IACEJ,MAAM,KAAKQ,WAAX,IACAP,GAAG,IAAI,IADP,IAEAY,mBAAmB,CAACC,GAApB,CAAwBb,GAAxB,KAAgC,IAFhC,IAGAC,CAAC,GAAGI,KAHJ,IAIAH,CAAC,GAAGI,KALN,EAME;MACA,IAAMQ,OAAO,GAAGrB,UAAU,CAACe,eAAD,EAAkBT,MAAlB,CAA1B;MACA,IAAMgB,KAAK,GAAGtB,UAAU,CAACgB,mBAAD,EAAsBV,MAAtB,CAAxB;MACA,IAAMiB,IAAI,GAAGvB,UAAU,CAACkB,YAAD,EAAeX,GAAf,CAAvB;MACA,IAAMiB,MAAM,GAAGxB,UAAU,CAACiB,iBAAD,EAAoBV,GAApB,CAAzB;;MACA,IACEC,CAAC,IAAII,KAAK,GAAGS,OAAb,IACAb,CAAC,IAAII,KAAK,GAAGS,OAAR,GAAkBC,KADvB,IAEAb,CAAC,IAAII,KAAK,GAAGU,IAFb,IAGAd,CAAC,IAAII,KAAK,GAAGU,IAAR,GAAeC,MAJtB,EAKE;QACA,OAAO,IAAP;MACD;IACF;;IACD,OAAO,KAAP;EACD;;EAEDC,MAAM,CAACrB,SAAD,EAAuBC,IAAvB,EAAuD;IAC3D,OAAOH,uBAAuB,CAACC,WAAxB,CAAoCC,SAApC,EAA+CC,IAA/C,CAAP;EACD;;EAEDqB,OAAO,CAACtB,SAAD,EAAuBC,IAAvB,EAAuD;IAC5D,IAAIH,uBAAuB,CAACC,WAAxB,CAAoCC,SAApC,EAA+CC,IAA/C,CAAJ,EAA0D;MACxD,IAAM;QAAEE;MAAF,IAAUH,SAAhB;;MACA,IAAIG,GAAG,KAAK,IAAZ,EAAkB;QAChBF,IAAI,CAACsB,iBAAL,CAAuBpB,GAAvB;QACA,OAAO,IAAP;MACD;IACF;;IACD,OAAO,KAAP;EACD;;AArDoD;;AAwDvD,eAAeL,uBAAf"}
1
+ {"version":3,"file":"GridRowTreeMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridRowTreeMouseHandler","isInTreeBox","gridPoint","grid","column","row","x","y","metrics","Error","gridX","gridY","firstColumn","visibleColumnXs","visibleColumnWidths","visibleRowHeights","visibleRowYs","visibleRowTreeBoxes","get","columnX","width","rowY","height","onDown","onClick","toggleRowExpanded"],"sources":["../../src/mouse-handlers/GridRowTreeMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { getOrThrow } from '../GridMetricCalculator';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/**\n * Detect when the tree expand/collapse button is clicked\n */\nclass GridRowTreeMouseHandler extends GridMouseHandler {\n static isInTreeBox(gridPoint: GridPoint, grid: Grid): boolean {\n const { column, row, x, y } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const {\n gridX,\n gridY,\n firstColumn,\n visibleColumnXs,\n visibleColumnWidths,\n visibleRowHeights,\n visibleRowYs,\n visibleRowTreeBoxes,\n } = metrics;\n\n if (\n column === firstColumn &&\n row != null &&\n visibleRowTreeBoxes.get(row) != null &&\n x > gridX &&\n y > gridY\n ) {\n const columnX = getOrThrow(visibleColumnXs, column);\n const width = getOrThrow(visibleColumnWidths, column);\n const rowY = getOrThrow(visibleRowYs, row);\n const height = getOrThrow(visibleRowHeights, row);\n if (\n x >= gridX + columnX &&\n x <= gridX + columnX + width &&\n y >= gridY + rowY &&\n y <= gridY + rowY + height\n ) {\n return true;\n }\n }\n return false;\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n const { row } = gridPoint;\n if (row !== null) {\n grid.toggleRowExpanded(row);\n return true;\n }\n }\n return false;\n }\n}\n\nexport default GridRowTreeMouseHandler;\n"],"mappings":"AAAA;AAAA,SAGSA,UAAU;AAAA,OACZC,gBAAgB;AAGvB;AACA;AACA;AACA,MAAMC,uBAAuB,SAASD,gBAAgB,CAAC;EACrD,OAAOE,WAAW,CAACC,SAAoB,EAAEC,IAAU,EAAW;IAC5D,IAAM;MAAEC,MAAM;MAAEC,GAAG;MAAEC,CAAC;MAAEC;IAAE,CAAC,GAAGL,SAAS;IACvC,IAAM;MAAEM;IAAQ,CAAC,GAAGL,IAAI;IACxB,IAAI,CAACK,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;IAEhD,IAAM;MACJC,KAAK;MACLC,KAAK;MACLC,WAAW;MACXC,eAAe;MACfC,mBAAmB;MACnBC,iBAAiB;MACjBC,YAAY;MACZC;IACF,CAAC,GAAGT,OAAO;IAEX,IACEJ,MAAM,KAAKQ,WAAW,IACtBP,GAAG,IAAI,IAAI,IACXY,mBAAmB,CAACC,GAAG,CAACb,GAAG,CAAC,IAAI,IAAI,IACpCC,CAAC,GAAGI,KAAK,IACTH,CAAC,GAAGI,KAAK,EACT;MACA,IAAMQ,OAAO,GAAGrB,UAAU,CAACe,eAAe,EAAET,MAAM,CAAC;MACnD,IAAMgB,KAAK,GAAGtB,UAAU,CAACgB,mBAAmB,EAAEV,MAAM,CAAC;MACrD,IAAMiB,IAAI,GAAGvB,UAAU,CAACkB,YAAY,EAAEX,GAAG,CAAC;MAC1C,IAAMiB,MAAM,GAAGxB,UAAU,CAACiB,iBAAiB,EAAEV,GAAG,CAAC;MACjD,IACEC,CAAC,IAAII,KAAK,GAAGS,OAAO,IACpBb,CAAC,IAAII,KAAK,GAAGS,OAAO,GAAGC,KAAK,IAC5Bb,CAAC,IAAII,KAAK,GAAGU,IAAI,IACjBd,CAAC,IAAII,KAAK,GAAGU,IAAI,GAAGC,MAAM,EAC1B;QACA,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;EAEAC,MAAM,CAACrB,SAAoB,EAAEC,IAAU,EAAsB;IAC3D,OAAOH,uBAAuB,CAACC,WAAW,CAACC,SAAS,EAAEC,IAAI,CAAC;EAC7D;EAEAqB,OAAO,CAACtB,SAAoB,EAAEC,IAAU,EAAsB;IAC5D,IAAIH,uBAAuB,CAACC,WAAW,CAACC,SAAS,EAAEC,IAAI,CAAC,EAAE;MACxD,IAAM;QAAEE;MAAI,CAAC,GAAGH,SAAS;MACzB,IAAIG,GAAG,KAAK,IAAI,EAAE;QAChBF,IAAI,CAACsB,iBAAiB,CAACpB,GAAG,CAAC;QAC3B,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAeL,uBAAuB"}
@@ -1,6 +1,5 @@
1
1
  /* eslint class-methods-use-this: "off" */
2
2
  import GridMouseHandler from "../GridMouseHandler.js";
3
-
4
3
  /**
5
4
  * Used to eat the mouse event in the bottom right corner of the scroll bar
6
5
  */
@@ -26,20 +25,15 @@ class GridScrollBarCornerMouseHandler extends GridMouseHandler {
26
25
  } = metrics;
27
26
  return scrollBarSize > 0 && hasVerticalBar && hasHorizontalBar && x >= width - scrollBarSize && y >= height - scrollBarSize && x <= width && y <= height;
28
27
  }
29
-
30
28
  onDown(gridPoint, grid) {
31
29
  return this.isInCorner(gridPoint, grid);
32
30
  }
33
-
34
31
  onUp(gridPoint, grid) {
35
32
  return this.isInCorner(gridPoint, grid);
36
33
  }
37
-
38
34
  onClick(gridPoint, grid) {
39
35
  return this.isInCorner(gridPoint, grid);
40
36
  }
41
-
42
37
  }
43
-
44
38
  export default GridScrollBarCornerMouseHandler;
45
39
  //# sourceMappingURL=GridScrollBarCornerMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridScrollBarCornerMouseHandler.js","names":["GridMouseHandler","GridScrollBarCornerMouseHandler","isInCorner","gridPoint","grid","theme","getTheme","scrollBarSize","metrics","Error","x","y","width","height","hasVerticalBar","hasHorizontalBar","onDown","onUp","onClick"],"sources":["../../src/mouse-handlers/GridScrollBarCornerMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass GridScrollBarCornerMouseHandler extends GridMouseHandler {\n isInCorner(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n const { scrollBarSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { width, height, hasVerticalBar, hasHorizontalBar } = metrics;\n return (\n scrollBarSize > 0 &&\n hasVerticalBar &&\n hasHorizontalBar &&\n x >= width - scrollBarSize &&\n y >= height - scrollBarSize &&\n x <= width &&\n y <= height\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n}\n\nexport default GridScrollBarCornerMouseHandler;\n"],"mappings":"AAAA;OAGOA,gB;;AAGP;AACA;AACA;AACA,MAAMC,+BAAN,SAA8CD,gBAA9C,CAA+D;EAC7DE,UAAU,CAACC,SAAD,EAAuBC,IAAvB,EAA4C;IACpD,IAAMC,KAAK,GAAGD,IAAI,CAACE,QAAL,EAAd;IACA,IAAM;MAAEC;IAAF,IAAoBF,KAA1B;IACA,IAAM;MAAEG;IAAF,IAAcJ,IAApB;IACA,IAAI,CAACI,OAAL,EAAc,MAAM,IAAIC,KAAJ,CAAU,iBAAV,CAAN;IAEd,IAAM;MAAEC,CAAF;MAAKC;IAAL,IAAWR,SAAjB;IACA,IAAM;MAAES,KAAF;MAASC,MAAT;MAAiBC,cAAjB;MAAiCC;IAAjC,IAAsDP,OAA5D;IACA,OACED,aAAa,GAAG,CAAhB,IACAO,cADA,IAEAC,gBAFA,IAGAL,CAAC,IAAIE,KAAK,GAAGL,aAHb,IAIAI,CAAC,IAAIE,MAAM,GAAGN,aAJd,IAKAG,CAAC,IAAIE,KALL,IAMAD,CAAC,IAAIE,MAPP;EASD;;EAEDG,MAAM,CAACb,SAAD,EAAuBC,IAAvB,EAAuD;IAC3D,OAAO,KAAKF,UAAL,CAAgBC,SAAhB,EAA2BC,IAA3B,CAAP;EACD;;EAEDa,IAAI,CAACd,SAAD,EAAuBC,IAAvB,EAAuD;IACzD,OAAO,KAAKF,UAAL,CAAgBC,SAAhB,EAA2BC,IAA3B,CAAP;EACD;;EAEDc,OAAO,CAACf,SAAD,EAAuBC,IAAvB,EAAuD;IAC5D,OAAO,KAAKF,UAAL,CAAgBC,SAAhB,EAA2BC,IAA3B,CAAP;EACD;;AA9B4D;;AAiC/D,eAAeH,+BAAf"}
1
+ {"version":3,"file":"GridScrollBarCornerMouseHandler.js","names":["GridMouseHandler","GridScrollBarCornerMouseHandler","isInCorner","gridPoint","grid","theme","getTheme","scrollBarSize","metrics","Error","x","y","width","height","hasVerticalBar","hasHorizontalBar","onDown","onUp","onClick"],"sources":["../../src/mouse-handlers/GridScrollBarCornerMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/**\n * Used to eat the mouse event in the bottom right corner of the scroll bar\n */\nclass GridScrollBarCornerMouseHandler extends GridMouseHandler {\n isInCorner(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n const { scrollBarSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { width, height, hasVerticalBar, hasHorizontalBar } = metrics;\n return (\n scrollBarSize > 0 &&\n hasVerticalBar &&\n hasHorizontalBar &&\n x >= width - scrollBarSize &&\n y >= height - scrollBarSize &&\n x <= width &&\n y <= height\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInCorner(gridPoint, grid);\n }\n}\n\nexport default GridScrollBarCornerMouseHandler;\n"],"mappings":"AAAA;AAAA,OAGOA,gBAAgB;AAGvB;AACA;AACA;AACA,MAAMC,+BAA+B,SAASD,gBAAgB,CAAC;EAC7DE,UAAU,CAACC,SAAoB,EAAEC,IAAU,EAAW;IACpD,IAAMC,KAAK,GAAGD,IAAI,CAACE,QAAQ,EAAE;IAC7B,IAAM;MAAEC;IAAc,CAAC,GAAGF,KAAK;IAC/B,IAAM;MAAEG;IAAQ,CAAC,GAAGJ,IAAI;IACxB,IAAI,CAACI,OAAO,EAAE,MAAM,IAAIC,KAAK,CAAC,iBAAiB,CAAC;IAEhD,IAAM;MAAEC,CAAC;MAAEC;IAAE,CAAC,GAAGR,SAAS;IAC1B,IAAM;MAAES,KAAK;MAAEC,MAAM;MAAEC,cAAc;MAAEC;IAAiB,CAAC,GAAGP,OAAO;IACnE,OACED,aAAa,GAAG,CAAC,IACjBO,cAAc,IACdC,gBAAgB,IAChBL,CAAC,IAAIE,KAAK,GAAGL,aAAa,IAC1BI,CAAC,IAAIE,MAAM,GAAGN,aAAa,IAC3BG,CAAC,IAAIE,KAAK,IACVD,CAAC,IAAIE,MAAM;EAEf;EAEAG,MAAM,CAACb,SAAoB,EAAEC,IAAU,EAAsB;IAC3D,OAAO,IAAI,CAACF,UAAU,CAACC,SAAS,EAAEC,IAAI,CAAC;EACzC;EAEAa,IAAI,CAACd,SAAoB,EAAEC,IAAU,EAAsB;IACzD,OAAO,IAAI,CAACF,UAAU,CAACC,SAAS,EAAEC,IAAI,CAAC;EACzC;EAEAc,OAAO,CAACf,SAAoB,EAAEC,IAAU,EAAsB;IAC5D,OAAO,IAAI,CAACF,UAAU,CAACC,SAAS,EAAEC,IAAI,CAAC;EACzC;AACF;AAEA,eAAeH,+BAA+B"}
@@ -1,24 +1,16 @@
1
1
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
-
3
2
  import GridMouseHandler from "../GridMouseHandler.js";
4
3
  import GridUtils from "../GridUtils.js";
5
4
  var DEFAULT_INTERVAL_MS = 100;
6
-
7
5
  class GridSelectionMouseHandler extends GridMouseHandler {
8
6
  constructor() {
9
7
  super(...arguments);
10
-
11
8
  _defineProperty(this, "startPoint", void 0);
12
-
13
9
  _defineProperty(this, "hasExtendedFloating", false);
14
-
15
10
  _defineProperty(this, "timer", void 0);
16
-
17
11
  _defineProperty(this, "lastTriggerTime", void 0);
18
-
19
12
  _defineProperty(this, "dragBounds", void 0);
20
13
  }
21
-
22
14
  onDown(gridPoint, grid, event) {
23
15
  var {
24
16
  x,
@@ -38,14 +30,11 @@ class GridSelectionMouseHandler extends GridMouseHandler {
38
30
  } = metrics;
39
31
  var gridMouseX = x - gridX;
40
32
  var gridMouseY = y - gridY;
41
-
42
33
  if (gridMouseX < 0 || gridMouseY < 0 || column == null && gridMouseX > maxX || row == null && gridMouseY > maxY) {
43
34
  return false;
44
35
  }
45
-
46
36
  var isModifierKey = GridUtils.isModifierKeyDown(event);
47
37
  var isShiftKey = event.shiftKey;
48
-
49
38
  if (!isModifierKey) {
50
39
  if (isShiftKey) {
51
40
  grid.trimSelectedRanges();
@@ -53,29 +42,25 @@ class GridSelectionMouseHandler extends GridMouseHandler {
53
42
  grid.clearSelectedRanges();
54
43
  }
55
44
  }
56
-
57
45
  var theme = grid.getTheme();
58
46
  var {
59
47
  autoSelectRow,
60
48
  autoSelectColumn
61
- } = theme; // If they click a column/row header, don't want to select the whole table if auto select column/row is on
62
-
49
+ } = theme;
50
+ // If they click a column/row header, don't want to select the whole table if auto select column/row is on
63
51
  if ((column !== null || !autoSelectColumn) && (row !== null || !autoSelectRow)) {
64
52
  grid.focus();
65
53
  grid.moveCursorToPosition(column, row, isShiftKey, false, isShiftKey && isModifierKey);
66
54
  }
67
-
68
55
  this.startPoint = gridPoint;
69
56
  this.hasExtendedFloating = false;
70
57
  this.dragBounds = GridUtils.getScrollDragBounds(metrics, row, column);
71
58
  return true;
72
59
  }
73
-
74
60
  onDrag(gridPoint, grid) {
75
61
  if (this.startPoint === undefined) {
76
62
  return false;
77
63
  }
78
-
79
64
  this.stopTimer();
80
65
  var {
81
66
  row: startRow,
@@ -101,11 +86,11 @@ class GridSelectionMouseHandler extends GridMouseHandler {
101
86
  columnWidth,
102
87
  rowHeight
103
88
  } = metrics;
104
- var dragBounds = GridUtils.getScrollDragBounds(metrics, startRow, startColumn); // If we're dragging outside of the grid entirely, then we should start scrolling
89
+ var dragBounds = GridUtils.getScrollDragBounds(metrics, startRow, startColumn);
105
90
 
91
+ // If we're dragging outside of the grid entirely, then we should start scrolling
106
92
  var deltaX = 0;
107
93
  var deltaY = 0;
108
-
109
94
  if (left < lastLeft) {
110
95
  if (x < dragBounds.x1) {
111
96
  deltaX = x - dragBounds.x1;
@@ -113,7 +98,6 @@ class GridSelectionMouseHandler extends GridMouseHandler {
113
98
  deltaX = x - dragBounds.x2;
114
99
  }
115
100
  }
116
-
117
101
  if (top < lastTop) {
118
102
  if (y < dragBounds.y1) {
119
103
  deltaY = y - dragBounds.y1;
@@ -121,7 +105,6 @@ class GridSelectionMouseHandler extends GridMouseHandler {
121
105
  deltaY = y - dragBounds.y2;
122
106
  }
123
107
  }
124
-
125
108
  if (deltaX !== 0 || deltaY !== 0) {
126
109
  // Have it go faster depending on how far out they've dragged
127
110
  this.startTimer(grid, gridPoint, deltaX > 0 ? Math.ceil(deltaX / columnWidth) : Math.floor(deltaX / columnWidth), deltaY > 0 ? Math.ceil(deltaY / rowHeight) : Math.floor(deltaY / rowHeight));
@@ -139,9 +122,9 @@ class GridSelectionMouseHandler extends GridMouseHandler {
139
122
  bottomVisible,
140
123
  leftVisible,
141
124
  rightVisible
142
- } = metrics; // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area
125
+ } = metrics;
126
+ // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area
143
127
  // So when that happens, just adjust the point to be past the new boundary
144
-
145
128
  if (!this.hasExtendedFloating) {
146
129
  if (startRow !== null && startRow < floatingTopRowCount && row >= floatingTopRowCount) {
147
130
  // Extending from floating top into the view
@@ -152,7 +135,6 @@ class GridSelectionMouseHandler extends GridMouseHandler {
152
135
  row = rowCount - floatingBottomRowCount - 1;
153
136
  this.hasExtendedFloating = true;
154
137
  }
155
-
156
138
  if (startColumn !== null && startColumn < floatingLeftColumnCount && column >= floatingLeftColumnCount) {
157
139
  // Extending from floating left into the view
158
140
  column = floatingLeftColumnCount;
@@ -162,9 +144,9 @@ class GridSelectionMouseHandler extends GridMouseHandler {
162
144
  column = columnCount - floatingRightColumnCount - 1;
163
145
  this.hasExtendedFloating = true;
164
146
  }
165
- } // When a selection is dragging from within the main area to over a floating area, scroll.
166
-
147
+ }
167
148
 
149
+ // When a selection is dragging from within the main area to over a floating area, scroll.
168
150
  if (startRow !== null && !GridUtils.isFloatingRow(startRow, metrics) && GridUtils.isFloatingRow(row, metrics)) {
169
151
  // Need to scroll
170
152
  if (startRow > row && row < top) {
@@ -173,7 +155,6 @@ class GridSelectionMouseHandler extends GridMouseHandler {
173
155
  row = bottomVisible + 1;
174
156
  }
175
157
  }
176
-
177
158
  if (startColumn !== null && !GridUtils.isFloatingColumn(startColumn, metrics) && GridUtils.isFloatingColumn(column, metrics)) {
178
159
  if (startColumn > column && column < left) {
179
160
  column = leftVisible - 1;
@@ -181,13 +162,10 @@ class GridSelectionMouseHandler extends GridMouseHandler {
181
162
  column = rightVisible + 1;
182
163
  }
183
164
  }
184
-
185
165
  grid.moveCursorToPosition(column, row, true, true);
186
166
  }
187
-
188
167
  return true;
189
168
  }
190
-
191
169
  onUp(gridPoint, grid) {
192
170
  if (this.startPoint !== undefined) {
193
171
  this.startPoint = undefined;
@@ -195,10 +173,8 @@ class GridSelectionMouseHandler extends GridMouseHandler {
195
173
  this.stopTimer();
196
174
  grid.commitSelection();
197
175
  }
198
-
199
176
  return false;
200
177
  }
201
-
202
178
  moveSelection(grid, gridPoint, deltaX, deltaY) {
203
179
  var {
204
180
  row,
@@ -212,11 +188,9 @@ class GridSelectionMouseHandler extends GridMouseHandler {
212
188
  selectionEndRow,
213
189
  selectionEndColumn
214
190
  } = grid.state;
215
-
216
191
  if (selectionEndRow == null || selectionEndColumn == null) {
217
192
  throw new Error('selection not set');
218
193
  }
219
-
220
194
  var {
221
195
  rowCount,
222
196
  columnCount
@@ -228,7 +202,6 @@ class GridSelectionMouseHandler extends GridMouseHandler {
228
202
  grid.moveCursorToPosition(Math.min(Math.max(minX, selectionEndColumn + deltaX), maxX), Math.min(Math.max(minY, selectionEndRow + deltaY), maxY), true);
229
203
  this.lastTriggerTime = Date.now();
230
204
  }
231
-
232
205
  startTimer(grid, gridPoint, deltaX, deltaY) {
233
206
  this.stopTimer();
234
207
  var timeout = this.lastTriggerTime != null ? DEFAULT_INTERVAL_MS - Math.min(DEFAULT_INTERVAL_MS, Date.now() - this.lastTriggerTime) : 0;
@@ -237,15 +210,12 @@ class GridSelectionMouseHandler extends GridMouseHandler {
237
210
  this.startTimer(grid, gridPoint, deltaX, deltaY);
238
211
  }, timeout);
239
212
  }
240
-
241
213
  stopTimer() {
242
214
  if (this.timer !== undefined) {
243
215
  clearTimeout(this.timer);
244
216
  this.timer = undefined;
245
217
  }
246
218
  }
247
-
248
219
  }
249
-
250
220
  export default GridSelectionMouseHandler;
251
221
  //# sourceMappingURL=GridSelectionMouseHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"GridSelectionMouseHandler.js","names":["GridMouseHandler","GridUtils","DEFAULT_INTERVAL_MS","GridSelectionMouseHandler","onDown","gridPoint","grid","event","x","y","column","row","metrics","Error","gridX","gridY","maxX","maxY","gridMouseX","gridMouseY","isModifierKey","isModifierKeyDown","isShiftKey","shiftKey","trimSelectedRanges","clearSelectedRanges","theme","getTheme","autoSelectRow","autoSelectColumn","focus","moveCursorToPosition","startPoint","hasExtendedFloating","dragBounds","getScrollDragBounds","onDrag","undefined","stopTimer","startRow","startColumn","left","lastLeft","top","lastTop","columnWidth","rowHeight","deltaX","deltaY","x1","x2","y1","y2","startTimer","Math","ceil","floor","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnCount","rowCount","bottom","right","topVisible","bottomVisible","leftVisible","rightVisible","isFloatingRow","isFloatingColumn","onUp","commitSelection","moveSelection","selectionEndRow","selectionEndColumn","state","minX","minY","min","max","lastTriggerTime","Date","now","timeout","timer","setTimeout","clearTimeout"],"sources":["../../src/mouse-handlers/GridSelectionMouseHandler.ts"],"sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { BoxCoordinates } from '../GridMetrics';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nconst DEFAULT_INTERVAL_MS = 100;\n\nclass GridSelectionMouseHandler extends GridMouseHandler {\n private startPoint?: GridPoint;\n\n private hasExtendedFloating = false;\n\n // Timer used when holding a drag past the end of the grid\n private timer?: ReturnType<typeof setTimeout>;\n\n private lastTriggerTime?: number;\n\n private dragBounds?: BoxCoordinates;\n\n onDown(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const { x, y, column, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { gridX, gridY, maxX, maxY } = metrics;\n const gridMouseX = x - gridX;\n const gridMouseY = y - gridY;\n if (\n gridMouseX < 0 ||\n gridMouseY < 0 ||\n (column == null && gridMouseX > maxX) ||\n (row == null && gridMouseY > maxY)\n ) {\n return false;\n }\n\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n const isShiftKey = event.shiftKey;\n if (!isModifierKey) {\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n }\n\n const theme = grid.getTheme();\n const { autoSelectRow, autoSelectColumn } = theme;\n // If they click a column/row header, don't want to select the whole table if auto select column/row is on\n if (\n (column !== null || !autoSelectColumn) &&\n (row !== null || !autoSelectRow)\n ) {\n grid.focus();\n grid.moveCursorToPosition(\n column,\n row,\n isShiftKey,\n false,\n isShiftKey && isModifierKey\n );\n }\n\n this.startPoint = gridPoint;\n this.hasExtendedFloating = false;\n this.dragBounds = GridUtils.getScrollDragBounds(metrics, row, column);\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint === undefined) {\n return false;\n }\n\n this.stopTimer();\n\n const { row: startRow, column: startColumn } = this.startPoint;\n const { x, y } = gridPoint;\n let { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { left, lastLeft, top, lastTop, columnWidth, rowHeight } = metrics;\n const dragBounds = GridUtils.getScrollDragBounds(\n metrics,\n startRow,\n startColumn\n );\n\n // If we're dragging outside of the grid entirely, then we should start scrolling\n let deltaX = 0;\n let deltaY = 0;\n if (left < lastLeft) {\n if (x < dragBounds.x1) {\n deltaX = x - dragBounds.x1;\n } else if (x > dragBounds.x2) {\n deltaX = x - dragBounds.x2;\n }\n }\n if (top < lastTop) {\n if (y < dragBounds.y1) {\n deltaY = y - dragBounds.y1;\n } else if (y > dragBounds.y2) {\n deltaY = y - dragBounds.y2;\n }\n }\n\n if (deltaX !== 0 || deltaY !== 0) {\n // Have it go faster depending on how far out they've dragged\n this.startTimer(\n grid,\n gridPoint,\n deltaX > 0\n ? Math.ceil(deltaX / columnWidth)\n : Math.floor(deltaX / columnWidth),\n deltaY > 0\n ? Math.ceil(deltaY / rowHeight)\n : Math.floor(deltaY / rowHeight)\n );\n } else if (row != null && column != null) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n rowCount,\n bottom,\n right,\n topVisible,\n bottomVisible,\n leftVisible,\n rightVisible,\n } = metrics;\n // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area\n // So when that happens, just adjust the point to be past the new boundary\n if (!this.hasExtendedFloating) {\n if (\n startRow !== null &&\n startRow < floatingTopRowCount &&\n row >= floatingTopRowCount\n ) {\n // Extending from floating top into the view\n row = floatingTopRowCount;\n this.hasExtendedFloating = true;\n } else if (\n startRow !== null &&\n startRow >= rowCount - floatingBottomRowCount &&\n row < rowCount - floatingBottomRowCount\n ) {\n // Extending from floating bottom into the view\n row = rowCount - floatingBottomRowCount - 1;\n this.hasExtendedFloating = true;\n }\n\n if (\n startColumn !== null &&\n startColumn < floatingLeftColumnCount &&\n column >= floatingLeftColumnCount\n ) {\n // Extending from floating left into the view\n column = floatingLeftColumnCount;\n this.hasExtendedFloating = true;\n } else if (\n startColumn !== null &&\n startColumn >= columnCount - floatingRightColumnCount &&\n column < columnCount - floatingRightColumnCount\n ) {\n // Extending from floating right into the view\n column = columnCount - floatingRightColumnCount - 1;\n this.hasExtendedFloating = true;\n }\n }\n\n // When a selection is dragging from within the main area to over a floating area, scroll.\n if (\n startRow !== null &&\n !GridUtils.isFloatingRow(startRow, metrics) &&\n GridUtils.isFloatingRow(row, metrics)\n ) {\n // Need to scroll\n if (startRow > row && row < top) {\n row = topVisible - 1;\n } else if (startRow < row && row > bottom) {\n row = bottomVisible + 1;\n }\n }\n if (\n startColumn !== null &&\n !GridUtils.isFloatingColumn(startColumn, metrics) &&\n GridUtils.isFloatingColumn(column, metrics)\n ) {\n if (startColumn > column && column < left) {\n column = leftVisible - 1;\n } else if (startColumn < column && column > right) {\n column = rightVisible + 1;\n }\n }\n grid.moveCursorToPosition(column, row, true, true);\n }\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint !== undefined) {\n this.startPoint = undefined;\n this.dragBounds = undefined;\n this.stopTimer();\n grid.commitSelection();\n }\n\n return false;\n }\n\n moveSelection(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n const { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { selectionEndRow, selectionEndColumn } = grid.state;\n if (selectionEndRow == null || selectionEndColumn == null) {\n throw new Error('selection not set');\n }\n\n const { rowCount, columnCount } = metrics;\n const minX = deltaX < 0 && column != null ? column : 0;\n const maxX = deltaX > 0 && column != null ? column : columnCount - 1;\n const minY = deltaY < 0 && row != null ? row : 0;\n const maxY = deltaY > 0 && row != null ? row : rowCount - 1;\n grid.moveCursorToPosition(\n Math.min(Math.max(minX, selectionEndColumn + deltaX), maxX),\n Math.min(Math.max(minY, selectionEndRow + deltaY), maxY),\n true\n );\n this.lastTriggerTime = Date.now();\n }\n\n startTimer(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n this.stopTimer();\n\n const timeout =\n this.lastTriggerTime != null\n ? DEFAULT_INTERVAL_MS -\n Math.min(DEFAULT_INTERVAL_MS, Date.now() - this.lastTriggerTime)\n : 0;\n this.timer = setTimeout(() => {\n this.moveSelection(grid, gridPoint, deltaX, deltaY);\n this.startTimer(grid, gridPoint, deltaX, deltaY);\n }, timeout);\n }\n\n stopTimer(): void {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n\nexport default GridSelectionMouseHandler;\n"],"mappings":"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"}
1
+ {"version":3,"file":"GridSelectionMouseHandler.js","names":["GridMouseHandler","GridUtils","DEFAULT_INTERVAL_MS","GridSelectionMouseHandler","onDown","gridPoint","grid","event","x","y","column","row","metrics","Error","gridX","gridY","maxX","maxY","gridMouseX","gridMouseY","isModifierKey","isModifierKeyDown","isShiftKey","shiftKey","trimSelectedRanges","clearSelectedRanges","theme","getTheme","autoSelectRow","autoSelectColumn","focus","moveCursorToPosition","startPoint","hasExtendedFloating","dragBounds","getScrollDragBounds","onDrag","undefined","stopTimer","startRow","startColumn","left","lastLeft","top","lastTop","columnWidth","rowHeight","deltaX","deltaY","x1","x2","y1","y2","startTimer","Math","ceil","floor","floatingTopRowCount","floatingBottomRowCount","floatingLeftColumnCount","floatingRightColumnCount","columnCount","rowCount","bottom","right","topVisible","bottomVisible","leftVisible","rightVisible","isFloatingRow","isFloatingColumn","onUp","commitSelection","moveSelection","selectionEndRow","selectionEndColumn","state","minX","minY","min","max","lastTriggerTime","Date","now","timeout","timer","setTimeout","clearTimeout"],"sources":["../../src/mouse-handlers/GridSelectionMouseHandler.ts"],"sourcesContent":["import { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { BoxCoordinates } from '../GridMetrics';\nimport GridMouseHandler, { GridMouseEvent } from '../GridMouseHandler';\nimport GridUtils, { GridPoint } from '../GridUtils';\n\nconst DEFAULT_INTERVAL_MS = 100;\n\nclass GridSelectionMouseHandler extends GridMouseHandler {\n private startPoint?: GridPoint;\n\n private hasExtendedFloating = false;\n\n // Timer used when holding a drag past the end of the grid\n private timer?: ReturnType<typeof setTimeout>;\n\n private lastTriggerTime?: number;\n\n private dragBounds?: BoxCoordinates;\n\n onDown(\n gridPoint: GridPoint,\n grid: Grid,\n event: GridMouseEvent\n ): EventHandlerResult {\n const { x, y, column, row } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { gridX, gridY, maxX, maxY } = metrics;\n const gridMouseX = x - gridX;\n const gridMouseY = y - gridY;\n if (\n gridMouseX < 0 ||\n gridMouseY < 0 ||\n (column == null && gridMouseX > maxX) ||\n (row == null && gridMouseY > maxY)\n ) {\n return false;\n }\n\n const isModifierKey = GridUtils.isModifierKeyDown(event);\n const isShiftKey = event.shiftKey;\n if (!isModifierKey) {\n if (isShiftKey) {\n grid.trimSelectedRanges();\n } else {\n grid.clearSelectedRanges();\n }\n }\n\n const theme = grid.getTheme();\n const { autoSelectRow, autoSelectColumn } = theme;\n // If they click a column/row header, don't want to select the whole table if auto select column/row is on\n if (\n (column !== null || !autoSelectColumn) &&\n (row !== null || !autoSelectRow)\n ) {\n grid.focus();\n grid.moveCursorToPosition(\n column,\n row,\n isShiftKey,\n false,\n isShiftKey && isModifierKey\n );\n }\n\n this.startPoint = gridPoint;\n this.hasExtendedFloating = false;\n this.dragBounds = GridUtils.getScrollDragBounds(metrics, row, column);\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint === undefined) {\n return false;\n }\n\n this.stopTimer();\n\n const { row: startRow, column: startColumn } = this.startPoint;\n const { x, y } = gridPoint;\n let { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { left, lastLeft, top, lastTop, columnWidth, rowHeight } = metrics;\n const dragBounds = GridUtils.getScrollDragBounds(\n metrics,\n startRow,\n startColumn\n );\n\n // If we're dragging outside of the grid entirely, then we should start scrolling\n let deltaX = 0;\n let deltaY = 0;\n if (left < lastLeft) {\n if (x < dragBounds.x1) {\n deltaX = x - dragBounds.x1;\n } else if (x > dragBounds.x2) {\n deltaX = x - dragBounds.x2;\n }\n }\n if (top < lastTop) {\n if (y < dragBounds.y1) {\n deltaY = y - dragBounds.y1;\n } else if (y > dragBounds.y2) {\n deltaY = y - dragBounds.y2;\n }\n }\n\n if (deltaX !== 0 || deltaY !== 0) {\n // Have it go faster depending on how far out they've dragged\n this.startTimer(\n grid,\n gridPoint,\n deltaX > 0\n ? Math.ceil(deltaX / columnWidth)\n : Math.floor(deltaX / columnWidth),\n deltaY > 0\n ? Math.ceil(deltaY / rowHeight)\n : Math.floor(deltaY / rowHeight)\n );\n } else if (row != null && column != null) {\n const {\n floatingTopRowCount,\n floatingBottomRowCount,\n floatingLeftColumnCount,\n floatingRightColumnCount,\n columnCount,\n rowCount,\n bottom,\n right,\n topVisible,\n bottomVisible,\n leftVisible,\n rightVisible,\n } = metrics;\n // When selection crosses from a floating area to a non floating area, we need to scroll instead of jumping to the floating area\n // So when that happens, just adjust the point to be past the new boundary\n if (!this.hasExtendedFloating) {\n if (\n startRow !== null &&\n startRow < floatingTopRowCount &&\n row >= floatingTopRowCount\n ) {\n // Extending from floating top into the view\n row = floatingTopRowCount;\n this.hasExtendedFloating = true;\n } else if (\n startRow !== null &&\n startRow >= rowCount - floatingBottomRowCount &&\n row < rowCount - floatingBottomRowCount\n ) {\n // Extending from floating bottom into the view\n row = rowCount - floatingBottomRowCount - 1;\n this.hasExtendedFloating = true;\n }\n\n if (\n startColumn !== null &&\n startColumn < floatingLeftColumnCount &&\n column >= floatingLeftColumnCount\n ) {\n // Extending from floating left into the view\n column = floatingLeftColumnCount;\n this.hasExtendedFloating = true;\n } else if (\n startColumn !== null &&\n startColumn >= columnCount - floatingRightColumnCount &&\n column < columnCount - floatingRightColumnCount\n ) {\n // Extending from floating right into the view\n column = columnCount - floatingRightColumnCount - 1;\n this.hasExtendedFloating = true;\n }\n }\n\n // When a selection is dragging from within the main area to over a floating area, scroll.\n if (\n startRow !== null &&\n !GridUtils.isFloatingRow(startRow, metrics) &&\n GridUtils.isFloatingRow(row, metrics)\n ) {\n // Need to scroll\n if (startRow > row && row < top) {\n row = topVisible - 1;\n } else if (startRow < row && row > bottom) {\n row = bottomVisible + 1;\n }\n }\n if (\n startColumn !== null &&\n !GridUtils.isFloatingColumn(startColumn, metrics) &&\n GridUtils.isFloatingColumn(column, metrics)\n ) {\n if (startColumn > column && column < left) {\n column = leftVisible - 1;\n } else if (startColumn < column && column > right) {\n column = rightVisible + 1;\n }\n }\n grid.moveCursorToPosition(column, row, true, true);\n }\n return true;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.startPoint !== undefined) {\n this.startPoint = undefined;\n this.dragBounds = undefined;\n this.stopTimer();\n grid.commitSelection();\n }\n\n return false;\n }\n\n moveSelection(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n const { row, column } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { selectionEndRow, selectionEndColumn } = grid.state;\n if (selectionEndRow == null || selectionEndColumn == null) {\n throw new Error('selection not set');\n }\n\n const { rowCount, columnCount } = metrics;\n const minX = deltaX < 0 && column != null ? column : 0;\n const maxX = deltaX > 0 && column != null ? column : columnCount - 1;\n const minY = deltaY < 0 && row != null ? row : 0;\n const maxY = deltaY > 0 && row != null ? row : rowCount - 1;\n grid.moveCursorToPosition(\n Math.min(Math.max(minX, selectionEndColumn + deltaX), maxX),\n Math.min(Math.max(minY, selectionEndRow + deltaY), maxY),\n true\n );\n this.lastTriggerTime = Date.now();\n }\n\n startTimer(\n grid: Grid,\n gridPoint: GridPoint,\n deltaX: number,\n deltaY: number\n ): void {\n this.stopTimer();\n\n const timeout =\n this.lastTriggerTime != null\n ? DEFAULT_INTERVAL_MS -\n Math.min(DEFAULT_INTERVAL_MS, Date.now() - this.lastTriggerTime)\n : 0;\n this.timer = setTimeout(() => {\n this.moveSelection(grid, gridPoint, deltaX, deltaY);\n this.startTimer(grid, gridPoint, deltaX, deltaY);\n }, timeout);\n }\n\n stopTimer(): void {\n if (this.timer !== undefined) {\n clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n}\n\nexport default GridSelectionMouseHandler;\n"],"mappings":"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"}