@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.
@@ -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":"AAAA,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;IAoBxD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA8C5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAoC5D,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
+ {"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
- lastLeft,
65
- lastTop,
66
- rowHeaderWidth,
65
+ gridX,
67
66
  width,
68
- height
67
+ height,
68
+ hasHorizontalBar,
69
+ hasVerticalBar
69
70
  } = metrics;
70
- var scrollBarWidth = lastTop > 0 ? width - scrollBarSize : width;
71
- return scrollBarSize > 0 && lastLeft > 0 && y >= height - scrollBarHoverSize && y < height && x > rowHeaderWidth && x < scrollBarWidth;
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
- onDown(gridPoint, grid) {
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
- rowHeaderWidth,
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 - rowHeaderWidth;
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
- } = GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(grid, rawLeft);
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
- } = GridHorizontalScrollBarMouseHandler.getLeftWithOffsetFromRawLeft(grid, rawLeft);
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":"AAAA,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;IAoBxD,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IA+C5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAI5D,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,GAAG,kBAAkB;IAmC5D,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
+ {"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
- lastLeft,
65
- lastTop,
66
- columnHeaderHeight,
65
+ gridY,
67
66
  height,
68
- width
67
+ width,
68
+ hasHorizontalBar,
69
+ hasVerticalBar
69
70
  } = metrics;
70
- var scrollBarHeight = lastLeft > 0 ? height - scrollBarSize : height;
71
- return scrollBarSize > 0 && lastTop > 0 && x >= width - scrollBarHoverSize && x < width && y > columnHeaderHeight && y < scrollBarHeight;
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
- onDown(gridPoint, grid) {
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
- columnHeaderHeight,
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 - columnHeaderHeight;
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
- } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(grid, rawTop);
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
- } = GridVerticalScrollBarMouseHandler.getTopWithOffsetFromRawTop(grid, rawTop);
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":";;OAGOA,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,QAAF;AAAYC,MAAAA,OAAZ;AAAqBC,MAAAA,kBAArB;AAAyCC,MAAAA,MAAzC;AAAiDC,MAAAA;AAAjD,QAA2D1B,OAAjE;AACA,QAAM2B,eAAe,GAAGL,QAAQ,GAAG,CAAX,GAAeG,MAAM,GAAGP,aAAxB,GAAwCO,MAAhE;AACA,WACEP,aAAa,GAAG,CAAhB,IACAK,OAAO,GAAG,CADV,IAEAH,CAAC,IAAIM,KAAK,GAAGP,kBAFb,IAGAC,CAAC,GAAGM,KAHJ,IAIAL,CAAC,GAAGG,kBAJJ,IAKAH,CAAC,GAAGM,eANN;AAQD;;AAEDC,EAAAA,MAAM,CAACX,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;AACJY,MAAAA,SADI;AAEJC,MAAAA,YAFI;AAGJP,MAAAA,OAHI;AAIJC,MAAAA,kBAJI;AAKJO,MAAAA;AALI,QAMF/B,OANJ;;AAOA,QAAI,CAAC,KAAKgB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAL,EAA0C;AACxC,aAAO,KAAP;AACD;;AAED,QAAMoC,SAAS,GAAGX,CAAC,GAAGG,kBAAtB;;AACA,QAAIQ,SAAS,IAAID,OAAb,IAAwBC,SAAS,IAAID,OAAO,GAAGD,YAAnD,EAAiE;AAC/D;AACA,WAAKG,UAAL,GAAkBD,SAAS,GAAGD,OAA9B;AACAnC,MAAAA,IAAI,CAACsC,QAAL,CAAc;AAAEC,QAAAA,2BAA2B,EAAE;AAA/B,OAAd;AACD,KAJD,MAIO;AACL;AACA,WAAKF,UAAL,GAAkB,CAAlB;AACA,UAAMpC,MAAM,GAAGQ,IAAI,CAAC+B,GAAL,CACb/B,IAAI,CAACgC,GAAL,CAAS,CAAT,EAAaL,SAAS,IAAIH,SAAS,GAAGC,YAAhB,CAAV,GAA2CP,OAAvD,CADa,EAEbA,OAFa,CAAf;AAKA,UAAM;AACJnB,QAAAA,GAAG,EAAEkC,MADD;AAEJ/B,QAAAA,SAAS,EAAEgC;AAFP,UAGF7C,iCAAiC,CAACC,0BAAlC,CACFC,IADE,EAEFC,MAFE,CAHJ;AAOAD,MAAAA,IAAI,CAAC4C,YAAL,CAAkB;AAChBpC,QAAAA,GAAG,EAAEkC,MADW;AAEhB/B,QAAAA,SAAS,EAAEgC,YAFK;AAGhBJ,QAAAA,2BAA2B,EAAE,IAHb;AAIhBM,QAAAA,UAAU,EAAE;AAJI,OAAlB;AAMD;;AAED,WAAO,IAAP;AACD;;AAEDC,EAAAA,MAAM,CAACzB,SAAD,EAAuBrB,IAAvB,EAAuD;AAC3D,WAAO,KAAKoB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AAED+C,EAAAA,MAAM,CAAC1B,SAAD,EAAuBrB,IAAvB,EAAuD;AAC3D,QAAI,KAAKqC,UAAL,IAAmB,IAAvB,EAA6B;AAC3B,UAAM;AAAEZ,QAAAA;AAAF,UAAQJ,SAAd;AACA,UAAM;AAAEjB,QAAAA;AAAF,UAAcJ,IAApB;AACA,UAAI,CAACI,OAAL,EAAc,MAAM,IAAIE,KAAJ,CAAU,iBAAV,CAAN;AAEd,UAAM;AAAE2B,QAAAA,SAAF;AAAaC,QAAAA,YAAb;AAA2BP,QAAAA,OAA3B;AAAoCC,QAAAA;AAApC,UAA2DxB,OAAjE;AACA,UAAMgC,SAAS,GAAGX,CAAC,GAAGG,kBAAtB;AAEA,UAAM3B,MAAM,GAAGQ,IAAI,CAAC+B,GAAL,CACb/B,IAAI,CAACgC,GAAL,CACE,CADF,EAEG,CAACL,SAAS,GAAG,KAAKC,UAAlB,KAAiCJ,SAAS,GAAGC,YAA7C,CAAD,GAA+DP,OAFjE,CADa,EAKbA,OALa,CAAf;AAQA,UAAM;AACJnB,QAAAA,GAAG,EAAEkC,MADD;AAEJ/B,QAAAA,SAAS,EAAEgC;AAFP,UAGF7C,iCAAiC,CAACC,0BAAlC,CACFC,IADE,EAEFC,MAFE,CAHJ;AAOAD,MAAAA,IAAI,CAAC4C,YAAL,CAAkB;AAChBpC,QAAAA,GAAG,EAAEkC,MADW;AAEhB/B,QAAAA,SAAS,EAAEgC,YAFK;AAGhBJ,QAAAA,2BAA2B,EAAE,IAHb;AAIhBM,QAAAA,UAAU,EAAE;AAJI,OAAlB;AAMA,aAAO,IAAP;AACD;;AACD,WAAO,KAAP;AACD;;AAEDG,EAAAA,IAAI,CAAC3B,SAAD,EAAuBrB,IAAvB,EAAuD;AACzD,QAAI,KAAKqC,UAAL,KAAoBY,SAAxB,EAAmC;AACjC,WAAKZ,UAAL,GAAkBY,SAAlB;AACAjD,MAAAA,IAAI,CAACsC,QAAL,CAAc;AAAEC,QAAAA,2BAA2B,EAAE,KAA/B;AAAsCM,QAAAA,UAAU,EAAE;AAAlD,OAAd;AACD;;AAED,WAAO,KAAKzB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AAEDkD,EAAAA,OAAO,CAAC7B,SAAD,EAAuBrB,IAAvB,EAAuD;AAC5D,WAAO,KAAKoB,aAAL,CAAmBC,SAAnB,EAA8BrB,IAA9B,CAAP;AACD;;AArJ8D;;AAwJjE,eAAeF,iCAAf","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":"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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 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.8-beta.0+ac30f27",
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.8-beta.0+ac30f27"
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": "ac30f277b6b7fa2dcd1d03ac25f037fc8ccbf99f"
53
+ "gitHead": "a1f25a6ba18c3887bb022b274f9e1a3f9125d076"
54
54
  }