@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.
- package/dist/CellInputField.d.ts +5 -5
- package/dist/CellInputField.d.ts.map +1 -1
- package/dist/CellInputField.js +6 -23
- package/dist/CellInputField.js.map +1 -1
- package/dist/EditableGridModel.js +1 -0
- package/dist/EditableGridModel.js.map +1 -1
- package/dist/ExpandableGridModel.js +1 -0
- package/dist/ExpandableGridModel.js.map +1 -1
- package/dist/Grid.js +77 -315
- package/dist/Grid.js.map +1 -1
- package/dist/GridAxisRange.js.map +1 -1
- package/dist/GridColorUtils.js +1 -2
- package/dist/GridColorUtils.js.map +1 -1
- package/dist/GridMetricCalculator.js +83 -240
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridModel.js +13 -31
- package/dist/GridModel.js.map +1 -1
- package/dist/GridMouseHandler.js +2 -15
- package/dist/GridMouseHandler.js.map +1 -1
- package/dist/GridRange.js +46 -160
- package/dist/GridRange.js.map +1 -1
- package/dist/GridRenderer.js +126 -407
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridTestUtils.js +0 -5
- package/dist/GridTestUtils.js.map +1 -1
- package/dist/GridTheme.js.map +1 -1
- package/dist/GridUtils.js +68 -217
- package/dist/GridUtils.js.map +1 -1
- package/dist/KeyHandler.js +2 -8
- package/dist/KeyHandler.js.map +1 -1
- package/dist/MockGridData.js.map +1 -1
- package/dist/MockGridModel.js +0 -42
- package/dist/MockGridModel.js.map +1 -1
- package/dist/MockTreeGridModel.js +6 -55
- package/dist/MockTreeGridModel.js.map +1 -1
- package/dist/StaticDataGridModel.js +0 -15
- package/dist/StaticDataGridModel.js.map +1 -1
- package/dist/ThemeContext.js.map +1 -1
- package/dist/ViewportDataGridModel.js +0 -14
- package/dist/ViewportDataGridModel.js.map +1 -1
- package/dist/errors/AssertionError.js +0 -3
- package/dist/errors/AssertionError.js.map +1 -1
- package/dist/errors/PasteError.js +0 -3
- package/dist/errors/PasteError.js.map +1 -1
- package/dist/errors/assertIsDefined.js.map +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +0 -12
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/PasteKeyHandler.js +15 -33
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +6 -53
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +0 -11
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/key-handlers/index.js.map +1 -1
- package/dist/memoizeClear.js +1 -4
- package/dist/memoizeClear.js.map +1 -1
- package/dist/mouse-handlers/EditMouseHandler.js +0 -5
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +35 -123
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +2 -27
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +0 -28
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +0 -27
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +0 -23
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +0 -10
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +0 -6
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +8 -38
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +5 -54
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +0 -28
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/index.js.map +1 -1
- 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":"
|
|
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":"
|
|
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,
|
|
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,
|
|
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;
|
|
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);
|
|
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;
|
|
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
|
-
}
|
|
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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"}
|