@deephaven/grid 1.27.5-alpha-nodehttp2-config3.276eddc.0 → 1.29.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/Grid.d.ts +102 -43
- package/dist/Grid.d.ts.map +1 -1
- package/dist/Grid.js +442 -390
- package/dist/Grid.js.map +1 -1
- package/dist/GridA11yFallback.d.ts +26 -0
- package/dist/GridA11yFallback.d.ts.map +1 -0
- package/dist/GridA11yFallback.js +115 -0
- package/dist/GridA11yFallback.js.map +1 -0
- package/dist/GridA11yUtils.d.ts +89 -0
- package/dist/GridA11yUtils.d.ts.map +1 -0
- package/dist/GridA11yUtils.js +321 -0
- package/dist/GridA11yUtils.js.map +1 -0
- package/dist/GridRenderer.d.ts +9 -0
- package/dist/GridRenderer.d.ts.map +1 -1
- package/dist/GridRenderer.js +187 -39
- package/dist/GridRenderer.js.map +1 -1
- package/dist/GridRendererTypes.d.ts +3 -4
- package/dist/GridRendererTypes.d.ts.map +1 -1
- package/dist/GridRendererTypes.js.map +1 -1
- package/dist/GridSelectionUtils.d.ts +98 -0
- package/dist/GridSelectionUtils.d.ts.map +1 -0
- package/dist/GridSelectionUtils.js +180 -0
- package/dist/GridSelectionUtils.js.map +1 -0
- package/dist/RangedSelection.d.ts +120 -0
- package/dist/RangedSelection.d.ts.map +1 -0
- package/dist/RangedSelection.js +375 -0
- package/dist/RangedSelection.js.map +1 -0
- package/dist/Selection.d.ts +221 -0
- package/dist/Selection.d.ts.map +1 -0
- package/dist/Selection.js +71 -0
- package/dist/Selection.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/key-handlers/EditKeyHandler.js +3 -3
- package/dist/key-handlers/EditKeyHandler.js.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.d.ts +1 -0
- package/dist/key-handlers/SelectionKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/SelectionKeyHandler.js +144 -138
- package/dist/key-handlers/SelectionKeyHandler.js.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.d.ts.map +1 -1
- package/dist/key-handlers/TreeKeyHandler.js +6 -3
- package/dist/key-handlers/TreeKeyHandler.js.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts +1 -0
- package/dist/mouse-handlers/GridRowTreeMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js +7 -0
- package/dist/mouse-handlers/GridRowTreeMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts +0 -9
- package/dist/mouse-handlers/GridSelectionMouseHandler.d.ts.map +1 -1
- package/dist/mouse-handlers/GridSelectionMouseHandler.js +41 -39
- package/dist/mouse-handlers/GridSelectionMouseHandler.js.map +1 -1
- package/dist/mouse-handlers/GridTokenMouseHandler.js +4 -1
- package/dist/mouse-handlers/GridTokenMouseHandler.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../src/GridRenderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,kBAAkB,CAAC;AAK1D,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACvB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAGnE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"GridRenderer.d.ts","sourceRoot":"","sources":["../src/GridRenderer.ts"],"names":[],"mappings":"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"}
|
package/dist/GridRenderer.js
CHANGED
|
@@ -18,6 +18,7 @@ import GridColumnSeparatorMouseHandler from "./mouse-handlers/GridColumnSeparato
|
|
|
18
18
|
import { DEFAULT_FONT_WIDTH } from "./GridRendererTypes.js";
|
|
19
19
|
import DataBarCellRenderer from "./DataBarCellRenderer.js";
|
|
20
20
|
import TextCellRenderer from "./TextCellRenderer.js";
|
|
21
|
+
import { isTickRangeSelection } from "./Selection.js";
|
|
21
22
|
/* eslint react/destructuring-assignment: "off" */
|
|
22
23
|
/* eslint class-methods-use-this: "off" */
|
|
23
24
|
/* eslint no-param-reassign: "off" */
|
|
@@ -266,6 +267,7 @@ export class GridRenderer {
|
|
|
266
267
|
if (floatingLeftColumnCount > 0) {
|
|
267
268
|
this.drawSelectedRanges(context, state, {
|
|
268
269
|
left: 0,
|
|
270
|
+
right: floatingLeftColumnCount - 1,
|
|
269
271
|
maxX: getOrThrow(allColumnXs, floatingLeftColumnCount - 1) + getOrThrow(allColumnWidths, floatingLeftColumnCount - 1)
|
|
270
272
|
});
|
|
271
273
|
}
|
|
@@ -385,6 +387,7 @@ export class GridRenderer {
|
|
|
385
387
|
maxX: floatingRightColumnCount > 0 && allColumnXs.has(columnCount - floatingRightColumnCount - 1) ? getOrThrow(allColumnXs, columnCount - floatingRightColumnCount - 1) + getOrThrow(allColumnWidths, columnCount - floatingRightColumnCount - 1) - 0.5 : width + 10,
|
|
386
388
|
maxY: floatingBottomRowCount > 0 && allRowYs.has(rowCount - floatingBottomRowCount - 1) ? getOrThrow(allRowYs, rowCount - floatingBottomRowCount - 1) + getOrThrow(allRowHeights, rowCount - floatingBottomRowCount - 1) - 0.5 : height + 10
|
|
387
389
|
});
|
|
390
|
+
this.drawGestureDragOutline(context, state);
|
|
388
391
|
}
|
|
389
392
|
drawRowStripes(context, state) {
|
|
390
393
|
var metrics = state.metrics,
|
|
@@ -545,25 +548,24 @@ export class GridRenderer {
|
|
|
545
548
|
}
|
|
546
549
|
drawMouseRowHoverForRow(context, state, row) {
|
|
547
550
|
var metrics = state.metrics,
|
|
548
|
-
|
|
551
|
+
selection = state.selection,
|
|
549
552
|
theme = state.theme;
|
|
550
553
|
var allRowHeights = metrics.allRowHeights,
|
|
551
554
|
allRowYs = metrics.allRowYs,
|
|
555
|
+
columnsForRender = metrics.columnsForRender,
|
|
552
556
|
maxX = metrics.maxX;
|
|
553
557
|
var y = getOrThrow(allRowYs, row);
|
|
554
558
|
var rowHeight = getOrThrow(allRowHeights, row);
|
|
555
559
|
if (theme.rowHoverBackgroundColor != null) {
|
|
556
560
|
context.fillStyle = theme.rowHoverBackgroundColor;
|
|
557
561
|
}
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
if (startRow != null && endRow != null && startRow <= row && endRow >= row) {
|
|
563
|
-
if (theme.selectedRowHoverBackgroundColor != null) {
|
|
562
|
+
// A selected cell promotes the whole row to the selected hover background color.
|
|
563
|
+
if (theme.selectedRowHoverBackgroundColor != null) {
|
|
564
|
+
for (var i = 0; i < columnsForRender.length; i += 1) {
|
|
565
|
+
if (selection.isCellSelected(columnsForRender[i], row)) {
|
|
564
566
|
context.fillStyle = theme.selectedRowHoverBackgroundColor;
|
|
567
|
+
break;
|
|
565
568
|
}
|
|
566
|
-
break;
|
|
567
569
|
}
|
|
568
570
|
}
|
|
569
571
|
context.fillRect(0, y, maxX, rowHeight);
|
|
@@ -1373,15 +1375,15 @@ export class GridRenderer {
|
|
|
1373
1375
|
}
|
|
1374
1376
|
drawSelectedRanges(context, state) {
|
|
1375
1377
|
var viewport = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
1376
|
-
var
|
|
1377
|
-
row = state.cursorRow,
|
|
1378
|
-
draggingRow = state.draggingRow,
|
|
1378
|
+
var draggingRow = state.draggingRow,
|
|
1379
1379
|
draggingColumn = state.draggingColumn,
|
|
1380
1380
|
editingCell = state.editingCell,
|
|
1381
1381
|
metrics = state.metrics,
|
|
1382
1382
|
model = state.model,
|
|
1383
|
-
|
|
1383
|
+
selection = state.selection,
|
|
1384
1384
|
theme = state.theme;
|
|
1385
|
+
var column = selection.cursorColumn,
|
|
1386
|
+
row = selection.cursorRow;
|
|
1385
1387
|
var allColumnWidths = metrics.allColumnWidths,
|
|
1386
1388
|
allColumnXs = metrics.allColumnXs,
|
|
1387
1389
|
allRowHeights = metrics.allRowHeights,
|
|
@@ -1404,7 +1406,7 @@ export class GridRenderer {
|
|
|
1404
1406
|
minX = _viewport$minX === void 0 ? -10 : _viewport$minX,
|
|
1405
1407
|
_viewport$maxX = viewport.maxX,
|
|
1406
1408
|
maxX = _viewport$maxX === void 0 ? width + 10 : _viewport$maxX;
|
|
1407
|
-
if (
|
|
1409
|
+
if (selection.isEmpty()) {
|
|
1408
1410
|
return;
|
|
1409
1411
|
}
|
|
1410
1412
|
var isCursorVisible = isEditableGridModel(model) && model.isEditable && editingCell == null && draggingRow == null && draggingColumn == null && column != null && row != null && allColumnXs.has(column) && allRowYs.has(row);
|
|
@@ -1421,23 +1423,103 @@ export class GridRenderer {
|
|
|
1421
1423
|
context.clip('evenodd');
|
|
1422
1424
|
}
|
|
1423
1425
|
|
|
1424
|
-
//
|
|
1426
|
+
// Column bounds are constant across all rows for full-row selection.
|
|
1427
|
+
// Guard against missing keys during resize/initial-load when allColumnXs may be empty.
|
|
1428
|
+
var rowSelectionX = allColumnXs.has(left) ? Math.max(Math.round(getOrThrow(allColumnXs, left)) + 0.5, minX) : maxX;
|
|
1429
|
+
var rowSelectionEndX = allColumnXs.has(right) && allColumnWidths.has(right) ? Math.min(Math.round(getOrThrow(allColumnXs, right) + getOrThrow(allColumnWidths, right)) - 0.5, maxX) : minX;
|
|
1425
1430
|
context.beginPath();
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1431
|
+
// A full-row run is a special case of a partial run whose column list is a
|
|
1432
|
+
// single full-width entry, so both cases share one coalescer below. Reused
|
|
1433
|
+
// by reference so the equality check short-circuits for consecutive full rows.
|
|
1434
|
+
var FULL_ROW_COLS = rowSelectionEndX > rowSelectionX ? [{
|
|
1435
|
+
x: rowSelectionX,
|
|
1436
|
+
endX: rowSelectionEndX
|
|
1437
|
+
}] : [];
|
|
1438
|
+
|
|
1439
|
+
// Coalesce vertically-adjacent rows sharing an identical column signature
|
|
1440
|
+
// into one rect per column run rather than rendering strokes between each row.
|
|
1441
|
+
var runStartY = null;
|
|
1442
|
+
var runEndY = 0;
|
|
1443
|
+
var runCols = [];
|
|
1444
|
+
var colsEqual = (a, b) => {
|
|
1445
|
+
if (a === b) return true;
|
|
1446
|
+
if (a.length !== b.length) return false;
|
|
1447
|
+
for (var i = 0; i < a.length; i += 1) {
|
|
1448
|
+
if (a[i].x !== b[i].x || a[i].endX !== b[i].endX) return false;
|
|
1439
1449
|
}
|
|
1450
|
+
return true;
|
|
1451
|
+
};
|
|
1452
|
+
var flushRun = () => {
|
|
1453
|
+
if (runStartY != null) {
|
|
1454
|
+
for (var i = 0; i < runCols.length; i += 1) {
|
|
1455
|
+
var _runCols$i = runCols[i],
|
|
1456
|
+
_x4 = _runCols$i.x,
|
|
1457
|
+
endX = _runCols$i.endX;
|
|
1458
|
+
context.rect(_x4, runStartY, endX - _x4, runEndY - runStartY);
|
|
1459
|
+
}
|
|
1460
|
+
}
|
|
1461
|
+
runStartY = null;
|
|
1462
|
+
runCols = [];
|
|
1463
|
+
};
|
|
1464
|
+
var _loop = function _loop() {
|
|
1465
|
+
var rowY = allRowYs.get(r);
|
|
1466
|
+
var rowH = allRowHeights.get(r);
|
|
1467
|
+
if (rowY == null || rowH == null) {
|
|
1468
|
+
flushRun();
|
|
1469
|
+
// eslint-disable-next-line no-continue
|
|
1470
|
+
return 0; // continue
|
|
1471
|
+
}
|
|
1472
|
+
var y = Math.max(Math.round(rowY) + 0.5, 0.5);
|
|
1473
|
+
var endY = Math.round(rowY + rowH) - 0.5;
|
|
1474
|
+
if (endY < minY || y > maxY) {
|
|
1475
|
+
flushRun();
|
|
1476
|
+
// eslint-disable-next-line no-continue
|
|
1477
|
+
return 0; // continue
|
|
1478
|
+
}
|
|
1479
|
+
var rowCols;
|
|
1480
|
+
if (selection.isRowSelected(r)) {
|
|
1481
|
+
rowCols = FULL_ROW_COLS;
|
|
1482
|
+
} else {
|
|
1483
|
+
var built = [];
|
|
1484
|
+
var pushRun = (runStartCol, runEndCol) => {
|
|
1485
|
+
var x = Math.max(Math.round(getOrThrow(allColumnXs, runStartCol)) + 0.5, minX);
|
|
1486
|
+
var endX = Math.min(Math.round(getOrThrow(allColumnXs, runEndCol) + getOrThrow(allColumnWidths, runEndCol)) - 0.5, maxX);
|
|
1487
|
+
if (endX > x) built.push({
|
|
1488
|
+
x,
|
|
1489
|
+
endX
|
|
1490
|
+
});
|
|
1491
|
+
};
|
|
1492
|
+
var runStart = null;
|
|
1493
|
+
for (var c = left; c <= right; c += 1) {
|
|
1494
|
+
if (selection.isCellSelected(c, r)) {
|
|
1495
|
+
if (runStart === null) runStart = c;
|
|
1496
|
+
} else if (runStart !== null) {
|
|
1497
|
+
pushRun(runStart, c - 1);
|
|
1498
|
+
runStart = null;
|
|
1499
|
+
}
|
|
1500
|
+
}
|
|
1501
|
+
if (runStart !== null) {
|
|
1502
|
+
pushRun(runStart, right);
|
|
1503
|
+
}
|
|
1504
|
+
rowCols = built;
|
|
1505
|
+
}
|
|
1506
|
+
if (rowCols.length === 0) {
|
|
1507
|
+
flushRun();
|
|
1508
|
+
} else if (runStartY != null && colsEqual(rowCols, runCols)) {
|
|
1509
|
+
runEndY = endY;
|
|
1510
|
+
} else {
|
|
1511
|
+
flushRun();
|
|
1512
|
+
runCols = rowCols;
|
|
1513
|
+
runStartY = y;
|
|
1514
|
+
runEndY = endY;
|
|
1515
|
+
}
|
|
1516
|
+
},
|
|
1517
|
+
_ret;
|
|
1518
|
+
for (var r = top; r <= bottom; r += 1) {
|
|
1519
|
+
_ret = _loop();
|
|
1520
|
+
if (_ret === 0) continue;
|
|
1440
1521
|
}
|
|
1522
|
+
flushRun();
|
|
1441
1523
|
|
|
1442
1524
|
/**
|
|
1443
1525
|
* Create the path, then draw it once. Fill and
|
|
@@ -1511,6 +1593,78 @@ export class GridRenderer {
|
|
|
1511
1593
|
context.lineWidth = lineWidth;
|
|
1512
1594
|
}
|
|
1513
1595
|
|
|
1596
|
+
/**
|
|
1597
|
+
* Draws an outline around the in-flight ctrl+click / ctrl+shift+click drag
|
|
1598
|
+
* rectangle. Uses `selection.cursor` (mouse-down anchor) and
|
|
1599
|
+
* `selection.selectionEnd` (current drag position) for the bounds. For row
|
|
1600
|
+
* selection themes only the top and bottom horizontal strokes are drawn
|
|
1601
|
+
* (row-boundary preview); for column selection only left/right; for cell
|
|
1602
|
+
* selection all four sides.
|
|
1603
|
+
*/
|
|
1604
|
+
drawGestureDragOutline(context, state) {
|
|
1605
|
+
var gestureMode = state.gestureMode,
|
|
1606
|
+
selection = state.selection,
|
|
1607
|
+
metrics = state.metrics,
|
|
1608
|
+
theme = state.theme;
|
|
1609
|
+
if (gestureMode !== 'add' && gestureMode !== 'maximize') return;
|
|
1610
|
+
var cursorRow = selection.cursorRow,
|
|
1611
|
+
cursorColumn = selection.cursorColumn,
|
|
1612
|
+
selectionEndRow = selection.selectionEndRow,
|
|
1613
|
+
selectionEndColumn = selection.selectionEndColumn;
|
|
1614
|
+
if (cursorRow == null || cursorColumn == null || selectionEndRow == null || selectionEndColumn == null) {
|
|
1615
|
+
return;
|
|
1616
|
+
}
|
|
1617
|
+
var allColumnXs = metrics.allColumnXs,
|
|
1618
|
+
allColumnWidths = metrics.allColumnWidths,
|
|
1619
|
+
allRowYs = metrics.allRowYs,
|
|
1620
|
+
allRowHeights = metrics.allRowHeights,
|
|
1621
|
+
maxX = metrics.maxX,
|
|
1622
|
+
maxY = metrics.maxY;
|
|
1623
|
+
var _theme$autoSelectRow = theme.autoSelectRow,
|
|
1624
|
+
autoSelectRow = _theme$autoSelectRow === void 0 ? false : _theme$autoSelectRow,
|
|
1625
|
+
_theme$autoSelectColu = theme.autoSelectColumn,
|
|
1626
|
+
autoSelectColumn = _theme$autoSelectColu === void 0 ? false : _theme$autoSelectColu;
|
|
1627
|
+
var topRow = Math.min(cursorRow, selectionEndRow);
|
|
1628
|
+
var bottomRow = Math.max(cursorRow, selectionEndRow);
|
|
1629
|
+
var leftCol = Math.min(cursorColumn, selectionEndColumn);
|
|
1630
|
+
var rightCol = Math.max(cursorColumn, selectionEndColumn);
|
|
1631
|
+
var topY = allRowYs.get(topRow);
|
|
1632
|
+
var bottomRowY = allRowYs.get(bottomRow);
|
|
1633
|
+
var bottomRowH = allRowHeights.get(bottomRow);
|
|
1634
|
+
var leftX = allColumnXs.get(leftCol);
|
|
1635
|
+
var rightColX = allColumnXs.get(rightCol);
|
|
1636
|
+
var rightColW = allColumnWidths.get(rightCol);
|
|
1637
|
+
if (topY == null || bottomRowY == null || bottomRowH == null || leftX == null || rightColX == null || rightColW == null) {
|
|
1638
|
+
return;
|
|
1639
|
+
}
|
|
1640
|
+
var y0 = Math.round(topY) + 0.5;
|
|
1641
|
+
var y1 = Math.round(bottomRowY + bottomRowH) - 0.5;
|
|
1642
|
+
var x0 = autoSelectRow ? 0 : Math.round(leftX) + 0.5;
|
|
1643
|
+
var x1 = autoSelectRow ? maxX : Math.round(rightColX + rightColW) - 0.5;
|
|
1644
|
+
context.save();
|
|
1645
|
+
context.beginPath();
|
|
1646
|
+
context.strokeStyle = theme.selectionOutlineColor;
|
|
1647
|
+
context.lineWidth = 1;
|
|
1648
|
+
// Top / bottom horizontal strokes — always drawn (row + cell modes).
|
|
1649
|
+
if (!autoSelectColumn) {
|
|
1650
|
+
context.moveTo(x0, y0);
|
|
1651
|
+
context.lineTo(x1, y0);
|
|
1652
|
+
context.moveTo(x0, y1);
|
|
1653
|
+
context.lineTo(x1, y1);
|
|
1654
|
+
}
|
|
1655
|
+
// Left / right vertical strokes — cell and column modes only.
|
|
1656
|
+
if (!autoSelectRow) {
|
|
1657
|
+
var yTop = autoSelectColumn ? 0 : y0;
|
|
1658
|
+
var yBottom = autoSelectColumn ? maxY : y1;
|
|
1659
|
+
context.moveTo(x0, yTop);
|
|
1660
|
+
context.lineTo(x0, yBottom);
|
|
1661
|
+
context.moveTo(x1, yTop);
|
|
1662
|
+
context.lineTo(x1, yBottom);
|
|
1663
|
+
}
|
|
1664
|
+
context.stroke();
|
|
1665
|
+
context.restore();
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1514
1668
|
/**
|
|
1515
1669
|
* Draws a rounded rectangle using the current state of the canvas.
|
|
1516
1670
|
*
|
|
@@ -1767,13 +1921,10 @@ export class GridRenderer {
|
|
|
1767
1921
|
if (!autoSelectRow && scrollBarSelectionTick && scrollBarSelectionTickColor != null && scrollBarActiveSelectionTickColor != null) {
|
|
1768
1922
|
context.fillStyle = scrollBarSelectionTickColor;
|
|
1769
1923
|
// Scrollbar Selection Tick
|
|
1770
|
-
var
|
|
1771
|
-
cursorColumn = state.cursorColumn;
|
|
1924
|
+
var cursorColumn = state.selection.cursorColumn;
|
|
1772
1925
|
var lastLeft = metrics.lastLeft,
|
|
1773
1926
|
columnCount = metrics.columnCount;
|
|
1774
|
-
var
|
|
1775
|
-
var sortedRanges = filteredRanges.map(value => [value.startColumn, value.endColumn]).sort(GridUtils.compareRanges);
|
|
1776
|
-
var mergedRanges = GridUtils.mergeSortedRanges(sortedRanges);
|
|
1927
|
+
var mergedRanges = isTickRangeSelection(state.selection) ? state.selection.getColumnTickRanges() : [];
|
|
1777
1928
|
var getTickX = index => {
|
|
1778
1929
|
if (index <= lastLeft) {
|
|
1779
1930
|
return index / lastLeft * (barWidth - handleWidth);
|
|
@@ -1804,7 +1955,7 @@ export class GridRenderer {
|
|
|
1804
1955
|
}
|
|
1805
1956
|
if (hasVerticalBar) {
|
|
1806
1957
|
var _x5 = width - barLeft - vScrollBarSize;
|
|
1807
|
-
var
|
|
1958
|
+
var _y8 = scrollY;
|
|
1808
1959
|
|
|
1809
1960
|
// scrollbar casing
|
|
1810
1961
|
context.fillStyle = scrollBarCasingColor;
|
|
@@ -1822,11 +1973,10 @@ export class GridRenderer {
|
|
|
1822
1973
|
} else {
|
|
1823
1974
|
context.fillStyle = scrollBarColor;
|
|
1824
1975
|
}
|
|
1825
|
-
context.fillRect(_x5 + scrollBarCasingWidth,
|
|
1976
|
+
context.fillRect(_x5 + scrollBarCasingWidth, _y8, vScrollBarSize - scrollBarCasingWidth, handleHeight);
|
|
1826
1977
|
if (!autoSelectColumn && scrollBarSelectionTick && scrollBarSelectionTickColor != null && scrollBarActiveSelectionTickColor != null) {
|
|
1827
1978
|
// Scrollbar Selection Tick
|
|
1828
|
-
var
|
|
1829
|
-
cursorRow = state.cursorRow;
|
|
1979
|
+
var cursorRow = state.selection.cursorRow;
|
|
1830
1980
|
var lastTop = metrics.lastTop,
|
|
1831
1981
|
rowCount = metrics.rowCount;
|
|
1832
1982
|
var getTickY = index => {
|
|
@@ -1836,9 +1986,7 @@ export class GridRenderer {
|
|
|
1836
1986
|
return barHeight - handleHeight + (index - lastTop) / (rowCount - lastTop) * handleHeight;
|
|
1837
1987
|
};
|
|
1838
1988
|
context.fillStyle = scrollBarSelectionTickColor;
|
|
1839
|
-
var
|
|
1840
|
-
var _sortedRanges = _filteredRanges.map(value => [value.startRow, value.endRow]).sort(GridUtils.compareRanges);
|
|
1841
|
-
var _mergedRanges = GridUtils.mergeSortedRanges(_sortedRanges);
|
|
1989
|
+
var _mergedRanges = isTickRangeSelection(state.selection) ? state.selection.getRowTickRanges() : [];
|
|
1842
1990
|
for (var _i0 = 0; _i0 < _mergedRanges.length; _i0 += 1) {
|
|
1843
1991
|
var _range = _mergedRanges[_i0];
|
|
1844
1992
|
var startRow = _range[0];
|