sheet-happens 0.0.40 → 0.0.41
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/autosize.d.ts +2 -0
- package/dist/index.js +232 -110
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +232 -110
- package/dist/index.modern.js.map +1 -1
- package/dist/mouse.d.ts +1 -1
- package/dist/scroll.d.ts +6 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -351,11 +351,6 @@ var orientSelection = function orientSelection(normalized, to) {
|
|
|
351
351
|
var swapY = (ay - hy || 1) * (bottom - top || 1) < 0;
|
|
352
352
|
return [[swapX ? right : left, swapY ? bottom : top], [swapX ? left : right, swapY ? top : bottom]];
|
|
353
353
|
};
|
|
354
|
-
var clipSelection = function clipSelection(selection, max) {
|
|
355
|
-
var anchor = selection[0],
|
|
356
|
-
head = selection[1];
|
|
357
|
-
return [minXY(anchor, max), minXY(head, max)];
|
|
358
|
-
};
|
|
359
354
|
|
|
360
355
|
var LIMIT = 1000;
|
|
361
356
|
|
|
@@ -537,7 +532,7 @@ var findInDisplayData = function findInDisplayData(displayData, start, direction
|
|
|
537
532
|
return maxXY(cell, [0, 0]);
|
|
538
533
|
};
|
|
539
534
|
|
|
540
|
-
var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, onEdit, onCommit, onKnobAreaChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onInvalidateColumn, onInvalidateRow, onChange, onColumnOrderChange, onRowOrderChange, onCellWidthChange, onCellHeightChange, onRightClick, dontCommitEditOnSelectionChange, dontChangeSelectionOnOrderChange) {
|
|
535
|
+
var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, onEdit, onCommit, onKnobAreaChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onInvalidateColumn, onInvalidateRow, onChange, onColumnOrderChange, onRowOrderChange, onCellWidthChange, onCellHeightChange, onRightClick, dontCommitEditOnSelectionChange, dontChangeSelectionOnOrderChange) {
|
|
541
536
|
var _useState = React.useState(null),
|
|
542
537
|
hitTarget = _useState[0],
|
|
543
538
|
setHitTarget = _useState[1];
|
|
@@ -627,6 +622,11 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
627
622
|
|
|
628
623
|
var rect = e.target.getBoundingClientRect();
|
|
629
624
|
var xy = [e.clientX - rect.left, e.clientY - rect.top];
|
|
625
|
+
|
|
626
|
+
if (xy[0] > e.target.clientWidth || xy[1] > e.target.clientHeight) {
|
|
627
|
+
return null;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
630
|
return xy;
|
|
631
631
|
}, []);
|
|
632
632
|
var getScrollPosition = React.useCallback(function (e) {
|
|
@@ -1046,9 +1046,9 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
1046
1046
|
pixelToRow = _ref$current3$cellLay.pixelToRow,
|
|
1047
1047
|
getIndentX = _ref$current3$cellLay.getIndentX,
|
|
1048
1048
|
getIndentY = _ref$current3$cellLay.getIndentY;
|
|
1049
|
+
window.document.body.style.cursor = 'auto';
|
|
1049
1050
|
var xy = getMousePosition(e);
|
|
1050
1051
|
if (!xy) return;
|
|
1051
|
-
window.document.body.style.cursor = 'auto';
|
|
1052
1052
|
var hitTarget = getMouseHit(xy);
|
|
1053
1053
|
|
|
1054
1054
|
if (hitTarget) {
|
|
@@ -1291,11 +1291,48 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
1291
1291
|
}
|
|
1292
1292
|
}, [getMousePosition, getScrollPosition, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys]);
|
|
1293
1293
|
var onDoubleClick = React.useCallback(function (e) {
|
|
1294
|
-
var
|
|
1294
|
+
var _ref$current4 = ref.current,
|
|
1295
|
+
selection = _ref$current4.selection,
|
|
1296
|
+
_ref$current4$cellLay = _ref$current4.cellLayout,
|
|
1297
|
+
pixelToCell = _ref$current4$cellLay.pixelToCell,
|
|
1298
|
+
columnToPixel = _ref$current4$cellLay.columnToPixel;
|
|
1295
1299
|
e.preventDefault();
|
|
1296
1300
|
if (e.shiftKey) return;
|
|
1297
1301
|
var xy = getMousePosition(e);
|
|
1298
1302
|
if (!xy) return;
|
|
1303
|
+
var x = xy[0];
|
|
1304
|
+
var columns = visibleCells.columns;
|
|
1305
|
+
|
|
1306
|
+
if (onCellWidthChange) {
|
|
1307
|
+
var autosized = [];
|
|
1308
|
+
|
|
1309
|
+
for (var _iterator10 = _createForOfIteratorHelperLoose(columns), _step10; !(_step10 = _iterator10()).done;) {
|
|
1310
|
+
var index = _step10.value;
|
|
1311
|
+
var edge = columnToPixel(index, 1);
|
|
1312
|
+
|
|
1313
|
+
if (Math.abs(edge - x) < SIZES.resizeZone && canSizeColumn(index)) {
|
|
1314
|
+
var _normalizeSelection5 = normalizeSelection(selection),
|
|
1315
|
+
_normalizeSelection5$ = _normalizeSelection5[0],
|
|
1316
|
+
minX = _normalizeSelection5$[0],
|
|
1317
|
+
_normalizeSelection5$2 = _normalizeSelection5[1],
|
|
1318
|
+
maxX = _normalizeSelection5$2[0];
|
|
1319
|
+
|
|
1320
|
+
var indices = isColumnSelection(selection) && index >= minX && index <= maxX ? mapSelectionColumns(selection)(function (i) {
|
|
1321
|
+
return i;
|
|
1322
|
+
}) : [index];
|
|
1323
|
+
autosized.push.apply(autosized, indices);
|
|
1324
|
+
}
|
|
1325
|
+
}
|
|
1326
|
+
|
|
1327
|
+
for (var _i = 0, _autosized = autosized; _i < _autosized.length; _i++) {
|
|
1328
|
+
var column = _autosized[_i];
|
|
1329
|
+
onInvalidateColumn === null || onInvalidateColumn === void 0 ? void 0 : onInvalidateColumn(column - 1);
|
|
1330
|
+
onCellWidthChange([column], getAutoSizeWidth(column));
|
|
1331
|
+
}
|
|
1332
|
+
|
|
1333
|
+
if (autosized.length) return;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1299
1336
|
var hitTarget = getMouseHit(xy);
|
|
1300
1337
|
|
|
1301
1338
|
if (hitTarget) {
|
|
@@ -1306,7 +1343,7 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
1306
1343
|
var editCell = pixelToCell(xy);
|
|
1307
1344
|
if (editMode) onCommit === null || onCommit === void 0 ? void 0 : onCommit();
|
|
1308
1345
|
onEdit === null || onEdit === void 0 ? void 0 : onEdit(editCell);
|
|
1309
|
-
}, [getMousePosition, getMouseHit, onCommit, onEdit]);
|
|
1346
|
+
}, [getMousePosition, getMouseHit, onCommit, onEdit, onInvalidateColumn, onCellWidthChange, getAutoSizeWidth, visibleCells, canSizeColumn]);
|
|
1310
1347
|
var onContextMenu = React.useCallback(function (e) {
|
|
1311
1348
|
var _ref$current$cellLayo2 = ref.current.cellLayout,
|
|
1312
1349
|
pixelToCell = _ref$current$cellLayo2.pixelToCell,
|
|
@@ -1353,21 +1390,21 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
1353
1390
|
};
|
|
1354
1391
|
|
|
1355
1392
|
var parseKnobOperation = function parseKnobOperation(knobArea, selection, sourceData, editData, cellReadOnly) {
|
|
1356
|
-
var
|
|
1357
|
-
_normalizeSelection5$ = _normalizeSelection5[0],
|
|
1358
|
-
kx1 = _normalizeSelection5$[0],
|
|
1359
|
-
ky1 = _normalizeSelection5$[1],
|
|
1360
|
-
_normalizeSelection5$2 = _normalizeSelection5[1],
|
|
1361
|
-
kx2 = _normalizeSelection5$2[0],
|
|
1362
|
-
ky2 = _normalizeSelection5$2[1];
|
|
1363
|
-
|
|
1364
|
-
var _normalizeSelection6 = normalizeSelection(selection),
|
|
1393
|
+
var _normalizeSelection6 = normalizeSelection(knobArea),
|
|
1365
1394
|
_normalizeSelection6$ = _normalizeSelection6[0],
|
|
1366
|
-
|
|
1367
|
-
|
|
1395
|
+
kx1 = _normalizeSelection6$[0],
|
|
1396
|
+
ky1 = _normalizeSelection6$[1],
|
|
1368
1397
|
_normalizeSelection6$2 = _normalizeSelection6[1],
|
|
1369
|
-
|
|
1370
|
-
|
|
1398
|
+
kx2 = _normalizeSelection6$2[0],
|
|
1399
|
+
ky2 = _normalizeSelection6$2[1];
|
|
1400
|
+
|
|
1401
|
+
var _normalizeSelection7 = normalizeSelection(selection),
|
|
1402
|
+
_normalizeSelection7$ = _normalizeSelection7[0],
|
|
1403
|
+
sx1 = _normalizeSelection7$[0],
|
|
1404
|
+
sy1 = _normalizeSelection7$[1],
|
|
1405
|
+
_normalizeSelection7$2 = _normalizeSelection7[1],
|
|
1406
|
+
sx2 = _normalizeSelection7$2[0],
|
|
1407
|
+
sy2 = _normalizeSelection7$2[1];
|
|
1371
1408
|
|
|
1372
1409
|
var fx1 = kx1;
|
|
1373
1410
|
var fy1 = ky1;
|
|
@@ -1492,30 +1529,81 @@ var useScroll = function useScroll(offset, maxScroll, cellLayout, onOffsetChange
|
|
|
1492
1529
|
}
|
|
1493
1530
|
}, [cellLayout, onOffsetChange, onMaxScrollChange]);
|
|
1494
1531
|
};
|
|
1495
|
-
var
|
|
1496
|
-
var
|
|
1497
|
-
|
|
1498
|
-
var w = view[0],
|
|
1499
|
-
h = view[1];
|
|
1500
|
-
var offsetX = offset[0],
|
|
1501
|
-
offsetY = offset[1];
|
|
1532
|
+
var clipDataOffset = function clipDataOffset(view, offset, freeze, maxCells, cellLayout) {
|
|
1533
|
+
var newX = offset[0],
|
|
1534
|
+
newY = offset[1];
|
|
1502
1535
|
var maxColumns = maxCells[0],
|
|
1503
1536
|
maxRows = maxCells[1];
|
|
1537
|
+
var absoluteToColumn = cellLayout.absoluteToColumn,
|
|
1538
|
+
columnToAbsolute = cellLayout.columnToAbsolute,
|
|
1539
|
+
absoluteToRow = cellLayout.absoluteToRow,
|
|
1540
|
+
rowToAbsolute = cellLayout.rowToAbsolute;
|
|
1541
|
+
|
|
1542
|
+
var _getViewExtent = getViewExtent(view, [newX, newY], freeze, cellLayout),
|
|
1543
|
+
_getViewExtent$edge = _getViewExtent.edge,
|
|
1544
|
+
rightEdge = _getViewExtent$edge[0],
|
|
1545
|
+
bottomEdge = _getViewExtent$edge[1],
|
|
1546
|
+
_getViewExtent$viewpo = _getViewExtent.viewport,
|
|
1547
|
+
scrollW = _getViewExtent$viewpo[0],
|
|
1548
|
+
scrollH = _getViewExtent$viewpo[1];
|
|
1549
|
+
|
|
1550
|
+
if (rightEdge > maxColumns) {
|
|
1551
|
+
var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
|
|
1552
|
+
newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
|
|
1553
|
+
}
|
|
1554
|
+
|
|
1555
|
+
if (bottomEdge > maxRows) {
|
|
1556
|
+
var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
|
|
1557
|
+
|
|
1558
|
+
newY = absoluteToRow(rowToAbsolute(newY) - scrollH + _remainder) + 1;
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
return [newX, newY];
|
|
1562
|
+
};
|
|
1563
|
+
var getViewExtent = function getViewExtent(view, offset, freeze, cellLayout) {
|
|
1504
1564
|
var cellToAbsolute = cellLayout.cellToAbsolute,
|
|
1505
|
-
cellToPixel = cellLayout.cellToPixel,
|
|
1506
|
-
columnToPixel = cellLayout.columnToPixel,
|
|
1507
|
-
rowToPixel = cellLayout.rowToPixel,
|
|
1508
1565
|
absoluteToColumn = cellLayout.absoluteToColumn,
|
|
1509
1566
|
columnToAbsolute = cellLayout.columnToAbsolute,
|
|
1510
1567
|
absoluteToRow = cellLayout.absoluteToRow,
|
|
1511
1568
|
rowToAbsolute = cellLayout.rowToAbsolute,
|
|
1512
1569
|
getIndentX = cellLayout.getIndentX,
|
|
1513
1570
|
getIndentY = cellLayout.getIndentY;
|
|
1571
|
+
var x = offset[0],
|
|
1572
|
+
y = offset[1];
|
|
1573
|
+
var w = view[0],
|
|
1574
|
+
h = view[1];
|
|
1514
1575
|
|
|
1515
1576
|
var _cellToAbsolute2 = cellToAbsolute(freeze),
|
|
1516
1577
|
frozenX = _cellToAbsolute2[0],
|
|
1517
1578
|
frozenY = _cellToAbsolute2[1];
|
|
1518
1579
|
|
|
1580
|
+
var scrollW = w - frozenX - getIndentX();
|
|
1581
|
+
var scrollH = h - frozenY - getIndentY();
|
|
1582
|
+
var leftEdge = x + freeze[0];
|
|
1583
|
+
var topEdge = y + freeze[1];
|
|
1584
|
+
var rightEdge = absoluteToColumn(columnToAbsolute(leftEdge) + scrollW);
|
|
1585
|
+
var bottomEdge = absoluteToRow(rowToAbsolute(topEdge) + scrollH);
|
|
1586
|
+
return {
|
|
1587
|
+
edge: [rightEdge, bottomEdge],
|
|
1588
|
+
viewport: [scrollW, scrollH]
|
|
1589
|
+
};
|
|
1590
|
+
};
|
|
1591
|
+
var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, maxScroll, cellLayout, callback) {
|
|
1592
|
+
var x = cell[0],
|
|
1593
|
+
y = cell[1];
|
|
1594
|
+
var w = view[0],
|
|
1595
|
+
h = view[1];
|
|
1596
|
+
var offsetX = offset[0],
|
|
1597
|
+
offsetY = offset[1];
|
|
1598
|
+
var cellToAbsolute = cellLayout.cellToAbsolute,
|
|
1599
|
+
cellToPixel = cellLayout.cellToPixel,
|
|
1600
|
+
columnToPixel = cellLayout.columnToPixel,
|
|
1601
|
+
rowToPixel = cellLayout.rowToPixel;
|
|
1602
|
+
|
|
1603
|
+
var _cellToAbsolute3 = cellToAbsolute(freeze),
|
|
1604
|
+
frozenX = _cellToAbsolute3[0],
|
|
1605
|
+
frozenY = _cellToAbsolute3[1];
|
|
1606
|
+
|
|
1519
1607
|
var _cellToPixel = cellToPixel(cell),
|
|
1520
1608
|
left = _cellToPixel[0],
|
|
1521
1609
|
top = _cellToPixel[1];
|
|
@@ -1529,25 +1617,10 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
|
|
|
1529
1617
|
|
|
1530
1618
|
if (left <= frozenX) {
|
|
1531
1619
|
newX = x - freeze[0];
|
|
1532
|
-
var scrollW = w - frozenX - getIndentX();
|
|
1533
|
-
var rightEdge = absoluteToColumn(columnToAbsolute(newX) + scrollW);
|
|
1534
|
-
|
|
1535
|
-
if (rightEdge > maxColumns) {
|
|
1536
|
-
var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
|
|
1537
|
-
newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
|
|
1538
|
-
}
|
|
1539
1620
|
}
|
|
1540
1621
|
|
|
1541
1622
|
if (top <= frozenY) {
|
|
1542
1623
|
newY = y - freeze[1];
|
|
1543
|
-
var scrollH = h - frozenY - getIndentY();
|
|
1544
|
-
var bottomEdge = absoluteToRow(rowToAbsolute(newY) + scrollH);
|
|
1545
|
-
|
|
1546
|
-
if (bottomEdge > maxRows) {
|
|
1547
|
-
var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
|
|
1548
|
-
|
|
1549
|
-
newY = absoluteToRow(rowToAbsolute(newY) - scrollH + _remainder) + 1;
|
|
1550
|
-
}
|
|
1551
1624
|
}
|
|
1552
1625
|
|
|
1553
1626
|
if (right > w) {
|
|
@@ -1567,9 +1640,9 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
|
|
|
1567
1640
|
if (!isSameXY(newOffset, offset)) {
|
|
1568
1641
|
var scroll = cellToAbsolute(newOffset);
|
|
1569
1642
|
|
|
1570
|
-
var
|
|
1571
|
-
nudgeX =
|
|
1572
|
-
nudgeY =
|
|
1643
|
+
var _cellToAbsolute4 = cellToAbsolute([0, 0], [0.5, 0.5]),
|
|
1644
|
+
nudgeX = _cellToAbsolute4[0],
|
|
1645
|
+
nudgeY = _cellToAbsolute4[1];
|
|
1573
1646
|
|
|
1574
1647
|
callback(newOffset, maxXY(maxScroll, scroll));
|
|
1575
1648
|
setTimeout(function () {
|
|
@@ -1581,6 +1654,85 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
|
|
|
1581
1654
|
}
|
|
1582
1655
|
};
|
|
1583
1656
|
|
|
1657
|
+
var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
|
|
1658
|
+
var _sheetStyle$shadowBlu, _sheetStyle$shadowOpa, _sheetStyle$shadowCol;
|
|
1659
|
+
|
|
1660
|
+
return {
|
|
1661
|
+
freezeColumns: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeColumns) || 0,
|
|
1662
|
+
freezeRows: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeRows) || 0,
|
|
1663
|
+
hideColumnHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideColumnHeaders) || false,
|
|
1664
|
+
hideRowHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideRowHeaders) || false,
|
|
1665
|
+
hideGridlines: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideGridlines) || false,
|
|
1666
|
+
hideScrollBars: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideScrollBars) || false,
|
|
1667
|
+
columnHeaderHeight: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideColumnHeaders ? 1 : SIZES.headerHeight,
|
|
1668
|
+
rowHeaderWidth: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideRowHeaders ? 1 : SIZES.headerWidth,
|
|
1669
|
+
shadowBlur: (_sheetStyle$shadowBlu = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowBlur) != null ? _sheetStyle$shadowBlu : SIZES.shadowBlur,
|
|
1670
|
+
shadowOpacity: (_sheetStyle$shadowOpa = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowOpacity) != null ? _sheetStyle$shadowOpa : SIZES.shadowOpacity,
|
|
1671
|
+
shadowColor: (_sheetStyle$shadowCol = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowColor) != null ? _sheetStyle$shadowCol : COLORS.shadowColor
|
|
1672
|
+
};
|
|
1673
|
+
};
|
|
1674
|
+
var resolveCellStyle = function resolveCellStyle(optionalStyle, defaultStyle) {
|
|
1675
|
+
return _extends({}, defaultStyle, optionalStyle);
|
|
1676
|
+
};
|
|
1677
|
+
var applyAlignment = function applyAlignment(start, cellSize, style, imageWidth, alignment) {
|
|
1678
|
+
if (alignment === void 0) {
|
|
1679
|
+
alignment = style.textAlign;
|
|
1680
|
+
}
|
|
1681
|
+
|
|
1682
|
+
if (alignment === 'left') {
|
|
1683
|
+
return start + style.marginLeft;
|
|
1684
|
+
} else if (alignment === 'center') {
|
|
1685
|
+
return start + cellSize * 0.5 - imageWidth / 2;
|
|
1686
|
+
} else if (alignment === 'right') {
|
|
1687
|
+
return start + (cellSize - style.marginRight - imageWidth);
|
|
1688
|
+
}
|
|
1689
|
+
|
|
1690
|
+
return start;
|
|
1691
|
+
};
|
|
1692
|
+
|
|
1693
|
+
var useAutoSizeColumn = function useAutoSizeColumn(rows, displayData, cellStyle) {
|
|
1694
|
+
var context = React.useMemo(function () {
|
|
1695
|
+
return document.createElement('canvas').getContext('2d');
|
|
1696
|
+
}, []);
|
|
1697
|
+
var getAutoSizeWidth = React.useCallback(function (x) {
|
|
1698
|
+
if (!context) return 0;
|
|
1699
|
+
var maxWidth = 0;
|
|
1700
|
+
|
|
1701
|
+
for (var _iterator = _createForOfIteratorHelperLoose(rows), _step; !(_step = _iterator()).done;) {
|
|
1702
|
+
var y = _step.value;
|
|
1703
|
+
var cellContent = displayData(x, y);
|
|
1704
|
+
|
|
1705
|
+
if (cellContent != null) {
|
|
1706
|
+
var style = cellStyle(x, y);
|
|
1707
|
+
var finalStyle = resolveCellStyle(style, DEFAULT_CELL_STYLE);
|
|
1708
|
+
context.fillStyle = finalStyle.color;
|
|
1709
|
+
context.font = finalStyle.weight + ' ' + finalStyle.fontSize + 'px ' + finalStyle.fontFamily;
|
|
1710
|
+
|
|
1711
|
+
if (typeof cellContent === 'string' || typeof cellContent === 'number') {
|
|
1712
|
+
var _context$measureText = context.measureText(cellContent.toString()),
|
|
1713
|
+
width = _context$measureText.width;
|
|
1714
|
+
|
|
1715
|
+
maxWidth = Math.max(maxWidth, width + finalStyle.marginLeft + finalStyle.marginRight);
|
|
1716
|
+
} else if (typeof cellContent === 'object') {
|
|
1717
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(cellContent.items), _step2; !(_step2 = _iterator2()).done;) {
|
|
1718
|
+
var obj = _step2.value;
|
|
1719
|
+
|
|
1720
|
+
if (typeof obj.content === 'string' || typeof obj.content === 'number') {
|
|
1721
|
+
var _context$measureText2 = context.measureText(obj.content.toString()),
|
|
1722
|
+
_width = _context$measureText2.width;
|
|
1723
|
+
|
|
1724
|
+
maxWidth = Math.max(maxWidth, obj.x + _width);
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
}
|
|
1730
|
+
|
|
1731
|
+
return Math.ceil(maxWidth);
|
|
1732
|
+
}, [context]);
|
|
1733
|
+
return getAutoSizeWidth;
|
|
1734
|
+
};
|
|
1735
|
+
|
|
1584
1736
|
var useClipboardCopy = function useClipboardCopy(textAreaRef, selection, editMode, editData) {
|
|
1585
1737
|
React.useLayoutEffect(function () {
|
|
1586
1738
|
var textArea = textAreaRef.current;
|
|
@@ -2203,42 +2355,6 @@ var makeIntMap = function makeIntMap(initialSize) {
|
|
|
2203
2355
|
};
|
|
2204
2356
|
};
|
|
2205
2357
|
|
|
2206
|
-
var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
|
|
2207
|
-
var _sheetStyle$shadowBlu, _sheetStyle$shadowOpa, _sheetStyle$shadowCol;
|
|
2208
|
-
|
|
2209
|
-
return {
|
|
2210
|
-
freezeColumns: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeColumns) || 0,
|
|
2211
|
-
freezeRows: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeRows) || 0,
|
|
2212
|
-
hideColumnHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideColumnHeaders) || false,
|
|
2213
|
-
hideRowHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideRowHeaders) || false,
|
|
2214
|
-
hideGridlines: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideGridlines) || false,
|
|
2215
|
-
hideScrollBars: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideScrollBars) || false,
|
|
2216
|
-
columnHeaderHeight: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideColumnHeaders ? 1 : SIZES.headerHeight,
|
|
2217
|
-
rowHeaderWidth: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideRowHeaders ? 1 : SIZES.headerWidth,
|
|
2218
|
-
shadowBlur: (_sheetStyle$shadowBlu = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowBlur) != null ? _sheetStyle$shadowBlu : SIZES.shadowBlur,
|
|
2219
|
-
shadowOpacity: (_sheetStyle$shadowOpa = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowOpacity) != null ? _sheetStyle$shadowOpa : SIZES.shadowOpacity,
|
|
2220
|
-
shadowColor: (_sheetStyle$shadowCol = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowColor) != null ? _sheetStyle$shadowCol : COLORS.shadowColor
|
|
2221
|
-
};
|
|
2222
|
-
};
|
|
2223
|
-
var resolveCellStyle = function resolveCellStyle(optionalStyle, defaultStyle) {
|
|
2224
|
-
return _extends({}, defaultStyle, optionalStyle);
|
|
2225
|
-
};
|
|
2226
|
-
var applyAlignment = function applyAlignment(start, cellSize, style, imageWidth, alignment) {
|
|
2227
|
-
if (alignment === void 0) {
|
|
2228
|
-
alignment = style.textAlign;
|
|
2229
|
-
}
|
|
2230
|
-
|
|
2231
|
-
if (alignment === 'left') {
|
|
2232
|
-
return start + style.marginLeft;
|
|
2233
|
-
} else if (alignment === 'center') {
|
|
2234
|
-
return start + cellSize * 0.5 - imageWidth / 2;
|
|
2235
|
-
} else if (alignment === 'right') {
|
|
2236
|
-
return start + (cellSize - style.marginRight - imageWidth);
|
|
2237
|
-
}
|
|
2238
|
-
|
|
2239
|
-
return start;
|
|
2240
|
-
};
|
|
2241
|
-
|
|
2242
2358
|
var renderSheet = function renderSheet(context, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset) {
|
|
2243
2359
|
var canvas = context.canvas;
|
|
2244
2360
|
var width = canvas.width,
|
|
@@ -3034,6 +3150,23 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3034
3150
|
}
|
|
3035
3151
|
}, [visibleCells, props.onScrollChange]);
|
|
3036
3152
|
|
|
3153
|
+
var scrollToSelection = function scrollToSelection(selection, toHead) {
|
|
3154
|
+
if (toHead === void 0) {
|
|
3155
|
+
toHead = false;
|
|
3156
|
+
}
|
|
3157
|
+
|
|
3158
|
+
var overlay = overlayRef.current;
|
|
3159
|
+
if (!overlay) return;
|
|
3160
|
+
var anchor = selection[0],
|
|
3161
|
+
head = selection[1];
|
|
3162
|
+
var view = [canvasWidth, canvasHeight];
|
|
3163
|
+
var freeze = [freezeColumns, freezeRows];
|
|
3164
|
+
scrollToCell(overlay, toHead ? head : anchor, view, freeze, dataOffset, maxScroll, cellLayout, function (dataOffset, maxScroll) {
|
|
3165
|
+
setDataOffset(dataOffset);
|
|
3166
|
+
setMaxScroll(maxScroll);
|
|
3167
|
+
});
|
|
3168
|
+
};
|
|
3169
|
+
|
|
3037
3170
|
var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
|
|
3038
3171
|
if (scrollTo === void 0) {
|
|
3039
3172
|
scrollTo = true;
|
|
@@ -3051,12 +3184,7 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3051
3184
|
if (!overlay) return;
|
|
3052
3185
|
|
|
3053
3186
|
if (scrollTo) {
|
|
3054
|
-
|
|
3055
|
-
head = newSelection[1];
|
|
3056
|
-
scrollToCell(overlay, toHead ? head : anchor, [canvasWidth, canvasHeight], [freezeColumns, freezeRows], dataOffset, [maxColumns, maxRows], maxScroll, cellLayout, function (dataOffset, maxScroll) {
|
|
3057
|
-
setDataOffset(dataOffset);
|
|
3058
|
-
setMaxScroll(maxScroll);
|
|
3059
|
-
});
|
|
3187
|
+
scrollToSelection(newSelection, toHead);
|
|
3060
3188
|
}
|
|
3061
3189
|
|
|
3062
3190
|
if (props.onSelectionChanged) {
|
|
@@ -3116,24 +3244,18 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3116
3244
|
_props$maxRows = props.maxRows,
|
|
3117
3245
|
maxRows = _props$maxRows === void 0 ? Infinity : _props$maxRows;
|
|
3118
3246
|
React.useLayoutEffect(function () {
|
|
3119
|
-
var
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
maxY = _normalizeSelection2$[1];
|
|
3123
|
-
|
|
3124
|
-
var overflowX = maxX > maxColumns;
|
|
3125
|
-
var overflowY = maxY > maxRows;
|
|
3126
|
-
if (!overflowX && !overflowY) return;
|
|
3127
|
-
var corner = [maxColumns - 1, maxRows - 1];
|
|
3128
|
-
changeSelection(clipSelection(selection, corner), true);
|
|
3247
|
+
var view = [canvasWidth, canvasHeight];
|
|
3248
|
+
var freeze = [freezeColumns, freezeRows];
|
|
3249
|
+
setDataOffset(clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout));
|
|
3129
3250
|
}, [maxRows, maxColumns]);
|
|
3130
3251
|
var hitmapRef = React.useRef(NO_CLICKABLES);
|
|
3131
3252
|
var textAreaRef = React.useRef(null);
|
|
3132
3253
|
useClipboardCopy(textAreaRef, selection, editMode, editData);
|
|
3133
3254
|
useClipboardPaste(textAreaRef, selection, changeSelection, props.onChange, cellReadOnly);
|
|
3134
3255
|
var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll);
|
|
3256
|
+
var getAutoSizeWidth = useAutoSizeColumn(visibleCells.rows, displayData, cellStyle);
|
|
3135
3257
|
|
|
3136
|
-
var _useMouse = useMouse(hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, startEditingCell, commitEditingCell, setKnobArea, setDragIndices, setDragOffset, setDropTarget, changeSelection, props.cacheLayout ? columnLayout.clearAfter : undefined, props.cacheLayout ? rowLayout.clearAfter : undefined, props.onChange, props.onColumnOrderChange, props.onRowOrderChange, props.onCellWidthChange, props.onCellHeightChange, props.onRightClick, props.dontCommitEditOnSelectionChange, props.dontChangeSelectionOnOrderChange),
|
|
3258
|
+
var _useMouse = useMouse(hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, startEditingCell, commitEditingCell, setKnobArea, setDragIndices, setDragOffset, setDropTarget, changeSelection, props.cacheLayout ? columnLayout.clearAfter : undefined, props.cacheLayout ? rowLayout.clearAfter : undefined, props.onChange, props.onColumnOrderChange, props.onRowOrderChange, props.onCellWidthChange, props.onCellHeightChange, props.onRightClick, props.dontCommitEditOnSelectionChange, props.dontChangeSelectionOnOrderChange),
|
|
3137
3259
|
mouseHandlers = _useMouse.mouseHandlers,
|
|
3138
3260
|
knobPosition = _useMouse.knobPosition;
|
|
3139
3261
|
|
|
@@ -3192,13 +3314,13 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3192
3314
|
}
|
|
3193
3315
|
|
|
3194
3316
|
if (e.key === 'Backspace' || e.key === 'Delete') {
|
|
3195
|
-
var
|
|
3196
|
-
|
|
3197
|
-
x1 =
|
|
3198
|
-
y1 =
|
|
3199
|
-
|
|
3200
|
-
x2 =
|
|
3201
|
-
y2 =
|
|
3317
|
+
var _normalizeSelection2 = normalizeSelection(selection),
|
|
3318
|
+
_normalizeSelection2$ = _normalizeSelection2[0],
|
|
3319
|
+
x1 = _normalizeSelection2$[0],
|
|
3320
|
+
y1 = _normalizeSelection2$[1],
|
|
3321
|
+
_normalizeSelection2$2 = _normalizeSelection2[1],
|
|
3322
|
+
x2 = _normalizeSelection2$2[0],
|
|
3323
|
+
y2 = _normalizeSelection2$2[1];
|
|
3202
3324
|
|
|
3203
3325
|
if (isRowSelection(selection)) {
|
|
3204
3326
|
x1 = 0;
|