sheet-happens 0.0.40 → 0.0.42

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.
@@ -348,11 +348,6 @@ var orientSelection = function orientSelection(normalized, to) {
348
348
  var swapY = (ay - hy || 1) * (bottom - top || 1) < 0;
349
349
  return [[swapX ? right : left, swapY ? bottom : top], [swapX ? left : right, swapY ? top : bottom]];
350
350
  };
351
- var clipSelection = function clipSelection(selection, max) {
352
- var anchor = selection[0],
353
- head = selection[1];
354
- return [minXY(anchor, max), minXY(head, max)];
355
- };
356
351
 
357
352
  var LIMIT = 1000;
358
353
 
@@ -534,7 +529,7 @@ var findInDisplayData = function findInDisplayData(displayData, start, direction
534
529
  return maxXY(cell, [0, 0]);
535
530
  };
536
531
 
537
- 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) {
532
+ 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) {
538
533
  var _useState = useState(null),
539
534
  hitTarget = _useState[0],
540
535
  setHitTarget = _useState[1];
@@ -624,6 +619,11 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
624
619
 
625
620
  var rect = e.target.getBoundingClientRect();
626
621
  var xy = [e.clientX - rect.left, e.clientY - rect.top];
622
+
623
+ if (xy[0] > e.target.clientWidth || xy[1] > e.target.clientHeight) {
624
+ return null;
625
+ }
626
+
627
627
  return xy;
628
628
  }, []);
629
629
  var getScrollPosition = useCallback(function (e) {
@@ -1043,9 +1043,9 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
1043
1043
  pixelToRow = _ref$current3$cellLay.pixelToRow,
1044
1044
  getIndentX = _ref$current3$cellLay.getIndentX,
1045
1045
  getIndentY = _ref$current3$cellLay.getIndentY;
1046
+ window.document.body.style.cursor = 'auto';
1046
1047
  var xy = getMousePosition(e);
1047
1048
  if (!xy) return;
1048
- window.document.body.style.cursor = 'auto';
1049
1049
  var hitTarget = getMouseHit(xy);
1050
1050
 
1051
1051
  if (hitTarget) {
@@ -1288,11 +1288,48 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
1288
1288
  }
1289
1289
  }, [getMousePosition, getScrollPosition, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys]);
1290
1290
  var onDoubleClick = useCallback(function (e) {
1291
- var pixelToCell = ref.current.cellLayout.pixelToCell;
1291
+ var _ref$current4 = ref.current,
1292
+ selection = _ref$current4.selection,
1293
+ _ref$current4$cellLay = _ref$current4.cellLayout,
1294
+ pixelToCell = _ref$current4$cellLay.pixelToCell,
1295
+ columnToPixel = _ref$current4$cellLay.columnToPixel;
1292
1296
  e.preventDefault();
1293
1297
  if (e.shiftKey) return;
1294
1298
  var xy = getMousePosition(e);
1295
1299
  if (!xy) return;
1300
+ var x = xy[0];
1301
+ var columns = visibleCells.columns;
1302
+
1303
+ if (onCellWidthChange) {
1304
+ var autosized = [];
1305
+
1306
+ for (var _iterator10 = _createForOfIteratorHelperLoose(columns), _step10; !(_step10 = _iterator10()).done;) {
1307
+ var index = _step10.value;
1308
+ var edge = columnToPixel(index, 1);
1309
+
1310
+ if (Math.abs(edge - x) < SIZES.resizeZone && canSizeColumn(index)) {
1311
+ var _normalizeSelection5 = normalizeSelection(selection),
1312
+ _normalizeSelection5$ = _normalizeSelection5[0],
1313
+ minX = _normalizeSelection5$[0],
1314
+ _normalizeSelection5$2 = _normalizeSelection5[1],
1315
+ maxX = _normalizeSelection5$2[0];
1316
+
1317
+ var indices = isColumnSelection(selection) && index >= minX && index <= maxX ? mapSelectionColumns(selection)(function (i) {
1318
+ return i;
1319
+ }) : [index];
1320
+ autosized.push.apply(autosized, indices);
1321
+ }
1322
+ }
1323
+
1324
+ for (var _i = 0, _autosized = autosized; _i < _autosized.length; _i++) {
1325
+ var column = _autosized[_i];
1326
+ onInvalidateColumn === null || onInvalidateColumn === void 0 ? void 0 : onInvalidateColumn(column - 1);
1327
+ onCellWidthChange([column], getAutoSizeWidth(column));
1328
+ }
1329
+
1330
+ if (autosized.length) return;
1331
+ }
1332
+
1296
1333
  var hitTarget = getMouseHit(xy);
1297
1334
 
1298
1335
  if (hitTarget) {
@@ -1303,7 +1340,7 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
1303
1340
  var editCell = pixelToCell(xy);
1304
1341
  if (editMode) onCommit === null || onCommit === void 0 ? void 0 : onCommit();
1305
1342
  onEdit === null || onEdit === void 0 ? void 0 : onEdit(editCell);
1306
- }, [getMousePosition, getMouseHit, onCommit, onEdit]);
1343
+ }, [getMousePosition, getMouseHit, onCommit, onEdit, onInvalidateColumn, onCellWidthChange, getAutoSizeWidth, visibleCells, canSizeColumn]);
1307
1344
  var onContextMenu = useCallback(function (e) {
1308
1345
  var _ref$current$cellLayo2 = ref.current.cellLayout,
1309
1346
  pixelToCell = _ref$current$cellLayo2.pixelToCell,
@@ -1350,21 +1387,21 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
1350
1387
  };
1351
1388
 
1352
1389
  var parseKnobOperation = function parseKnobOperation(knobArea, selection, sourceData, editData, cellReadOnly) {
1353
- var _normalizeSelection5 = normalizeSelection(knobArea),
1354
- _normalizeSelection5$ = _normalizeSelection5[0],
1355
- kx1 = _normalizeSelection5$[0],
1356
- ky1 = _normalizeSelection5$[1],
1357
- _normalizeSelection5$2 = _normalizeSelection5[1],
1358
- kx2 = _normalizeSelection5$2[0],
1359
- ky2 = _normalizeSelection5$2[1];
1360
-
1361
- var _normalizeSelection6 = normalizeSelection(selection),
1390
+ var _normalizeSelection6 = normalizeSelection(knobArea),
1362
1391
  _normalizeSelection6$ = _normalizeSelection6[0],
1363
- sx1 = _normalizeSelection6$[0],
1364
- sy1 = _normalizeSelection6$[1],
1392
+ kx1 = _normalizeSelection6$[0],
1393
+ ky1 = _normalizeSelection6$[1],
1365
1394
  _normalizeSelection6$2 = _normalizeSelection6[1],
1366
- sx2 = _normalizeSelection6$2[0],
1367
- sy2 = _normalizeSelection6$2[1];
1395
+ kx2 = _normalizeSelection6$2[0],
1396
+ ky2 = _normalizeSelection6$2[1];
1397
+
1398
+ var _normalizeSelection7 = normalizeSelection(selection),
1399
+ _normalizeSelection7$ = _normalizeSelection7[0],
1400
+ sx1 = _normalizeSelection7$[0],
1401
+ sy1 = _normalizeSelection7$[1],
1402
+ _normalizeSelection7$2 = _normalizeSelection7[1],
1403
+ sx2 = _normalizeSelection7$2[0],
1404
+ sy2 = _normalizeSelection7$2[1];
1368
1405
 
1369
1406
  var fx1 = kx1;
1370
1407
  var fy1 = ky1;
@@ -1489,30 +1526,81 @@ var useScroll = function useScroll(offset, maxScroll, cellLayout, onOffsetChange
1489
1526
  }
1490
1527
  }, [cellLayout, onOffsetChange, onMaxScrollChange]);
1491
1528
  };
1492
- var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, maxCells, maxScroll, cellLayout, callback) {
1493
- var x = cell[0],
1494
- y = cell[1];
1495
- var w = view[0],
1496
- h = view[1];
1497
- var offsetX = offset[0],
1498
- offsetY = offset[1];
1529
+ var clipDataOffset = function clipDataOffset(view, offset, freeze, maxCells, cellLayout) {
1530
+ var newX = offset[0],
1531
+ newY = offset[1];
1499
1532
  var maxColumns = maxCells[0],
1500
1533
  maxRows = maxCells[1];
1534
+ var absoluteToColumn = cellLayout.absoluteToColumn,
1535
+ columnToAbsolute = cellLayout.columnToAbsolute,
1536
+ absoluteToRow = cellLayout.absoluteToRow,
1537
+ rowToAbsolute = cellLayout.rowToAbsolute;
1538
+
1539
+ var _getViewExtent = getViewExtent(view, [newX, newY], freeze, cellLayout),
1540
+ _getViewExtent$edge = _getViewExtent.edge,
1541
+ rightEdge = _getViewExtent$edge[0],
1542
+ bottomEdge = _getViewExtent$edge[1],
1543
+ _getViewExtent$viewpo = _getViewExtent.viewport,
1544
+ scrollW = _getViewExtent$viewpo[0],
1545
+ scrollH = _getViewExtent$viewpo[1];
1546
+
1547
+ if (rightEdge > maxColumns) {
1548
+ var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
1549
+ newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
1550
+ }
1551
+
1552
+ if (bottomEdge > maxRows) {
1553
+ var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
1554
+
1555
+ newY = absoluteToRow(rowToAbsolute(newY) - scrollH + _remainder) + 1;
1556
+ }
1557
+
1558
+ return [newX, newY];
1559
+ };
1560
+ var getViewExtent = function getViewExtent(view, offset, freeze, cellLayout) {
1501
1561
  var cellToAbsolute = cellLayout.cellToAbsolute,
1502
- cellToPixel = cellLayout.cellToPixel,
1503
- columnToPixel = cellLayout.columnToPixel,
1504
- rowToPixel = cellLayout.rowToPixel,
1505
1562
  absoluteToColumn = cellLayout.absoluteToColumn,
1506
1563
  columnToAbsolute = cellLayout.columnToAbsolute,
1507
1564
  absoluteToRow = cellLayout.absoluteToRow,
1508
1565
  rowToAbsolute = cellLayout.rowToAbsolute,
1509
1566
  getIndentX = cellLayout.getIndentX,
1510
1567
  getIndentY = cellLayout.getIndentY;
1568
+ var x = offset[0],
1569
+ y = offset[1];
1570
+ var w = view[0],
1571
+ h = view[1];
1511
1572
 
1512
1573
  var _cellToAbsolute2 = cellToAbsolute(freeze),
1513
1574
  frozenX = _cellToAbsolute2[0],
1514
1575
  frozenY = _cellToAbsolute2[1];
1515
1576
 
1577
+ var scrollW = w - frozenX - getIndentX();
1578
+ var scrollH = h - frozenY - getIndentY();
1579
+ var leftEdge = x + freeze[0];
1580
+ var topEdge = y + freeze[1];
1581
+ var rightEdge = absoluteToColumn(columnToAbsolute(leftEdge) + scrollW);
1582
+ var bottomEdge = absoluteToRow(rowToAbsolute(topEdge) + scrollH);
1583
+ return {
1584
+ edge: [rightEdge, bottomEdge],
1585
+ viewport: [scrollW, scrollH]
1586
+ };
1587
+ };
1588
+ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, maxScroll, cellLayout, callback) {
1589
+ var x = cell[0],
1590
+ y = cell[1];
1591
+ var w = view[0],
1592
+ h = view[1];
1593
+ var offsetX = offset[0],
1594
+ offsetY = offset[1];
1595
+ var cellToAbsolute = cellLayout.cellToAbsolute,
1596
+ cellToPixel = cellLayout.cellToPixel,
1597
+ columnToPixel = cellLayout.columnToPixel,
1598
+ rowToPixel = cellLayout.rowToPixel;
1599
+
1600
+ var _cellToAbsolute3 = cellToAbsolute(freeze),
1601
+ frozenX = _cellToAbsolute3[0],
1602
+ frozenY = _cellToAbsolute3[1];
1603
+
1516
1604
  var _cellToPixel = cellToPixel(cell),
1517
1605
  left = _cellToPixel[0],
1518
1606
  top = _cellToPixel[1];
@@ -1526,25 +1614,10 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1526
1614
 
1527
1615
  if (left <= frozenX) {
1528
1616
  newX = x - freeze[0];
1529
- var scrollW = w - frozenX - getIndentX();
1530
- var rightEdge = absoluteToColumn(columnToAbsolute(newX) + scrollW);
1531
-
1532
- if (rightEdge > maxColumns) {
1533
- var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
1534
- newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
1535
- }
1536
1617
  }
1537
1618
 
1538
1619
  if (top <= frozenY) {
1539
1620
  newY = y - freeze[1];
1540
- var scrollH = h - frozenY - getIndentY();
1541
- var bottomEdge = absoluteToRow(rowToAbsolute(newY) + scrollH);
1542
-
1543
- if (bottomEdge > maxRows) {
1544
- var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
1545
-
1546
- newY = absoluteToRow(rowToAbsolute(newY) - scrollH + _remainder) + 1;
1547
- }
1548
1621
  }
1549
1622
 
1550
1623
  if (right > w) {
@@ -1564,9 +1637,9 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1564
1637
  if (!isSameXY(newOffset, offset)) {
1565
1638
  var scroll = cellToAbsolute(newOffset);
1566
1639
 
1567
- var _cellToAbsolute3 = cellToAbsolute([0, 0], [0.5, 0.5]),
1568
- nudgeX = _cellToAbsolute3[0],
1569
- nudgeY = _cellToAbsolute3[1];
1640
+ var _cellToAbsolute4 = cellToAbsolute([0, 0], [0.5, 0.5]),
1641
+ nudgeX = _cellToAbsolute4[0],
1642
+ nudgeY = _cellToAbsolute4[1];
1570
1643
 
1571
1644
  callback(newOffset, maxXY(maxScroll, scroll));
1572
1645
  setTimeout(function () {
@@ -1578,6 +1651,112 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1578
1651
  }
1579
1652
  };
1580
1653
 
1654
+ var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
1655
+ var _sheetStyle$shadowBlu, _sheetStyle$shadowOpa, _sheetStyle$shadowCol;
1656
+
1657
+ return {
1658
+ freezeColumns: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeColumns) || 0,
1659
+ freezeRows: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeRows) || 0,
1660
+ hideColumnHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideColumnHeaders) || false,
1661
+ hideRowHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideRowHeaders) || false,
1662
+ hideGridlines: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideGridlines) || false,
1663
+ hideScrollBars: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideScrollBars) || false,
1664
+ columnHeaderHeight: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideColumnHeaders ? 1 : SIZES.headerHeight,
1665
+ rowHeaderWidth: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideRowHeaders ? 1 : SIZES.headerWidth,
1666
+ shadowBlur: (_sheetStyle$shadowBlu = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowBlur) != null ? _sheetStyle$shadowBlu : SIZES.shadowBlur,
1667
+ shadowOpacity: (_sheetStyle$shadowOpa = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowOpacity) != null ? _sheetStyle$shadowOpa : SIZES.shadowOpacity,
1668
+ shadowColor: (_sheetStyle$shadowCol = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowColor) != null ? _sheetStyle$shadowCol : COLORS.shadowColor
1669
+ };
1670
+ };
1671
+ var resolveCellStyle = function resolveCellStyle(optionalStyle, defaultStyle) {
1672
+ return _extends({}, defaultStyle, optionalStyle);
1673
+ };
1674
+ var applyAlignment = function applyAlignment(start, cellSize, style, imageWidth, alignment) {
1675
+ if (alignment === void 0) {
1676
+ alignment = style.textAlign;
1677
+ }
1678
+
1679
+ if (alignment === 'left') {
1680
+ return start + style.marginLeft;
1681
+ } else if (alignment === 'center') {
1682
+ return start + cellSize * 0.5 - imageWidth / 2;
1683
+ } else if (alignment === 'right') {
1684
+ return start + (cellSize - style.marginRight - imageWidth);
1685
+ }
1686
+
1687
+ return start;
1688
+ };
1689
+
1690
+ var useAutoSizeColumn = function useAutoSizeColumn(rows, displayData, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth) {
1691
+ var context = useMemo(function () {
1692
+ return document.createElement('canvas').getContext('2d');
1693
+ }, []);
1694
+ var getAutoSizeWidth = useCallback(function (x) {
1695
+ if (!context) return 0;
1696
+
1697
+ var getWidth = function getWidth(cellContent, style) {
1698
+ var finalStyle = resolveCellStyle(style, DEFAULT_CELL_STYLE);
1699
+ context.font = finalStyle.weight + ' ' + finalStyle.fontSize + 'px ' + finalStyle.fontFamily;
1700
+ var inlineMargin = finalStyle.marginLeft + finalStyle.marginRight;
1701
+
1702
+ if (typeof cellContent === 'string' || typeof cellContent === 'number') {
1703
+ var _context$measureText = context.measureText(cellContent.toString()),
1704
+ width = _context$measureText.width;
1705
+
1706
+ return width + inlineMargin;
1707
+ } else if (typeof cellContent === 'object') {
1708
+ var _maxWidth = 0;
1709
+ var extraWidth = 0;
1710
+
1711
+ for (var _iterator = _createForOfIteratorHelperLoose(cellContent.items), _step; !(_step = _iterator()).done;) {
1712
+ var obj = _step.value;
1713
+ var _width = 0;
1714
+
1715
+ if (typeof obj.content === 'string' || typeof obj.content === 'number') {
1716
+ var _context$measureText2 = context.measureText(obj.content.toString()),
1717
+ w = _context$measureText2.width;
1718
+
1719
+ _width = obj.x + w + inlineMargin;
1720
+ } else if (obj.width) {
1721
+ _width = obj.width;
1722
+ }
1723
+
1724
+ if (obj.horizontalAlign === 'right') {
1725
+ extraWidth += _width;
1726
+ } else {
1727
+ _maxWidth = Math.max(_maxWidth, _width);
1728
+ }
1729
+ }
1730
+
1731
+ return _maxWidth + extraWidth;
1732
+ }
1733
+
1734
+ return 0;
1735
+ };
1736
+
1737
+ var maxWidth = SIZES.minimumWidth;
1738
+ var headerContent = columnHeaders(x);
1739
+
1740
+ if (headerContent) {
1741
+ var headerStyle = columnHeaderStyle(x);
1742
+ maxWidth = Math.max(maxWidth, getWidth(headerContent, headerStyle));
1743
+ }
1744
+
1745
+ for (var _iterator2 = _createForOfIteratorHelperLoose(rows), _step2; !(_step2 = _iterator2()).done;) {
1746
+ var y = _step2.value;
1747
+ var cellContent = displayData(x, y);
1748
+
1749
+ if (cellContent != null) {
1750
+ var style = cellStyle(x, y);
1751
+ maxWidth = Math.max(maxWidth, getWidth(cellContent, style));
1752
+ }
1753
+ }
1754
+
1755
+ return Math.ceil(Math.min(canvasWidth, maxWidth));
1756
+ }, [context, displayData, cellStyle, columnHeaders, columnHeaderStyle]);
1757
+ return getAutoSizeWidth;
1758
+ };
1759
+
1581
1760
  var useClipboardCopy = function useClipboardCopy(textAreaRef, selection, editMode, editData) {
1582
1761
  useLayoutEffect(function () {
1583
1762
  var textArea = textAreaRef.current;
@@ -2200,42 +2379,6 @@ var makeIntMap = function makeIntMap(initialSize) {
2200
2379
  };
2201
2380
  };
2202
2381
 
2203
- var resolveSheetStyle = function resolveSheetStyle(sheetStyle) {
2204
- var _sheetStyle$shadowBlu, _sheetStyle$shadowOpa, _sheetStyle$shadowCol;
2205
-
2206
- return {
2207
- freezeColumns: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeColumns) || 0,
2208
- freezeRows: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.freezeRows) || 0,
2209
- hideColumnHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideColumnHeaders) || false,
2210
- hideRowHeaders: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideRowHeaders) || false,
2211
- hideGridlines: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideGridlines) || false,
2212
- hideScrollBars: (sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.hideScrollBars) || false,
2213
- columnHeaderHeight: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideColumnHeaders ? 1 : SIZES.headerHeight,
2214
- rowHeaderWidth: sheetStyle !== null && sheetStyle !== void 0 && sheetStyle.hideRowHeaders ? 1 : SIZES.headerWidth,
2215
- shadowBlur: (_sheetStyle$shadowBlu = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowBlur) != null ? _sheetStyle$shadowBlu : SIZES.shadowBlur,
2216
- shadowOpacity: (_sheetStyle$shadowOpa = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowOpacity) != null ? _sheetStyle$shadowOpa : SIZES.shadowOpacity,
2217
- shadowColor: (_sheetStyle$shadowCol = sheetStyle === null || sheetStyle === void 0 ? void 0 : sheetStyle.shadowColor) != null ? _sheetStyle$shadowCol : COLORS.shadowColor
2218
- };
2219
- };
2220
- var resolveCellStyle = function resolveCellStyle(optionalStyle, defaultStyle) {
2221
- return _extends({}, defaultStyle, optionalStyle);
2222
- };
2223
- var applyAlignment = function applyAlignment(start, cellSize, style, imageWidth, alignment) {
2224
- if (alignment === void 0) {
2225
- alignment = style.textAlign;
2226
- }
2227
-
2228
- if (alignment === 'left') {
2229
- return start + style.marginLeft;
2230
- } else if (alignment === 'center') {
2231
- return start + cellSize * 0.5 - imageWidth / 2;
2232
- } else if (alignment === 'right') {
2233
- return start + (cellSize - style.marginRight - imageWidth);
2234
- }
2235
-
2236
- return start;
2237
- };
2238
-
2239
2382
  var renderSheet = function renderSheet(context, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset) {
2240
2383
  var canvas = context.canvas;
2241
2384
  var width = canvas.width,
@@ -3031,6 +3174,23 @@ var Sheet = forwardRef(function (props, ref) {
3031
3174
  }
3032
3175
  }, [visibleCells, props.onScrollChange]);
3033
3176
 
3177
+ var scrollToSelection = function scrollToSelection(selection, toHead) {
3178
+ if (toHead === void 0) {
3179
+ toHead = false;
3180
+ }
3181
+
3182
+ var overlay = overlayRef.current;
3183
+ if (!overlay) return;
3184
+ var anchor = selection[0],
3185
+ head = selection[1];
3186
+ var view = [canvasWidth, canvasHeight];
3187
+ var freeze = [freezeColumns, freezeRows];
3188
+ scrollToCell(overlay, toHead ? head : anchor, view, freeze, dataOffset, maxScroll, cellLayout, function (dataOffset, maxScroll) {
3189
+ setDataOffset(dataOffset);
3190
+ setMaxScroll(maxScroll);
3191
+ });
3192
+ };
3193
+
3034
3194
  var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
3035
3195
  if (scrollTo === void 0) {
3036
3196
  scrollTo = true;
@@ -3048,12 +3208,7 @@ var Sheet = forwardRef(function (props, ref) {
3048
3208
  if (!overlay) return;
3049
3209
 
3050
3210
  if (scrollTo) {
3051
- var anchor = newSelection[0],
3052
- head = newSelection[1];
3053
- scrollToCell(overlay, toHead ? head : anchor, [canvasWidth, canvasHeight], [freezeColumns, freezeRows], dataOffset, [maxColumns, maxRows], maxScroll, cellLayout, function (dataOffset, maxScroll) {
3054
- setDataOffset(dataOffset);
3055
- setMaxScroll(maxScroll);
3056
- });
3211
+ scrollToSelection(newSelection, toHead);
3057
3212
  }
3058
3213
 
3059
3214
  if (props.onSelectionChanged) {
@@ -3113,24 +3268,18 @@ var Sheet = forwardRef(function (props, ref) {
3113
3268
  _props$maxRows = props.maxRows,
3114
3269
  maxRows = _props$maxRows === void 0 ? Infinity : _props$maxRows;
3115
3270
  useLayoutEffect(function () {
3116
- var _normalizeSelection2 = normalizeSelection(selection),
3117
- _normalizeSelection2$ = _normalizeSelection2[1],
3118
- maxX = _normalizeSelection2$[0],
3119
- maxY = _normalizeSelection2$[1];
3120
-
3121
- var overflowX = maxX > maxColumns;
3122
- var overflowY = maxY > maxRows;
3123
- if (!overflowX && !overflowY) return;
3124
- var corner = [maxColumns - 1, maxRows - 1];
3125
- changeSelection(clipSelection(selection, corner), true);
3271
+ var view = [canvasWidth, canvasHeight];
3272
+ var freeze = [freezeColumns, freezeRows];
3273
+ setDataOffset(clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout));
3126
3274
  }, [maxRows, maxColumns]);
3127
3275
  var hitmapRef = useRef(NO_CLICKABLES);
3128
3276
  var textAreaRef = useRef(null);
3129
3277
  useClipboardCopy(textAreaRef, selection, editMode, editData);
3130
3278
  useClipboardPaste(textAreaRef, selection, changeSelection, props.onChange, cellReadOnly);
3131
3279
  var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll);
3280
+ var getAutoSizeWidth = useAutoSizeColumn(visibleCells.rows, displayData, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth);
3132
3281
 
3133
- 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),
3282
+ 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),
3134
3283
  mouseHandlers = _useMouse.mouseHandlers,
3135
3284
  knobPosition = _useMouse.knobPosition;
3136
3285
 
@@ -3189,13 +3338,13 @@ var Sheet = forwardRef(function (props, ref) {
3189
3338
  }
3190
3339
 
3191
3340
  if (e.key === 'Backspace' || e.key === 'Delete') {
3192
- var _normalizeSelection3 = normalizeSelection(selection),
3193
- _normalizeSelection3$ = _normalizeSelection3[0],
3194
- x1 = _normalizeSelection3$[0],
3195
- y1 = _normalizeSelection3$[1],
3196
- _normalizeSelection3$2 = _normalizeSelection3[1],
3197
- x2 = _normalizeSelection3$2[0],
3198
- y2 = _normalizeSelection3$2[1];
3341
+ var _normalizeSelection2 = normalizeSelection(selection),
3342
+ _normalizeSelection2$ = _normalizeSelection2[0],
3343
+ x1 = _normalizeSelection2$[0],
3344
+ y1 = _normalizeSelection2$[1],
3345
+ _normalizeSelection2$2 = _normalizeSelection2[1],
3346
+ x2 = _normalizeSelection2$2[0],
3347
+ y2 = _normalizeSelection2$2[1];
3199
3348
 
3200
3349
  if (isRowSelection(selection)) {
3201
3350
  x1 = 0;