@deephaven/grid 0.11.8-beta.0 → 0.11.9
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/Grid.d.ts.map +1 -1
- package/dist/Grid.js +51 -13
- package/dist/Grid.js.map +1 -1
- package/dist/GridMetricCalculator.d.ts.map +1 -1
- package/dist/GridMetricCalculator.js +26 -9
- package/dist/GridMetricCalculator.js.map +1 -1
- package/dist/GridMetrics.d.ts +4 -0
- package/dist/GridMetrics.d.ts.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts +4 -0
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js +43 -27
- package/dist/mouse-handlers/GridHorizontalScrollBarMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts +4 -0
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js +43 -27
- package/dist/mouse-handlers/GridVerticalScrollBarMouseHandler.js.map +1 -1
- package/package.json +3 -3
|
@@ -11,6 +11,10 @@ declare class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
11
11
|
private dragOffset?;
|
|
12
12
|
cursor: string;
|
|
13
13
|
isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean;
|
|
14
|
+
getLeftWithOffset(gridPoint: GridPoint, grid: Grid): {
|
|
15
|
+
left: number;
|
|
16
|
+
leftOffset: number;
|
|
17
|
+
};
|
|
14
18
|
onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
15
19
|
onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
16
20
|
onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridHorizontalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridHorizontalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,cAAM,mCAAoC,SAAQ,gBAAgB;IAChE,MAAM,CAAC,4BAA4B,CACjC,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,GACd;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAuB7C,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,MAAM,SAAa;IAEnB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAsBxD,iBAAiB,CACf,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAqCvC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAkC5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAmB5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAY1D,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAG9D;AAED,eAAe,mCAAmC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
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
2
|
|
|
3
|
+
import clamp from 'lodash.clamp';
|
|
3
4
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
4
5
|
|
|
5
6
|
/* eslint class-methods-use-this: "off" */
|
|
@@ -61,17 +62,19 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
61
62
|
y
|
|
62
63
|
} = gridPoint;
|
|
63
64
|
var {
|
|
64
|
-
|
|
65
|
-
lastTop,
|
|
66
|
-
rowHeaderWidth,
|
|
65
|
+
gridX,
|
|
67
66
|
width,
|
|
68
|
-
height
|
|
67
|
+
height,
|
|
68
|
+
hasHorizontalBar,
|
|
69
|
+
hasVerticalBar
|
|
69
70
|
} = metrics;
|
|
70
|
-
var scrollBarWidth =
|
|
71
|
-
return
|
|
71
|
+
var scrollBarWidth = hasVerticalBar ? width - scrollBarSize : width;
|
|
72
|
+
return hasHorizontalBar && scrollBarSize > 0 && y >= height - scrollBarHoverSize && y < height && x > gridX && x < scrollBarWidth;
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
getLeftWithOffset(gridPoint, grid) {
|
|
76
|
+
var _this$dragOffset;
|
|
77
|
+
|
|
75
78
|
var {
|
|
76
79
|
metrics
|
|
77
80
|
} = grid;
|
|
@@ -83,7 +86,36 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
83
86
|
barWidth,
|
|
84
87
|
handleWidth,
|
|
85
88
|
lastLeft,
|
|
86
|
-
|
|
89
|
+
gridX,
|
|
90
|
+
columnCount,
|
|
91
|
+
scrollableContentWidth,
|
|
92
|
+
scrollableViewportWidth
|
|
93
|
+
} = metrics;
|
|
94
|
+
var mouseBarX = x - gridX;
|
|
95
|
+
var scrollPercent = clamp((mouseBarX - ((_this$dragOffset = this.dragOffset) !== null && _this$dragOffset !== void 0 ? _this$dragOffset : 0)) / (barWidth - handleWidth), 0, 1);
|
|
96
|
+
|
|
97
|
+
if (columnCount === 1) {
|
|
98
|
+
return {
|
|
99
|
+
left: 0,
|
|
100
|
+
leftOffset: scrollPercent * (scrollableContentWidth - scrollableViewportWidth)
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var rawLeft = scrollPercent * lastLeft;
|
|
105
|
+
return GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(grid, rawLeft);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
onDown(gridPoint, grid) {
|
|
109
|
+
var {
|
|
110
|
+
metrics
|
|
111
|
+
} = grid;
|
|
112
|
+
if (!metrics) throw new Error('metrics not set');
|
|
113
|
+
var {
|
|
114
|
+
x
|
|
115
|
+
} = gridPoint;
|
|
116
|
+
var {
|
|
117
|
+
handleWidth,
|
|
118
|
+
gridX,
|
|
87
119
|
scrollX
|
|
88
120
|
} = metrics;
|
|
89
121
|
|
|
@@ -91,7 +123,7 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
91
123
|
return false;
|
|
92
124
|
}
|
|
93
125
|
|
|
94
|
-
var mouseBarX = x -
|
|
126
|
+
var mouseBarX = x - gridX;
|
|
95
127
|
|
|
96
128
|
if (mouseBarX >= scrollX && mouseBarX <= scrollX + handleWidth) {
|
|
97
129
|
// Grabbed the horizontal handle
|
|
@@ -101,11 +133,10 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
101
133
|
});
|
|
102
134
|
} else {
|
|
103
135
|
this.dragOffset = 0;
|
|
104
|
-
var rawLeft = Math.min(Math.max(0, mouseBarX / (barWidth - handleWidth) * lastLeft), lastLeft);
|
|
105
136
|
var {
|
|
106
137
|
left: newLeft,
|
|
107
138
|
leftOffset: newLeftOffset
|
|
108
|
-
} =
|
|
139
|
+
} = this.getLeftWithOffset(gridPoint, grid);
|
|
109
140
|
grid.setViewState({
|
|
110
141
|
left: newLeft,
|
|
111
142
|
leftOffset: newLeftOffset,
|
|
@@ -119,25 +150,10 @@ class GridHorizontalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
119
150
|
|
|
120
151
|
onDrag(gridPoint, grid) {
|
|
121
152
|
if (this.dragOffset != null) {
|
|
122
|
-
var {
|
|
123
|
-
x
|
|
124
|
-
} = gridPoint;
|
|
125
|
-
var {
|
|
126
|
-
metrics
|
|
127
|
-
} = grid;
|
|
128
|
-
if (!metrics) throw new Error('metrics not set');
|
|
129
|
-
var {
|
|
130
|
-
barWidth,
|
|
131
|
-
handleWidth,
|
|
132
|
-
lastLeft,
|
|
133
|
-
rowHeaderWidth
|
|
134
|
-
} = metrics;
|
|
135
|
-
var mouseBarX = x - rowHeaderWidth;
|
|
136
|
-
var rawLeft = Math.min(Math.max(0, (mouseBarX - this.dragOffset) / (barWidth - handleWidth) * lastLeft), lastLeft);
|
|
137
153
|
var {
|
|
138
154
|
left: newLeft,
|
|
139
155
|
leftOffset: newLeftOffset
|
|
140
|
-
} =
|
|
156
|
+
} = this.getLeftWithOffset(gridPoint, grid);
|
|
141
157
|
grid.setViewState({
|
|
142
158
|
left: newLeft,
|
|
143
159
|
leftOffset: newLeftOffset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":["GridMouseHandler","GridHorizontalScrollBarMouseHandler","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","visibleColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","lastLeft","lastTop","rowHeaderWidth","width","height","scrollBarWidth","onDown","barWidth","handleWidth","scrollX","mouseBarX","dragOffset","setState","isDraggingHorizontalScrollBar","min","max","newLeft","newLeftOffset","setViewState","isDragging","onDrag","onMove","onUp","undefined","onClick"],"mappings":"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","sourcesContent":["import { 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.visibleColumnWidths.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 { lastLeft, lastTop, rowHeaderWidth, width, height } = metrics;\n const scrollBarWidth = lastTop > 0 ? width - scrollBarSize : width;\n return (\n scrollBarSize > 0 &&\n lastLeft > 0 &&\n y >= height - scrollBarHoverSize &&\n y < height &&\n x > rowHeaderWidth &&\n x < scrollBarWidth\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 {\n barWidth,\n handleWidth,\n lastLeft,\n rowHeaderWidth,\n scrollX,\n } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarX = x - rowHeaderWidth;\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 const rawLeft = Math.min(\n Math.max(0, (mouseBarX / (barWidth - handleWidth)) * lastLeft),\n lastLeft\n );\n\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(\n grid,\n rawLeft\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 { x } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { barWidth, handleWidth, lastLeft, rowHeaderWidth } = metrics;\n const mouseBarX = x - rowHeaderWidth;\n\n const rawLeft = Math.min(\n Math.max(\n 0,\n ((mouseBarX - this.dragOffset) / (barWidth - handleWidth)) * lastLeft\n ),\n lastLeft\n );\n\n const {\n left: newLeft,\n leftOffset: newLeftOffset,\n } = GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(\n grid,\n rawLeft\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"],"file":"GridHorizontalScrollBarMouseHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridHorizontalScrollBarMouseHandler.ts"],"names":["clamp","GridMouseHandler","GridHorizontalScrollBarMouseHandler","getLeftWithOffsetFromRawLeft","grid","rawLeft","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToColumn","left","Math","round","leftOffset","floor","leftOffsetPercent","columnWidth","visibleColumnWidths","get","metricState","getMetricState","getVisibleColumnWidth","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","gridX","width","height","hasHorizontalBar","hasVerticalBar","scrollBarWidth","getLeftWithOffset","barWidth","handleWidth","lastLeft","columnCount","scrollableContentWidth","scrollableViewportWidth","mouseBarX","scrollPercent","dragOffset","onDown","scrollX","setState","isDraggingHorizontalScrollBar","newLeft","newLeftOffset","setViewState","isDragging","onDrag","onMove","onUp","undefined","onClick"],"mappings":"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","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.visibleColumnWidths.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 { gridX, width, height, hasHorizontalBar, hasVerticalBar } = metrics;\n\n const scrollBarWidth = hasVerticalBar ? width - scrollBarSize : width;\n\n return (\n hasHorizontalBar &&\n scrollBarSize > 0 &&\n y >= height - scrollBarHoverSize &&\n y < height &&\n x > gridX &&\n x < scrollBarWidth\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 gridX,\n columnCount,\n scrollableContentWidth,\n scrollableViewportWidth,\n } = metrics;\n\n const mouseBarX = x - gridX;\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, gridX, scrollX } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarX = x - gridX;\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"],"file":"GridHorizontalScrollBarMouseHandler.js"}
|
|
@@ -11,6 +11,10 @@ declare class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
11
11
|
private dragOffset?;
|
|
12
12
|
cursor: string;
|
|
13
13
|
isInScrollBar(gridPoint: GridPoint, grid: Grid): boolean;
|
|
14
|
+
getTopWithOffset(gridPoint: GridPoint, grid: Grid): {
|
|
15
|
+
top: number;
|
|
16
|
+
topOffset: number;
|
|
17
|
+
};
|
|
14
18
|
onDown(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
15
19
|
onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
16
20
|
onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GridVerticalScrollBarMouseHandler.d.ts","sourceRoot":"","sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,IAAI,MAAM,SAAS,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,gBAAgB,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,cAAM,iCAAkC,SAAQ,gBAAgB;IAC9D,MAAM,CAAC,0BAA0B,CAC/B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,GACb;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAuB3C,OAAO,CAAC,UAAU,CAAC,CAAS;IAG5B,MAAM,SAAa;IAEnB,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO;IAsBxD,gBAAgB,CACd,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,IAAI,GACT;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IAqCrC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAmC5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAkB5D,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAS1D,OAAO,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;CAG9D;AAED,eAAe,iCAAiC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
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
2
|
|
|
3
|
+
import clamp from 'lodash.clamp';
|
|
3
4
|
import GridMouseHandler from "../GridMouseHandler.js";
|
|
4
5
|
|
|
5
6
|
/* eslint class-methods-use-this: "off" */
|
|
@@ -61,17 +62,19 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
61
62
|
y
|
|
62
63
|
} = gridPoint;
|
|
63
64
|
var {
|
|
64
|
-
|
|
65
|
-
lastTop,
|
|
66
|
-
columnHeaderHeight,
|
|
65
|
+
gridY,
|
|
67
66
|
height,
|
|
68
|
-
width
|
|
67
|
+
width,
|
|
68
|
+
hasHorizontalBar,
|
|
69
|
+
hasVerticalBar
|
|
69
70
|
} = metrics;
|
|
70
|
-
var scrollBarHeight =
|
|
71
|
-
return
|
|
71
|
+
var scrollBarHeight = hasHorizontalBar ? height - scrollBarSize : height;
|
|
72
|
+
return hasVerticalBar && scrollBarSize > 0 && x >= width - scrollBarHoverSize && x < width && y > gridY && y < scrollBarHeight;
|
|
72
73
|
}
|
|
73
74
|
|
|
74
|
-
|
|
75
|
+
getTopWithOffset(gridPoint, grid) {
|
|
76
|
+
var _this$dragOffset;
|
|
77
|
+
|
|
75
78
|
var {
|
|
76
79
|
metrics
|
|
77
80
|
} = grid;
|
|
@@ -83,7 +86,36 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
83
86
|
barHeight,
|
|
84
87
|
handleHeight,
|
|
85
88
|
lastTop,
|
|
86
|
-
|
|
89
|
+
gridY,
|
|
90
|
+
rowCount,
|
|
91
|
+
scrollableContentHeight,
|
|
92
|
+
scrollableViewportHeight
|
|
93
|
+
} = metrics;
|
|
94
|
+
var mouseBarY = y - gridY;
|
|
95
|
+
var scrollPercent = clamp((mouseBarY - ((_this$dragOffset = this.dragOffset) !== null && _this$dragOffset !== void 0 ? _this$dragOffset : 0)) / (barHeight - handleHeight), 0, 1);
|
|
96
|
+
|
|
97
|
+
if (rowCount === 1) {
|
|
98
|
+
return {
|
|
99
|
+
top: 0,
|
|
100
|
+
topOffset: scrollPercent * (scrollableContentHeight - scrollableViewportHeight)
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
var rawTop = scrollPercent * lastTop;
|
|
105
|
+
return GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(grid, rawTop);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
onDown(gridPoint, grid) {
|
|
109
|
+
var {
|
|
110
|
+
metrics
|
|
111
|
+
} = grid;
|
|
112
|
+
if (!metrics) throw new Error('metrics not set');
|
|
113
|
+
var {
|
|
114
|
+
y
|
|
115
|
+
} = gridPoint;
|
|
116
|
+
var {
|
|
117
|
+
handleHeight,
|
|
118
|
+
gridY,
|
|
87
119
|
scrollY
|
|
88
120
|
} = metrics;
|
|
89
121
|
|
|
@@ -91,7 +123,7 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
91
123
|
return false;
|
|
92
124
|
}
|
|
93
125
|
|
|
94
|
-
var mouseBarY = y -
|
|
126
|
+
var mouseBarY = y - gridY;
|
|
95
127
|
|
|
96
128
|
if (mouseBarY >= scrollY && mouseBarY <= scrollY + handleHeight) {
|
|
97
129
|
// Grabbed the vertical handle
|
|
@@ -102,11 +134,10 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
102
134
|
} else {
|
|
103
135
|
// clicked elsewhere in bar
|
|
104
136
|
this.dragOffset = 0;
|
|
105
|
-
var rawTop = Math.min(Math.max(0, mouseBarY / (barHeight - handleHeight) * lastTop), lastTop);
|
|
106
137
|
var {
|
|
107
138
|
top: newTop,
|
|
108
139
|
topOffset: newTopOffset
|
|
109
|
-
} =
|
|
140
|
+
} = this.getTopWithOffset(gridPoint, grid);
|
|
110
141
|
grid.setViewState({
|
|
111
142
|
top: newTop,
|
|
112
143
|
topOffset: newTopOffset,
|
|
@@ -124,25 +155,10 @@ class GridVerticalScrollBarMouseHandler extends GridMouseHandler {
|
|
|
124
155
|
|
|
125
156
|
onDrag(gridPoint, grid) {
|
|
126
157
|
if (this.dragOffset != null) {
|
|
127
|
-
var {
|
|
128
|
-
y
|
|
129
|
-
} = gridPoint;
|
|
130
|
-
var {
|
|
131
|
-
metrics
|
|
132
|
-
} = grid;
|
|
133
|
-
if (!metrics) throw new Error('metrics not set');
|
|
134
|
-
var {
|
|
135
|
-
barHeight,
|
|
136
|
-
handleHeight,
|
|
137
|
-
lastTop,
|
|
138
|
-
columnHeaderHeight
|
|
139
|
-
} = metrics;
|
|
140
|
-
var mouseBarY = y - columnHeaderHeight;
|
|
141
|
-
var rawTop = Math.min(Math.max(0, (mouseBarY - this.dragOffset) / (barHeight - handleHeight) * lastTop), lastTop);
|
|
142
158
|
var {
|
|
143
159
|
top: newTop,
|
|
144
160
|
topOffset: newTopOffset
|
|
145
|
-
} =
|
|
161
|
+
} = this.getTopWithOffset(gridPoint, grid);
|
|
146
162
|
grid.setViewState({
|
|
147
163
|
top: newTop,
|
|
148
164
|
topOffset: newTopOffset,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":["GridMouseHandler","GridVerticalScrollBarMouseHandler","getTopWithOffsetFromRawTop","grid","rawTop","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToRow","top","Math","round","topOffset","floor","topOffsetPercent","rowHeight","visibleRowHeights","get","metricState","getMetricState","getVisibleRowHeight","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","lastLeft","lastTop","columnHeaderHeight","height","width","scrollBarHeight","onDown","barHeight","handleHeight","scrollY","mouseBarY","dragOffset","setState","isDraggingVerticalScrollBar","min","max","newTop","newTopOffset","setViewState","isDragging","onMove","onDrag","onUp","undefined","onClick"],"mappings":"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","sourcesContent":["import { 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 GridVerticalScrollBarMouseHandler extends GridMouseHandler {\n static getTopWithOffsetFromRawTop(\n grid: Grid,\n rawTop: number\n ): { top: VisibleIndex; topOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToRow) {\n const top = Math.round(rawTop);\n const topOffset = 0;\n\n return { top, topOffset };\n }\n const top = Math.floor(rawTop);\n const topOffsetPercent = rawTop - top;\n let rowHeight = metrics.visibleRowHeights.get(top);\n if (rowHeight == null) {\n const metricState = grid.getMetricState();\n rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);\n }\n const topOffset = rowHeight * topOffsetPercent;\n\n return { top, topOffset };\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 { lastLeft, lastTop, columnHeaderHeight, height, width } = metrics;\n const scrollBarHeight = lastLeft > 0 ? height - scrollBarSize : height;\n return (\n scrollBarSize > 0 &&\n lastTop > 0 &&\n x >= width - scrollBarHoverSize &&\n x < width &&\n y > columnHeaderHeight &&\n y < scrollBarHeight\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 { y } = gridPoint;\n const {\n barHeight,\n handleHeight,\n lastTop,\n columnHeaderHeight,\n scrollY,\n } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarY = y - columnHeaderHeight;\n if (mouseBarY >= scrollY && mouseBarY <= scrollY + handleHeight) {\n // Grabbed the vertical handle\n this.dragOffset = mouseBarY - scrollY;\n grid.setState({ isDraggingVerticalScrollBar: true });\n } else {\n // clicked elsewhere in bar\n this.dragOffset = 0;\n const rawTop = Math.min(\n Math.max(0, (mouseBarY / (barHeight - handleHeight)) * lastTop),\n lastTop\n );\n\n const {\n top: newTop,\n topOffset: newTopOffset,\n } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\n );\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const { y } = gridPoint;\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { barHeight, handleHeight, lastTop, columnHeaderHeight } = metrics;\n const mouseBarY = y - columnHeaderHeight;\n\n const rawTop = Math.min(\n Math.max(\n 0,\n ((mouseBarY - this.dragOffset) / (barHeight - handleHeight)) * lastTop\n ),\n lastTop\n );\n\n const {\n top: newTop,\n topOffset: newTopOffset,\n } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\n );\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n return true;\n }\n return false;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({ isDraggingVerticalScrollBar: false, isDragging: false });\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 GridVerticalScrollBarMouseHandler;\n"],"file":"GridVerticalScrollBarMouseHandler.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mouse-handlers/GridVerticalScrollBarMouseHandler.ts"],"names":["clamp","GridMouseHandler","GridVerticalScrollBarMouseHandler","getTopWithOffsetFromRawTop","grid","rawTop","theme","getTheme","metrics","metricCalculator","Error","scrollSnapToRow","top","Math","round","topOffset","floor","topOffsetPercent","rowHeight","visibleRowHeights","get","metricState","getMetricState","getVisibleRowHeight","isInScrollBar","gridPoint","scrollBarSize","scrollBarHoverSize","x","y","gridY","height","width","hasHorizontalBar","hasVerticalBar","scrollBarHeight","getTopWithOffset","barHeight","handleHeight","lastTop","rowCount","scrollableContentHeight","scrollableViewportHeight","mouseBarY","scrollPercent","dragOffset","onDown","scrollY","setState","isDraggingVerticalScrollBar","newTop","newTopOffset","setViewState","isDragging","onMove","onDrag","onUp","undefined","onClick"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,cAAlB;OAIOC,gB;;AAGP;AACA,MAAMC,iCAAN,SAAgDD,gBAAhD,CAAiE;AAAA;AAAA;;AAAA;;AAAA,oCA8BtD,SA9BsD;AAAA;;AAC9B,SAA1BE,0BAA0B,CAC/BC,IAD+B,EAE/BC,MAF+B,EAGW;AAC1C,QAAMC,KAAK,GAAGF,IAAI,CAACG,QAAL,EAAd;AACA,QAAM;AAAEC,MAAAA,OAAF;AAAWC,MAAAA;AAAX,QAAgCL,IAAtC;AACA,QAAI,CAACI,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;;AAEd,QAAIJ,KAAK,CAACK,eAAV,EAA2B;AACzB,UAAMC,IAAG,GAAGC,IAAI,CAACC,KAAL,CAAWT,MAAX,CAAZ;;AACA,UAAMU,UAAS,GAAG,CAAlB;AAEA,aAAO;AAAEH,QAAAA,GAAG,EAAHA,IAAF;AAAOG,QAAAA,SAAS,EAATA;AAAP,OAAP;AACD;;AACD,QAAMH,GAAG,GAAGC,IAAI,CAACG,KAAL,CAAWX,MAAX,CAAZ;AACA,QAAMY,gBAAgB,GAAGZ,MAAM,GAAGO,GAAlC;AACA,QAAIM,SAAS,GAAGV,OAAO,CAACW,iBAAR,CAA0BC,GAA1B,CAA8BR,GAA9B,CAAhB;;AACA,QAAIM,SAAS,IAAI,IAAjB,EAAuB;AACrB,UAAMG,WAAW,GAAGjB,IAAI,CAACkB,cAAL,EAApB;AACAJ,MAAAA,SAAS,GAAGT,gBAAgB,CAACc,mBAAjB,CAAqCX,GAArC,EAA0CS,WAA1C,CAAZ;AACD;;AACD,QAAMN,SAAS,GAAGG,SAAS,GAAGD,gBAA9B;AAEA,WAAO;AAAEL,MAAAA,GAAF;AAAOG,MAAAA;AAAP,KAAP;AACD;;AAODS,EAAAA,aAAa,CAACC,SAAD,EAAuBrB,IAAvB,EAA4C;AACvD,QAAME,KAAK,GAAGF,IAAI,CAACG,QAAL,EAAd;AAEA,QAAM;AAAEmB,MAAAA,aAAF;AAAiBC,MAAAA;AAAjB,QAAwCrB,KAA9C;AACA,QAAM;AAAEE,MAAAA;AAAF,QAAcJ,IAApB;AACA,QAAI,CAACI,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAEkB,MAAAA,CAAF;AAAKC,MAAAA;AAAL,QAAWJ,SAAjB;AACA,QAAM;AAAEK,MAAAA,KAAF;AAASC,MAAAA,MAAT;AAAiBC,MAAAA,KAAjB;AAAwBC,MAAAA,gBAAxB;AAA0CC,MAAAA;AAA1C,QAA6D1B,OAAnE;AAEA,QAAM2B,eAAe,GAAGF,gBAAgB,GAAGF,MAAM,GAAGL,aAAZ,GAA4BK,MAApE;AAEA,WACEG,cAAc,IACdR,aAAa,GAAG,CADhB,IAEAE,CAAC,IAAII,KAAK,GAAGL,kBAFb,IAGAC,CAAC,GAAGI,KAHJ,IAIAH,CAAC,GAAGC,KAJJ,IAKAD,CAAC,GAAGM,eANN;AAQD;;AAEDC,EAAAA,gBAAgB,CACdX,SADc,EAEdrB,IAFc,EAGsB;AAAA;;AACpC,QAAM;AAAEI,MAAAA;AAAF,QAAcJ,IAApB;AACA,QAAI,CAACI,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAEmB,MAAAA;AAAF,QAAQJ,SAAd;AACA,QAAM;AACJY,MAAAA,SADI;AAEJC,MAAAA,YAFI;AAGJC,MAAAA,OAHI;AAIJT,MAAAA,KAJI;AAKJU,MAAAA,QALI;AAMJC,MAAAA,uBANI;AAOJC,MAAAA;AAPI,QAQFlC,OARJ;AAUA,QAAMmC,SAAS,GAAGd,CAAC,GAAGC,KAAtB;AACA,QAAMc,aAAa,GAAG5C,KAAK,CACzB,CAAC2C,SAAS,wBAAI,KAAKE,UAAT,+DAAuB,CAAvB,CAAV,KAAwCR,SAAS,GAAGC,YAApD,CADyB,EAEzB,CAFyB,EAGzB,CAHyB,CAA3B;;AAMA,QAAIE,QAAQ,KAAK,CAAjB,EAAoB;AAClB,aAAO;AACL5B,QAAAA,GAAG,EAAE,CADA;AAELG,QAAAA,SAAS,EACP6B,aAAa,IAAIH,uBAAuB,GAAGC,wBAA9B;AAHV,OAAP;AAKD;;AAED,QAAMrC,MAAM,GAAGuC,aAAa,GAAGL,OAA/B;AACA,WAAOrC,iCAAiC,CAACC,0BAAlC,CACLC,IADK,EAELC,MAFK,CAAP;AAID;;AAEDyC,EAAAA,MAAM,CAACrB,SAAD,EAAuBrB,IAAvB,EAAuD;AAC3D,QAAM;AAAEI,MAAAA;AAAF,QAAcJ,IAApB;AACA,QAAI,CAACI,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AAEd,QAAM;AAAEmB,MAAAA;AAAF,QAAQJ,SAAd;AACA,QAAM;AAAEa,MAAAA,YAAF;AAAgBR,MAAAA,KAAhB;AAAuBiB,MAAAA;AAAvB,QAAmCvC,OAAzC;;AACA,QAAI,CAAC,KAAKgB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAL,EAA0C;AACxC,aAAO,KAAP;AACD;;AAED,QAAMuC,SAAS,GAAGd,CAAC,GAAGC,KAAtB;;AACA,QAAIa,SAAS,IAAII,OAAb,IAAwBJ,SAAS,IAAII,OAAO,GAAGT,YAAnD,EAAiE;AAC/D;AACA,WAAKO,UAAL,GAAkBF,SAAS,GAAGI,OAA9B;AACA3C,MAAAA,IAAI,CAAC4C,QAAL,CAAc;AAAEC,QAAAA,2BAA2B,EAAE;AAA/B,OAAd;AACD,KAJD,MAIO;AACL;AACA,WAAKJ,UAAL,GAAkB,CAAlB;AAEA,UAAM;AAAEjC,QAAAA,GAAG,EAAEsC,MAAP;AAAenC,QAAAA,SAAS,EAAEoC;AAA1B,UAA2C,KAAKf,gBAAL,CAC/CX,SAD+C,EAE/CrB,IAF+C,CAAjD;AAKAA,MAAAA,IAAI,CAACgD,YAAL,CAAkB;AAChBxC,QAAAA,GAAG,EAAEsC,MADW;AAEhBnC,QAAAA,SAAS,EAAEoC,YAFK;AAGhBF,QAAAA,2BAA2B,EAAE,IAHb;AAIhBI,QAAAA,UAAU,EAAE;AAJI,OAAlB;AAMD;;AAED,WAAO,IAAP;AACD;;AAEDC,EAAAA,MAAM,CAAC7B,SAAD,EAAuBrB,IAAvB,EAAuD;AAC3D,WAAO,KAAKoB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AAEDmD,EAAAA,MAAM,CAAC9B,SAAD,EAAuBrB,IAAvB,EAAuD;AAC3D,QAAI,KAAKyC,UAAL,IAAmB,IAAvB,EAA6B;AAC3B,UAAM;AAAEjC,QAAAA,GAAG,EAAEsC,MAAP;AAAenC,QAAAA,SAAS,EAAEoC;AAA1B,UAA2C,KAAKf,gBAAL,CAC/CX,SAD+C,EAE/CrB,IAF+C,CAAjD;AAKAA,MAAAA,IAAI,CAACgD,YAAL,CAAkB;AAChBxC,QAAAA,GAAG,EAAEsC,MADW;AAEhBnC,QAAAA,SAAS,EAAEoC,YAFK;AAGhBF,QAAAA,2BAA2B,EAAE,IAHb;AAIhBI,QAAAA,UAAU,EAAE;AAJI,OAAlB;AAMA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDG,EAAAA,IAAI,CAAC/B,SAAD,EAAuBrB,IAAvB,EAAuD;AACzD,QAAI,KAAKyC,UAAL,KAAoBY,SAAxB,EAAmC;AACjC,WAAKZ,UAAL,GAAkBY,SAAlB;AACArD,MAAAA,IAAI,CAAC4C,QAAL,CAAc;AAAEC,QAAAA,2BAA2B,EAAE,KAA/B;AAAsCI,QAAAA,UAAU,EAAE;AAAlD,OAAd;AACD;;AAED,WAAO,KAAK7B,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AAEDsD,EAAAA,OAAO,CAACjC,SAAD,EAAuBrB,IAAvB,EAAuD;AAC5D,WAAO,KAAKoB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AAlK8D;;AAqKjE,eAAeF,iCAAf","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 GridVerticalScrollBarMouseHandler extends GridMouseHandler {\n static getTopWithOffsetFromRawTop(\n grid: Grid,\n rawTop: number\n ): { top: VisibleIndex; topOffset: number } {\n const theme = grid.getTheme();\n const { metrics, metricCalculator } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n if (theme.scrollSnapToRow) {\n const top = Math.round(rawTop);\n const topOffset = 0;\n\n return { top, topOffset };\n }\n const top = Math.floor(rawTop);\n const topOffsetPercent = rawTop - top;\n let rowHeight = metrics.visibleRowHeights.get(top);\n if (rowHeight == null) {\n const metricState = grid.getMetricState();\n rowHeight = metricCalculator.getVisibleRowHeight(top, metricState);\n }\n const topOffset = rowHeight * topOffsetPercent;\n\n return { top, topOffset };\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 { gridY, height, width, hasHorizontalBar, hasVerticalBar } = metrics;\n\n const scrollBarHeight = hasHorizontalBar ? height - scrollBarSize : height;\n\n return (\n hasVerticalBar &&\n scrollBarSize > 0 &&\n x >= width - scrollBarHoverSize &&\n x < width &&\n y > gridY &&\n y < scrollBarHeight\n );\n }\n\n getTopWithOffset(\n gridPoint: GridPoint,\n grid: Grid\n ): { top: number; topOffset: number } {\n const { metrics } = grid;\n if (!metrics) throw new Error('metrics not set');\n\n const { y } = gridPoint;\n const {\n barHeight,\n handleHeight,\n lastTop,\n gridY,\n rowCount,\n scrollableContentHeight,\n scrollableViewportHeight,\n } = metrics;\n\n const mouseBarY = y - gridY;\n const scrollPercent = clamp(\n (mouseBarY - (this.dragOffset ?? 0)) / (barHeight - handleHeight),\n 0,\n 1\n );\n\n if (rowCount === 1) {\n return {\n top: 0,\n topOffset:\n scrollPercent * (scrollableContentHeight - scrollableViewportHeight),\n };\n }\n\n const rawTop = scrollPercent * lastTop;\n return GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(\n grid,\n rawTop\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 { y } = gridPoint;\n const { handleHeight, gridY, scrollY } = metrics;\n if (!this.isInScrollBar(gridPoint, grid)) {\n return false;\n }\n\n const mouseBarY = y - gridY;\n if (mouseBarY >= scrollY && mouseBarY <= scrollY + handleHeight) {\n // Grabbed the vertical handle\n this.dragOffset = mouseBarY - scrollY;\n grid.setState({ isDraggingVerticalScrollBar: true });\n } else {\n // clicked elsewhere in bar\n this.dragOffset = 0;\n\n const { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\n\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n }\n\n return true;\n }\n\n onMove(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n return this.isInScrollBar(gridPoint, grid);\n }\n\n onDrag(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset != null) {\n const { top: newTop, topOffset: newTopOffset } = this.getTopWithOffset(\n gridPoint,\n grid\n );\n\n grid.setViewState({\n top: newTop,\n topOffset: newTopOffset,\n isDraggingVerticalScrollBar: true,\n isDragging: true,\n });\n return true;\n }\n return false;\n }\n\n onUp(gridPoint: GridPoint, grid: Grid): EventHandlerResult {\n if (this.dragOffset !== undefined) {\n this.dragOffset = undefined;\n grid.setState({ isDraggingVerticalScrollBar: false, isDragging: false });\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 GridVerticalScrollBarMouseHandler;\n"],"file":"GridVerticalScrollBarMouseHandler.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deephaven/grid",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.9",
|
|
4
4
|
"description": "Deephaven React grid component",
|
|
5
5
|
"author": "Deephaven Data Labs LLC",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"react": "^17.0.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@deephaven/tsconfig": "^0.11.
|
|
36
|
+
"@deephaven/tsconfig": "^0.11.3"
|
|
37
37
|
},
|
|
38
38
|
"files": [
|
|
39
39
|
"dist"
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"publishConfig": {
|
|
51
51
|
"access": "public"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "a1f25a6ba18c3887bb022b274f9e1a3f9125d076"
|
|
54
54
|
}
|