@deephaven/grid 0.43.0 → 0.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CellInputField.css +23 -0
- package/dist/CellInputField.css.map +1 -0
- package/dist/CellInputField.js +174 -0
- package/dist/CellInputField.js.map +1 -0
- package/dist/CellRenderer.js +64 -0
- package/dist/CellRenderer.js.map +1 -0
- package/dist/ColumnHeaderGroup.js +2 -0
- package/dist/ColumnHeaderGroup.js.map +1 -0
- package/dist/DataBarCellRenderer.js +404 -0
- package/dist/DataBarCellRenderer.js.map +1 -0
- package/dist/DataBarGridModel.js +27 -0
- package/dist/DataBarGridModel.js.map +1 -0
- package/dist/EditableGridModel.js +14 -0
- package/dist/EditableGridModel.js.map +1 -0
- package/dist/EventHandlerResult.js +2 -0
- package/dist/EventHandlerResult.js.map +1 -0
- package/dist/ExpandableGridModel.js +8 -0
- package/dist/ExpandableGridModel.js.map +1 -0
- package/dist/Grid.css +45 -0
- package/dist/Grid.css.map +1 -0
- package/dist/Grid.js +1947 -0
- package/dist/Grid.js.map +1 -0
- package/dist/GridAxisRange.js +17 -0
- package/dist/GridAxisRange.js.map +1 -0
- package/dist/GridColorUtils.js +146 -0
- package/dist/GridColorUtils.js.map +1 -0
- package/dist/GridMetricCalculator.js +1500 -0
- package/dist/GridMetricCalculator.js.map +1 -0
- package/dist/GridMetrics.js +2 -0
- package/dist/GridMetrics.js.map +1 -0
- package/dist/GridModel.js +193 -0
- package/dist/GridModel.js.map +1 -0
- package/dist/GridMouseHandler.js +57 -0
- package/dist/GridMouseHandler.js.map +1 -0
- package/dist/GridRange.js +684 -0
- package/dist/GridRange.js.map +1 -0
- package/dist/GridRenderer.js +2038 -0
- package/dist/GridRenderer.js.map +1 -0
- package/dist/GridRendererTypes.js +3 -0
- package/dist/GridRendererTypes.js.map +1 -0
- package/dist/GridTestUtils.js +16 -0
- package/dist/GridTestUtils.js.map +1 -0
- package/dist/GridTheme.js +100 -0
- package/dist/GridTheme.js.map +1 -0
- package/dist/GridUtils.js +1198 -0
- package/dist/GridUtils.js.map +1 -0
- package/dist/KeyHandler.js +36 -0
- package/dist/KeyHandler.js.map +1 -0
- package/dist/MockDataBarGridModel.js +119 -0
- package/dist/MockDataBarGridModel.js.map +1 -0
- package/dist/MockGridData.js +5 -0
- package/dist/MockGridData.js.map +1 -0
- package/dist/MockGridModel.js +122 -0
- package/dist/MockGridModel.js.map +1 -0
- package/dist/MockTreeGridModel.js +193 -0
- package/dist/MockTreeGridModel.js.map +1 -0
- package/dist/StaticDataGridModel.js +40 -0
- package/dist/StaticDataGridModel.js.map +1 -0
- package/dist/TextCellRenderer.js +210 -0
- package/dist/TextCellRenderer.js.map +1 -0
- package/dist/ThemeContext.js +4 -0
- package/dist/ThemeContext.js.map +1 -0
- package/dist/TokenBoxCellRenderer.js +4 -0
- package/dist/TokenBoxCellRenderer.js.map +1 -0
- package/dist/ViewportDataGridModel.js +43 -0
- package/dist/ViewportDataGridModel.js.map +1 -0
- package/dist/errors/AssertionError.js +11 -0
- package/dist/errors/AssertionError.js.map +1 -0
- package/dist/errors/PasteError.js +11 -0
- package/dist/errors/PasteError.js.map +1 -0
- package/dist/errors/assertIsDefined.js +8 -0
- package/dist/errors/assertIsDefined.js.map +1 -0
- package/dist/errors/index.js +4 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/key-handlers/EditKeyHandler.js +46 -0
- package/dist/key-handlers/EditKeyHandler.js.map +1 -0
- package/dist/key-handlers/PasteKeyHandler.js +124 -0
- package/dist/key-handlers/PasteKeyHandler.js.map +1 -0
- package/dist/key-handlers/SelectionKeyHandler.js +272 -0
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -0
- package/dist/key-handlers/TreeKeyHandler.js +45 -0
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -0
- package/dist/key-handlers/index.js +5 -0
- package/dist/key-handlers/index.js.map +1 -0
- package/dist/memoizeClear.js +33 -0
- package/dist/memoizeClear.js.map +1 -0
- package/dist/mouse-handlers/EditMouseHandler.js +25 -0
- package/dist/mouse-handlers/EditMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js +504 -0
- package/dist/mouse-handlers/GridColumnMoveMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js +67 -0
- package/dist/mouse-handlers/GridColumnSeparatorMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +164 -0
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js +139 -0
- package/dist/mouse-handlers/GridRowMoveMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js +54 -0
- package/dist/mouse-handlers/GridRowSeparatorMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +58 -0
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js +39 -0
- package/dist/mouse-handlers/GridScrollBarCornerMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +223 -0
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js +213 -0
- package/dist/mouse-handlers/GridSeparatorMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridTokenMouseHandler.js +161 -0
- package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +165 -0
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -0
- package/dist/mouse-handlers/index.js +13 -0
- package/dist/mouse-handlers/index.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
/* eslint class-methods-use-this: "off" */
|
|
5
|
+
import GridUtils from "../GridUtils.js";
|
|
6
|
+
import GridSeparatorMouseHandler from "./GridSeparatorMouseHandler.js";
|
|
7
|
+
class GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
_defineProperty(this, "hiddenCursor", 'e-resize');
|
|
11
|
+
_defineProperty(this, "defaultCursor", 'col-resize');
|
|
12
|
+
_defineProperty(this, "pointProperty", 'x');
|
|
13
|
+
_defineProperty(this, "userSizesProperty", 'userColumnWidths');
|
|
14
|
+
_defineProperty(this, "visibleOffsetProperty", 'visibleColumnXs');
|
|
15
|
+
_defineProperty(this, "visibleSizesProperty", 'visibleColumnWidths');
|
|
16
|
+
_defineProperty(this, "marginProperty", 'rowHeaderWidth');
|
|
17
|
+
_defineProperty(this, "calculatedSizesProperty", 'calculatedColumnWidths');
|
|
18
|
+
_defineProperty(this, "initialSizesProperty", 'initialColumnWidths');
|
|
19
|
+
_defineProperty(this, "modelIndexesProperty", 'modelColumns');
|
|
20
|
+
_defineProperty(this, "firstIndexProperty", 'firstColumn');
|
|
21
|
+
_defineProperty(this, "treePaddingProperty", 'treePaddingX');
|
|
22
|
+
_defineProperty(this, "getHiddenItems", GridUtils.getHiddenColumns);
|
|
23
|
+
_defineProperty(this, "getNextShownItem", GridUtils.getNextShownColumn);
|
|
24
|
+
_defineProperty(this, "getSeparator", GridColumnSeparatorMouseHandler.getColumnSeparator);
|
|
25
|
+
}
|
|
26
|
+
static getColumnSeparator(gridPoint, metrics, model, theme) {
|
|
27
|
+
if (!theme.allowColumnResize) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
var {
|
|
31
|
+
x,
|
|
32
|
+
y,
|
|
33
|
+
columnHeaderDepth
|
|
34
|
+
} = gridPoint;
|
|
35
|
+
var {
|
|
36
|
+
modelColumns
|
|
37
|
+
} = metrics;
|
|
38
|
+
var separatorIndex = GridUtils.getColumnSeparatorIndex(x, y, metrics, theme);
|
|
39
|
+
|
|
40
|
+
// TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns
|
|
41
|
+
if (separatorIndex == null || columnHeaderDepth == null || columnHeaderDepth > 0) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
var columnIndex = modelColumns.get(separatorIndex);
|
|
45
|
+
if (columnIndex != null) {
|
|
46
|
+
return {
|
|
47
|
+
index: separatorIndex,
|
|
48
|
+
depth: 0
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
setSize(metricCalculator, modelIndex, size) {
|
|
54
|
+
metricCalculator.setColumnWidth(modelIndex, size);
|
|
55
|
+
}
|
|
56
|
+
resetSize(metricCalculator, modelIndex) {
|
|
57
|
+
metricCalculator.resetColumnWidth(modelIndex);
|
|
58
|
+
}
|
|
59
|
+
updateSeparator(grid, separator) {
|
|
60
|
+
grid.setState({
|
|
61
|
+
draggingColumnSeparator: separator,
|
|
62
|
+
isDragging: separator !== null
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export default GridColumnSeparatorMouseHandler;
|
|
67
|
+
//# sourceMappingURL=GridColumnSeparatorMouseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridColumnSeparatorMouseHandler.js","names":["GridUtils","GridSeparatorMouseHandler","GridColumnSeparatorMouseHandler","getHiddenColumns","getNextShownColumn","getColumnSeparator","gridPoint","metrics","model","theme","allowColumnResize","x","y","columnHeaderDepth","modelColumns","separatorIndex","getColumnSeparatorIndex","columnIndex","get","index","depth","setSize","metricCalculator","modelIndex","size","setColumnWidth","resetSize","resetColumnWidth","updateSeparator","grid","separator","setState","draggingColumnSeparator","isDragging"],"sources":["../../src/mouse-handlers/GridColumnSeparatorMouseHandler.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 type { GridTheme } from '../GridTheme';\nimport GridUtils, { GridPoint } from '../GridUtils';\nimport GridSeparatorMouseHandler, {\n GridSeparator,\n} from './GridSeparatorMouseHandler';\n\nclass GridColumnSeparatorMouseHandler extends GridSeparatorMouseHandler {\n static getColumnSeparator(\n gridPoint: GridPoint,\n metrics: GridMetrics,\n model: GridModel,\n theme: GridTheme\n ): GridSeparator | null {\n if (!theme.allowColumnResize) {\n return null;\n }\n\n const { x, y, columnHeaderDepth } = gridPoint;\n\n const { modelColumns } = metrics;\n\n const separatorIndex = GridUtils.getColumnSeparatorIndex(\n x,\n y,\n metrics,\n theme\n );\n\n // TODO #695: Allow resizing of column groups as well. Right now just allow resizing from base columns\n if (\n separatorIndex == null ||\n columnHeaderDepth == null ||\n columnHeaderDepth > 0\n ) {\n return null;\n }\n\n const columnIndex = modelColumns.get(separatorIndex);\n if (columnIndex != null) {\n return { index: separatorIndex, depth: 0 };\n }\n\n return null;\n }\n\n hiddenCursor = 'e-resize';\n\n defaultCursor = 'col-resize';\n\n pointProperty = 'x' as const;\n\n userSizesProperty = 'userColumnWidths' as const;\n\n visibleOffsetProperty = 'visibleColumnXs' as const;\n\n visibleSizesProperty = 'visibleColumnWidths' as const;\n\n marginProperty = 'rowHeaderWidth' as const;\n\n calculatedSizesProperty = 'calculatedColumnWidths' as const;\n\n initialSizesProperty = 'initialColumnWidths' as const;\n\n modelIndexesProperty = 'modelColumns' as const;\n\n firstIndexProperty = 'firstColumn' as const;\n\n treePaddingProperty = 'treePaddingX' as const;\n\n getHiddenItems = GridUtils.getHiddenColumns;\n\n getNextShownItem = GridUtils.getNextShownColumn;\n\n setSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex,\n size: number\n ): void {\n metricCalculator.setColumnWidth(modelIndex, size);\n }\n\n resetSize(\n metricCalculator: GridMetricCalculator,\n modelIndex: ModelIndex\n ): void {\n metricCalculator.resetColumnWidth(modelIndex);\n }\n\n updateSeparator(grid: Grid, separator: GridSeparator | null): void {\n grid.setState({\n draggingColumnSeparator: separator,\n isDragging: separator !== null,\n });\n }\n\n getSeparator = GridColumnSeparatorMouseHandler.getColumnSeparator;\n}\n\nexport default GridColumnSeparatorMouseHandler;\n"],"mappings":";;;AAAA;AAAA,OAMOA,SAAS;AAAA,OACTC,yBAAyB;AAIhC,MAAMC,+BAA+B,SAASD,yBAAyB,CAAC;EAAA;IAAA;IAAA,sCAuCvD,UAAU;IAAA,uCAET,YAAY;IAAA,uCAEZ,GAAG;IAAA,2CAEC,kBAAkB;IAAA,+CAEd,iBAAiB;IAAA,8CAElB,qBAAqB;IAAA,wCAE3B,gBAAgB;IAAA,iDAEP,wBAAwB;IAAA,8CAE3B,qBAAqB;IAAA,8CAErB,cAAc;IAAA,4CAEhB,aAAa;IAAA,6CAEZ,cAAc;IAAA,wCAEnBD,SAAS,CAACG,gBAAgB;IAAA,0CAExBH,SAAS,CAACI,kBAAkB;IAAA,sCAwBhCF,+BAA+B,CAACG,kBAAkB;EAAA;EAxFjE,OAAOA,kBAAkB,CACvBC,SAAoB,EACpBC,OAAoB,EACpBC,KAAgB,EAChBC,KAAgB,EACM;IACtB,IAAI,CAACA,KAAK,CAACC,iBAAiB,EAAE;MAC5B,OAAO,IAAI;IACb;IAEA,IAAM;MAAEC,CAAC;MAAEC,CAAC;MAAEC;IAAkB,CAAC,GAAGP,SAAS;IAE7C,IAAM;MAAEQ;IAAa,CAAC,GAAGP,OAAO;IAEhC,IAAMQ,cAAc,GAAGf,SAAS,CAACgB,uBAAuB,CACtDL,CAAC,EACDC,CAAC,EACDL,OAAO,EACPE,KAAK,CACN;;IAED;IACA,IACEM,cAAc,IAAI,IAAI,IACtBF,iBAAiB,IAAI,IAAI,IACzBA,iBAAiB,GAAG,CAAC,EACrB;MACA,OAAO,IAAI;IACb;IAEA,IAAMI,WAAW,GAAGH,YAAY,CAACI,GAAG,CAACH,cAAc,CAAC;IACpD,IAAIE,WAAW,IAAI,IAAI,EAAE;MACvB,OAAO;QAAEE,KAAK,EAAEJ,cAAc;QAAEK,KAAK,EAAE;MAAE,CAAC;IAC5C;IAEA,OAAO,IAAI;EACb;EA8BAC,OAAO,CACLC,gBAAsC,EACtCC,UAAsB,EACtBC,IAAY,EACN;IACNF,gBAAgB,CAACG,cAAc,CAACF,UAAU,EAAEC,IAAI,CAAC;EACnD;EAEAE,SAAS,CACPJ,gBAAsC,EACtCC,UAAsB,EAChB;IACND,gBAAgB,CAACK,gBAAgB,CAACJ,UAAU,CAAC;EAC/C;EAEAK,eAAe,CAACC,IAAU,EAAEC,SAA+B,EAAQ;IACjED,IAAI,CAACE,QAAQ,CAAC;MACZC,uBAAuB,EAAEF,SAAS;MAClCG,UAAU,EAAEH,SAAS,KAAK;IAC5B,CAAC,CAAC;EACJ;AAGF;AAEA,eAAe5B,+BAA+B"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
import clamp from 'lodash.clamp';
|
|
5
|
+
import GridMouseHandler from "../GridMouseHandler.js";
|
|
6
|
+
/* eslint class-methods-use-this: "off" */
|
|
7
|
+
class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
_defineProperty(this, "dragOffset", void 0);
|
|
11
|
+
_defineProperty(this, "cursor", 'default');
|
|
12
|
+
}
|
|
13
|
+
static getLeftWithOffsetFromRawLeft(grid, rawLeft) {
|
|
14
|
+
var theme = grid.getTheme();
|
|
15
|
+
var {
|
|
16
|
+
metrics,
|
|
17
|
+
metricCalculator
|
|
18
|
+
} = grid;
|
|
19
|
+
if (!metrics) throw new Error('metrics not set');
|
|
20
|
+
if (theme.scrollSnapToColumn) {
|
|
21
|
+
var _left = Math.round(rawLeft);
|
|
22
|
+
var _leftOffset = 0;
|
|
23
|
+
return {
|
|
24
|
+
left: _left,
|
|
25
|
+
leftOffset: _leftOffset
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
var left = Math.floor(rawLeft);
|
|
29
|
+
var leftOffsetPercent = rawLeft - left;
|
|
30
|
+
var columnWidth = metrics.allColumnWidths.get(left);
|
|
31
|
+
if (columnWidth == null) {
|
|
32
|
+
var metricState = grid.getMetricState();
|
|
33
|
+
columnWidth = metricCalculator.getVisibleColumnWidth(left, metricState);
|
|
34
|
+
}
|
|
35
|
+
var leftOffset = columnWidth * leftOffsetPercent;
|
|
36
|
+
return {
|
|
37
|
+
left,
|
|
38
|
+
leftOffset
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
isInScrollBar(gridPoint, grid) {
|
|
42
|
+
var theme = grid.getTheme();
|
|
43
|
+
var {
|
|
44
|
+
scrollBarSize,
|
|
45
|
+
scrollBarHoverSize
|
|
46
|
+
} = theme;
|
|
47
|
+
var {
|
|
48
|
+
metrics
|
|
49
|
+
} = grid;
|
|
50
|
+
if (!metrics) throw new Error('metrics not set');
|
|
51
|
+
var {
|
|
52
|
+
x,
|
|
53
|
+
y
|
|
54
|
+
} = gridPoint;
|
|
55
|
+
var {
|
|
56
|
+
barLeft,
|
|
57
|
+
barWidth,
|
|
58
|
+
height,
|
|
59
|
+
hasHorizontalBar
|
|
60
|
+
} = metrics;
|
|
61
|
+
return hasHorizontalBar && scrollBarSize > 0 && y >= height - scrollBarHoverSize && y < height && x > barLeft && x < barLeft + barWidth;
|
|
62
|
+
}
|
|
63
|
+
getLeftWithOffset(gridPoint, grid) {
|
|
64
|
+
var _this$dragOffset;
|
|
65
|
+
var {
|
|
66
|
+
metrics
|
|
67
|
+
} = grid;
|
|
68
|
+
if (!metrics) throw new Error('metrics not set');
|
|
69
|
+
var {
|
|
70
|
+
x
|
|
71
|
+
} = gridPoint;
|
|
72
|
+
var {
|
|
73
|
+
barWidth,
|
|
74
|
+
handleWidth,
|
|
75
|
+
lastLeft,
|
|
76
|
+
barLeft,
|
|
77
|
+
columnCount,
|
|
78
|
+
scrollableContentWidth,
|
|
79
|
+
scrollableViewportWidth
|
|
80
|
+
} = metrics;
|
|
81
|
+
var mouseBarX = x - barLeft;
|
|
82
|
+
var scrollPercent = clamp((mouseBarX - ((_this$dragOffset = this.dragOffset) !== null && _this$dragOffset !== void 0 ? _this$dragOffset : 0)) / (barWidth - handleWidth), 0, 1);
|
|
83
|
+
if (columnCount === 1) {
|
|
84
|
+
return {
|
|
85
|
+
left: 0,
|
|
86
|
+
leftOffset: scrollPercent * (scrollableContentWidth - scrollableViewportWidth)
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
var rawLeft = scrollPercent * lastLeft;
|
|
90
|
+
return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(grid, rawLeft);
|
|
91
|
+
}
|
|
92
|
+
onDown(gridPoint, grid) {
|
|
93
|
+
var {
|
|
94
|
+
metrics
|
|
95
|
+
} = grid;
|
|
96
|
+
if (!metrics) throw new Error('metrics not set');
|
|
97
|
+
var {
|
|
98
|
+
x
|
|
99
|
+
} = gridPoint;
|
|
100
|
+
var {
|
|
101
|
+
handleWidth,
|
|
102
|
+
barLeft,
|
|
103
|
+
scrollX
|
|
104
|
+
} = metrics;
|
|
105
|
+
if (!this.isInScrollBar(gridPoint, grid)) {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
var mouseBarX = x - barLeft;
|
|
109
|
+
if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {
|
|
110
|
+
// Grabbed the horizontal handle
|
|
111
|
+
this.dragOffset = mouseBarX - scrollX;
|
|
112
|
+
grid.setState({
|
|
113
|
+
isDraggingHorizontalScrollBar: true
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
this.dragOffset = 0;
|
|
117
|
+
var {
|
|
118
|
+
left: newLeft,
|
|
119
|
+
leftOffset: newLeftOffset
|
|
120
|
+
} = this.getLeftWithOffset(gridPoint, grid);
|
|
121
|
+
grid.setViewState({
|
|
122
|
+
left: newLeft,
|
|
123
|
+
leftOffset: newLeftOffset,
|
|
124
|
+
isDraggingHorizontalScrollBar: true,
|
|
125
|
+
isDragging: true
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
onDrag(gridPoint, grid) {
|
|
131
|
+
if (this.dragOffset != null) {
|
|
132
|
+
var {
|
|
133
|
+
left: newLeft,
|
|
134
|
+
leftOffset: newLeftOffset
|
|
135
|
+
} = this.getLeftWithOffset(gridPoint, grid);
|
|
136
|
+
grid.setViewState({
|
|
137
|
+
left: newLeft,
|
|
138
|
+
leftOffset: newLeftOffset,
|
|
139
|
+
isDraggingHorizontalScrollBar: true,
|
|
140
|
+
isDragging: true
|
|
141
|
+
});
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
onMove(gridPoint, grid) {
|
|
147
|
+
return this.isInScrollBar(gridPoint, grid);
|
|
148
|
+
}
|
|
149
|
+
onUp(gridPoint, grid) {
|
|
150
|
+
if (this.dragOffset !== undefined) {
|
|
151
|
+
this.dragOffset = undefined;
|
|
152
|
+
grid.setState({
|
|
153
|
+
isDraggingHorizontalScrollBar: false,
|
|
154
|
+
isDragging: false
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return this.isInScrollBar(gridPoint, grid);
|
|
158
|
+
}
|
|
159
|
+
onClick(gridPoint, grid) {
|
|
160
|
+
return this.isInScrollBar(gridPoint, grid);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export default GridHorizontalScrollBarMouseHandler;
|
|
164
|
+
//# sourceMappingURL=GridHorizontalScrollBarMouseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridHorizontalScrollBarMouseHandler.js","names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","allColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","barLeft","barWidth","height","hasHorizontalBar","getLeftWithOffset","handleWidth","lastLeft","columnCount","scrollableContentWidth","scrollableViewportWidth","mouseBarX","scrollPercent","dragOffset","onDown","scrollX","setState","isDraggingHorizontalScrollBar","newLeft","newLeftOffset","setViewState","isDragging","onDrag","onMove","onUp","undefined","onClick"],"sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"sourcesContent":["import clamp from 'lodash.clamp';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport { VisibleIndex } from '../GridMetrics';\nimport GridMouseHandler from '../GridMouseHandler';\nimport { GridPoint } from '../GridUtils';\n\n/* eslint class-methods-use-this: \"off\" */\nclass GridHorizontalScrollBarMouseHandler extends GridMouseHandler {\n static getLeftWithOffsetFromRawLeft(\n grid: Grid,\n rawLeft: number\n ): { left: VisibleIndex; leftOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToColumn) {\n const left = Math.round(rawLeft);\n const leftOffset = 0;\n\n return { left, leftOffset };\n }\n const left = Math.floor(rawLeft);\n const leftOffsetPercent = rawLeft - left;\n let columnWidth = metrics.allColumnWidths.get(left);\n if (columnWidth == null) {\n const metricState = grid.getMetricState();\n columnWidth = metricCalculator.getVisibleColumnWidth(left, metricState);\n }\n const leftOffset = columnWidth * leftOffsetPercent;\n\n return { left, leftOffset };\n }\n\n private dragOffset?: number;\n\n // to trigger pointer event blocking\n cursor = 'default';\n\n isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean {\n const theme = grid.getTheme();\n\n const { scrollBarSize, scrollBarHoverSize } = theme;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x, y } = gridPoint;\n const { barLeft, barWidth, height, hasHorizontalBar } = metrics;\n\n return (\n hasHorizontalBar &&\n scrollBarSize > 0 &&\n y >= height - scrollBarHoverSize &&\n y < height &&\n x > barLeft &&\n x < barLeft + barWidth\n );\n }\n\n getLeftWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { left: number; leftOffset: number } {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const {\n barWidth,\n handleWidth,\n lastLeft,\n barLeft,\n columnCount,\n scrollableContentWidth,\n scrollableViewportWidth,\n } = metrics;\n\n const mouseBarX = x - barLeft;\n const scrollPercent = clamp(\n (mouseBarX - (this.dragOffset ?? 0)) / (barWidth - handleWidth),\n 0,\n 1\n );\n\n if (columnCount === 1) {\n return {\n left: 0,\n leftOffset:\n scrollPercent * (scrollableContentWidth - scrollableViewportWidth),\n };\n }\n\n const rawLeft = scrollPercent * lastLeft;\n return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(\n grid,\n rawLeft\n );\n }\n\n onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { x } = gridPoint;\n const { handleWidth, barLeft, scrollX } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarX = x - barLeft;\n if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {\n // Grabbed the horizontal handle\n this.dragOffset = mouseBarX - scrollX;\n grid.setState({ isDraggingHorizontalScrollBar: true });\n } else {\n this.dragOffset = 0;\n\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = this.getLeftWithOffset(gridPoint, grid);\n\n grid.setViewState({\n left: newLeft,\n leftOffset: newLeftOffset,\n isDraggingHorizontalScrollBar: true,\n isDragging: true,\n });\n\n return true;\n }\n return false;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({\n isDraggingHorizontalScrollBar: false,\n isDragging: false,\n });\n }\n\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onClick(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n}\n\nexport default GridHorizontalScrollBarMouseHandler;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
import { getOrThrow } from '@deephaven/utils';
|
|
5
|
+
import GridMouseHandler from "../GridMouseHandler.js";
|
|
6
|
+
import GridUtils from "../GridUtils.js";
|
|
7
|
+
class GridRowMoveMouseHandler extends GridMouseHandler {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
_defineProperty(this, "cursor", 'move');
|
|
11
|
+
_defineProperty(this, "draggingOffset", void 0);
|
|
12
|
+
}
|
|
13
|
+
onDown(gridPoint, grid) {
|
|
14
|
+
var {
|
|
15
|
+
model
|
|
16
|
+
} = grid.props;
|
|
17
|
+
var {
|
|
18
|
+
x,
|
|
19
|
+
y,
|
|
20
|
+
row
|
|
21
|
+
} = gridPoint;
|
|
22
|
+
var {
|
|
23
|
+
metrics
|
|
24
|
+
} = grid;
|
|
25
|
+
if (!metrics) throw new Error('metrics not set');
|
|
26
|
+
var {
|
|
27
|
+
columnHeaderHeight,
|
|
28
|
+
rowHeaderWidth,
|
|
29
|
+
allRowYs
|
|
30
|
+
} = metrics;
|
|
31
|
+
if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {
|
|
32
|
+
var rowY = getOrThrow(allRowYs, row);
|
|
33
|
+
this.draggingOffset = y - rowY - columnHeaderHeight;
|
|
34
|
+
grid.setState({
|
|
35
|
+
draggingRowOffset: this.draggingOffset
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
onDrag(gridPoint, grid) {
|
|
41
|
+
if (this.draggingOffset == null) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
var {
|
|
45
|
+
model
|
|
46
|
+
} = grid.props;
|
|
47
|
+
var {
|
|
48
|
+
draggingRow
|
|
49
|
+
} = grid.state;
|
|
50
|
+
var {
|
|
51
|
+
mouseX,
|
|
52
|
+
mouseY
|
|
53
|
+
} = grid.state;
|
|
54
|
+
if (mouseX == null || mouseY == null) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
if (draggingRow == null) {
|
|
58
|
+
var {
|
|
59
|
+
row
|
|
60
|
+
} = grid.getGridPointFromXY(mouseX, mouseY);
|
|
61
|
+
if (row != null && !model.isRowMovable(row)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
draggingRow = row;
|
|
65
|
+
grid.setState({
|
|
66
|
+
draggingRow,
|
|
67
|
+
isDragging: true
|
|
68
|
+
});
|
|
69
|
+
if (draggingRow == null) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
var {
|
|
74
|
+
metrics
|
|
75
|
+
} = grid;
|
|
76
|
+
if (!metrics) throw new Error('metrics not set');
|
|
77
|
+
var {
|
|
78
|
+
top,
|
|
79
|
+
lastTop,
|
|
80
|
+
bottom,
|
|
81
|
+
bottomVisible,
|
|
82
|
+
rowCount,
|
|
83
|
+
columnHeaderHeight,
|
|
84
|
+
allRowHeights,
|
|
85
|
+
allRowYs,
|
|
86
|
+
height
|
|
87
|
+
} = metrics;
|
|
88
|
+
var minY = columnHeaderHeight;
|
|
89
|
+
if (top < draggingRow) {
|
|
90
|
+
var topRow = draggingRow - 1;
|
|
91
|
+
minY = getOrThrow(allRowYs, topRow) + getOrThrow(allRowHeights, topRow) * 0.5 + columnHeaderHeight;
|
|
92
|
+
}
|
|
93
|
+
var maxY = height;
|
|
94
|
+
if (draggingRow < bottom) {
|
|
95
|
+
var bottomRow = draggingRow + 1;
|
|
96
|
+
maxY = getOrThrow(allRowYs, bottomRow) + getOrThrow(allRowHeights, bottomRow) * 0.5 + columnHeaderHeight;
|
|
97
|
+
}
|
|
98
|
+
var {
|
|
99
|
+
movedRows
|
|
100
|
+
} = grid.state;
|
|
101
|
+
if (mouseY < minY && draggingRow > 0 && model.isRowMovable(draggingRow - 1)) {
|
|
102
|
+
movedRows = GridUtils.moveItem(draggingRow, draggingRow - 1, movedRows);
|
|
103
|
+
draggingRow -= 1;
|
|
104
|
+
} else if (maxY < mouseY && draggingRow < rowCount - 1 && model.isRowMovable(draggingRow + 1)) {
|
|
105
|
+
movedRows = GridUtils.moveItem(draggingRow, draggingRow + 1, movedRows);
|
|
106
|
+
draggingRow += 1;
|
|
107
|
+
}
|
|
108
|
+
grid.setState({
|
|
109
|
+
movedRows,
|
|
110
|
+
draggingRow
|
|
111
|
+
});
|
|
112
|
+
var minMoveY = columnHeaderHeight + getOrThrow(allRowHeights, top) * 0.5;
|
|
113
|
+
var maxMoveY = columnHeaderHeight + getOrThrow(allRowYs, bottomVisible) + getOrThrow(allRowHeights, bottomVisible) * 0.5;
|
|
114
|
+
if (mouseY < minMoveY && top > 0) {
|
|
115
|
+
grid.setState({
|
|
116
|
+
top: top - 1
|
|
117
|
+
});
|
|
118
|
+
} else if (mouseY > maxMoveY && top < lastTop) {
|
|
119
|
+
grid.setState({
|
|
120
|
+
top: top + 1
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
onUp(gridPoint, grid) {
|
|
126
|
+
if (this.draggingOffset !== undefined) {
|
|
127
|
+
this.draggingOffset = undefined;
|
|
128
|
+
grid.setState({
|
|
129
|
+
draggingRowOffset: null,
|
|
130
|
+
draggingRow: null,
|
|
131
|
+
isDragging: false
|
|
132
|
+
});
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
export default GridRowMoveMouseHandler;
|
|
139
|
+
//# sourceMappingURL=GridRowMoveMouseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridRowMoveMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowMoveMouseHandler","onDown","gridPoint","grid","model","props","x","y","row","metrics","Error","columnHeaderHeight","rowHeaderWidth","allRowYs","isRowMovable","rowY","draggingOffset","setState","draggingRowOffset","onDrag","draggingRow","state","mouseX","mouseY","getGridPointFromXY","isDragging","top","lastTop","bottom","bottomVisible","rowCount","allRowHeights","height","minY","topRow","maxY","bottomRow","movedRows","moveItem","minMoveY","maxMoveY","onUp","undefined"],"sources":["../../src/mouse-handlers/GridRowMoveMouseHandler.ts"],"sourcesContent":["import { getOrThrow } from '@deephaven/utils';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\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, allRowYs } = metrics;\n\n if (x <= rowHeaderWidth && row !== null && model.isRowMovable(row)) {\n const rowY = getOrThrow(allRowYs, 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 allRowHeights,\n allRowYs,\n height,\n } = metrics;\n let minY = columnHeaderHeight;\n if (top < draggingRow) {\n const topRow = draggingRow - 1;\n minY =\n getOrThrow(allRowYs, topRow) +\n getOrThrow(allRowHeights, topRow) * 0.5 +\n columnHeaderHeight;\n }\n\n let maxY = height;\n if (draggingRow < bottom) {\n const bottomRow = draggingRow + 1;\n maxY =\n getOrThrow(allRowYs, bottomRow) +\n getOrThrow(allRowHeights, 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 = columnHeaderHeight + getOrThrow(allRowHeights, top) * 0.5;\n const maxMoveY =\n columnHeaderHeight +\n getOrThrow(allRowYs, bottomVisible) +\n getOrThrow(allRowHeights, 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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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
2
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
|
|
3
|
+
function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
4
|
+
/* eslint class-methods-use-this: "off" */
|
|
5
|
+
import GridUtils from "../GridUtils.js";
|
|
6
|
+
import GridSeparatorMouseHandler from "./GridSeparatorMouseHandler.js";
|
|
7
|
+
class GridRowSeparatorMouseHandler extends GridSeparatorMouseHandler {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
_defineProperty(this, "hiddenCursor", 's-resize');
|
|
11
|
+
_defineProperty(this, "defaultCursor", 'row-resize');
|
|
12
|
+
_defineProperty(this, "pointProperty", 'y');
|
|
13
|
+
_defineProperty(this, "userSizesProperty", 'userRowHeights');
|
|
14
|
+
_defineProperty(this, "visibleOffsetProperty", 'visibleRowYs');
|
|
15
|
+
_defineProperty(this, "visibleSizesProperty", 'visibleRowHeights');
|
|
16
|
+
_defineProperty(this, "marginProperty", 'columnHeaderHeight');
|
|
17
|
+
_defineProperty(this, "calculatedSizesProperty", 'calculatedRowHeights');
|
|
18
|
+
_defineProperty(this, "initialSizesProperty", 'initialRowHeights');
|
|
19
|
+
_defineProperty(this, "modelIndexesProperty", 'modelRows');
|
|
20
|
+
_defineProperty(this, "firstIndexProperty", 'firstRow');
|
|
21
|
+
_defineProperty(this, "treePaddingProperty", 'treePaddingY');
|
|
22
|
+
_defineProperty(this, "getHiddenItems", GridUtils.getHiddenRows);
|
|
23
|
+
_defineProperty(this, "getNextShownItem", GridUtils.getNextShownRow);
|
|
24
|
+
_defineProperty(this, "getSeparator", GridRowSeparatorMouseHandler.getRowSeparator);
|
|
25
|
+
}
|
|
26
|
+
static getRowSeparator(gridPoint, metrics, model, theme) {
|
|
27
|
+
if (!theme.allowRowResize) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
var {
|
|
31
|
+
x,
|
|
32
|
+
y
|
|
33
|
+
} = gridPoint;
|
|
34
|
+
var index = GridUtils.getRowSeparatorIndex(x, y, metrics, theme);
|
|
35
|
+
return index != null ? {
|
|
36
|
+
index,
|
|
37
|
+
depth: 0
|
|
38
|
+
} : null;
|
|
39
|
+
}
|
|
40
|
+
setSize(metricCalculator, modelIndex, size) {
|
|
41
|
+
metricCalculator.setRowHeight(modelIndex, size);
|
|
42
|
+
}
|
|
43
|
+
resetSize(metricCalculator, modelIndex) {
|
|
44
|
+
metricCalculator.resetRowHeight(modelIndex);
|
|
45
|
+
}
|
|
46
|
+
updateSeparator(grid, separator) {
|
|
47
|
+
grid.setState({
|
|
48
|
+
draggingRowSeparator: separator,
|
|
49
|
+
isDragging: separator !== null
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export default GridRowSeparatorMouseHandler;
|
|
54
|
+
//# sourceMappingURL=GridRowSeparatorMouseHandler.js.map
|
|
@@ -0,0 +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 initialSizesProperty = 'initialRowHeights' 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,mBAAmB;IAAA,8CAEnB,WAAW;IAAA,4CAEb,UAAU;IAAA,6CAET,cAAc;IAAA,wCAEnBD,SAAS,CAACG,aAAa;IAAA,0CAErBH,SAAS,CAACI,eAAe;IAAA,sCAwB7BF,4BAA4B,CAACG,eAAe;EAAA;EAnE3D,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;EA8BAC,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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/* eslint class-methods-use-this: "off" */
|
|
2
|
+
import { getOrThrow } from '@deephaven/utils';
|
|
3
|
+
import GridMouseHandler from "../GridMouseHandler.js";
|
|
4
|
+
import GridUtils from "../GridUtils.js";
|
|
5
|
+
/**
|
|
6
|
+
* Detect when the tree expand/collapse button is clicked
|
|
7
|
+
*/
|
|
8
|
+
class GridRowTreeMouseHandler extends GridMouseHandler {
|
|
9
|
+
static isInTreeBox(gridPoint, grid) {
|
|
10
|
+
var {
|
|
11
|
+
column,
|
|
12
|
+
row,
|
|
13
|
+
x,
|
|
14
|
+
y
|
|
15
|
+
} = gridPoint;
|
|
16
|
+
var {
|
|
17
|
+
metrics
|
|
18
|
+
} = grid;
|
|
19
|
+
if (!metrics) throw new Error('metrics not set');
|
|
20
|
+
var {
|
|
21
|
+
gridX,
|
|
22
|
+
gridY,
|
|
23
|
+
firstColumn,
|
|
24
|
+
allColumnXs,
|
|
25
|
+
allColumnWidths,
|
|
26
|
+
allRowHeights,
|
|
27
|
+
allRowYs,
|
|
28
|
+
visibleRowTreeBoxes
|
|
29
|
+
} = metrics;
|
|
30
|
+
if (column === firstColumn && row != null && visibleRowTreeBoxes.get(row) != null && x > gridX && y > gridY) {
|
|
31
|
+
var columnX = getOrThrow(allColumnXs, column);
|
|
32
|
+
var width = getOrThrow(allColumnWidths, column);
|
|
33
|
+
var rowY = getOrThrow(allRowYs, row);
|
|
34
|
+
var height = getOrThrow(allRowHeights, row);
|
|
35
|
+
if (x >= gridX + columnX && x <= gridX + columnX + width && y >= gridY + rowY && y <= gridY + rowY + height) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
onDown(gridPoint, grid) {
|
|
42
|
+
return GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid);
|
|
43
|
+
}
|
|
44
|
+
onClick(gridPoint, grid, event) {
|
|
45
|
+
if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {
|
|
46
|
+
var {
|
|
47
|
+
row
|
|
48
|
+
} = gridPoint;
|
|
49
|
+
if (row !== null) {
|
|
50
|
+
grid.toggleRowExpanded(row, GridUtils.isModifierKeyDown(event));
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
export default GridRowTreeMouseHandler;
|
|
58
|
+
//# sourceMappingURL=GridRowTreeMouseHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GridRowTreeMouseHandler.js","names":["getOrThrow","GridMouseHandler","GridUtils","GridRowTreeMouseHandler","isInTreeBox","gridPoint","grid","column","row","x","y","metrics","Error","gridX","gridY","firstColumn","allColumnXs","allColumnWidths","allRowHeights","allRowYs","visibleRowTreeBoxes","get","columnX","width","rowY","height","onDown","onClick","event","toggleRowExpanded","isModifierKeyDown"],"sources":["../../src/mouse-handlers/GridRowTreeMouseHandler.ts"],"sourcesContent":["/* eslint class-methods-use-this: \"off\" */\nimport { getOrThrow } from '@deephaven/utils';\nimport { EventHandlerResult } from '../EventHandlerResult';\nimport Grid from '../Grid';\nimport GridMouseHandler from '../GridMouseHandler';\nimport GridUtils, { 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 allColumnXs,\n allColumnWidths,\n allRowHeights,\n allRowYs,\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(allColumnXs, column);\n const width = getOrThrow(allColumnWidths, column);\n const rowY = getOrThrow(allRowYs, row);\n const height = getOrThrow(allRowHeights, 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(\n gridPoint: GridPoint,\n grid: Grid,\n event: React.MouseEvent\n ): EventHandlerResult {\n if (GridRowTreeMouseHandler.isInTreeBox(gridPoint, grid)) {\n const { row } = gridPoint;\n if (row !== null) {\n grid.toggleRowExpanded(row, GridUtils.isModifierKeyDown(event));\n return true;\n }\n }\n return false;\n }\n}\n\nexport default GridRowTreeMouseHandler;\n"],"mappings":"AAAA;AACA,SAASA,UAAU,QAAQ,kBAAkB;AAAC,OAGvCC,gBAAgB;AAAA,OAChBC,SAAS;AAEhB;AACA;AACA;AACA,MAAMC,uBAAuB,SAASF,gBAAgB,CAAC;EACrD,OAAOG,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,WAAW;MACXC,eAAe;MACfC,aAAa;MACbC,QAAQ;MACRC;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,GAAGtB,UAAU,CAACgB,WAAW,EAAET,MAAM,CAAC;MAC/C,IAAMgB,KAAK,GAAGvB,UAAU,CAACiB,eAAe,EAAEV,MAAM,CAAC;MACjD,IAAMiB,IAAI,GAAGxB,UAAU,CAACmB,QAAQ,EAAEX,GAAG,CAAC;MACtC,IAAMiB,MAAM,GAAGzB,UAAU,CAACkB,aAAa,EAAEV,GAAG,CAAC;MAC7C,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,CACLtB,SAAoB,EACpBC,IAAU,EACVsB,KAAuB,EACH;IACpB,IAAIzB,uBAAuB,CAACC,WAAW,CAACC,SAAS,EAAEC,IAAI,CAAC,EAAE;MACxD,IAAM;QAAEE;MAAI,CAAC,GAAGH,SAAS;MACzB,IAAIG,GAAG,KAAK,IAAI,EAAE;QAChBF,IAAI,CAACuB,iBAAiB,CAACrB,GAAG,EAAEN,SAAS,CAAC4B,iBAAiB,CAACF,KAAK,CAAC,CAAC;QAC/D,OAAO,IAAI;MACb;IACF;IACA,OAAO,KAAK;EACd;AACF;AAEA,eAAezB,uBAAuB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/* eslint class-methods-use-this: "off" */
|
|
2
|
+
import GridMouseHandler from "../GridMouseHandler.js";
|
|
3
|
+
/**
|
|
4
|
+
* Used to eat the mouse event in the bottom right corner of the scroll bar
|
|
5
|
+
*/
|
|
6
|
+
class GridScrollBarCornerMouseHandler extends GridMouseHandler {
|
|
7
|
+
isInCorner(gridPoint, grid) {
|
|
8
|
+
var theme = grid.getTheme();
|
|
9
|
+
var {
|
|
10
|
+
scrollBarSize
|
|
11
|
+
} = theme;
|
|
12
|
+
var {
|
|
13
|
+
metrics
|
|
14
|
+
} = grid;
|
|
15
|
+
if (!metrics) throw new Error('metrics not set');
|
|
16
|
+
var {
|
|
17
|
+
x,
|
|
18
|
+
y
|
|
19
|
+
} = gridPoint;
|
|
20
|
+
var {
|
|
21
|
+
width,
|
|
22
|
+
height,
|
|
23
|
+
hasVerticalBar,
|
|
24
|
+
hasHorizontalBar
|
|
25
|
+
} = metrics;
|
|
26
|
+
return scrollBarSize > 0 && hasVerticalBar && hasHorizontalBar && x >= width - scrollBarSize && y >= height - scrollBarSize && x <= width && y <= height;
|
|
27
|
+
}
|
|
28
|
+
onDown(gridPoint, grid) {
|
|
29
|
+
return this.isInCorner(gridPoint, grid);
|
|
30
|
+
}
|
|
31
|
+
onUp(gridPoint, grid) {
|
|
32
|
+
return this.isInCorner(gridPoint, grid);
|
|
33
|
+
}
|
|
34
|
+
onClick(gridPoint, grid) {
|
|
35
|
+
return this.isInCorner(gridPoint, grid);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export default GridScrollBarCornerMouseHandler;
|
|
39
|
+
//# sourceMappingURL=GridScrollBarCornerMouseHandler.js.map
|
|
@@ -0,0 +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;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"}
|