sheet-happens 0.0.47 → 0.0.49

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/index.js CHANGED
@@ -1747,6 +1747,8 @@ var useScroll = function useScroll(offset, maxScroll, cellLayout, onOffsetChange
1747
1747
  var clipDataOffset = function clipDataOffset(view, offset, freeze, maxCells, cellLayout) {
1748
1748
  var newX = offset[0],
1749
1749
  newY = offset[1];
1750
+ var freezeX = freeze[0],
1751
+ freezeY = freeze[1];
1750
1752
  var maxColumns = maxCells[0],
1751
1753
  maxRows = maxCells[1];
1752
1754
  var absoluteToColumn = cellLayout.absoluteToColumn,
@@ -1756,31 +1758,27 @@ var clipDataOffset = function clipDataOffset(view, offset, freeze, maxCells, cel
1756
1758
 
1757
1759
  var _getViewExtent = getViewExtent(view, [newX, newY], freeze, cellLayout),
1758
1760
  _getViewExtent$edge = _getViewExtent.edge,
1759
- rightEdge = _getViewExtent$edge[0],
1760
- bottomEdge = _getViewExtent$edge[1],
1761
+ leftEdge = _getViewExtent$edge[0],
1762
+ topEdge = _getViewExtent$edge[1],
1761
1763
  _getViewExtent$viewpo = _getViewExtent.viewport,
1762
1764
  scrollW = _getViewExtent$viewpo[0],
1763
1765
  scrollH = _getViewExtent$viewpo[1];
1764
1766
 
1765
- if (rightEdge > maxColumns) {
1766
- var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
1767
- newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
1767
+ if (leftEdge >= maxColumns) {
1768
+ var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX + freezeX);
1769
+ newX = Math.max(0, absoluteToColumn(columnToAbsolute(newX + freezeX) - scrollW + remainder) - freezeX + 1);
1768
1770
  }
1769
1771
 
1770
- if (bottomEdge > maxRows) {
1771
- var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
1772
+ if (topEdge >= maxRows) {
1773
+ var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY + freezeY);
1772
1774
 
1773
- newY = absoluteToRow(rowToAbsolute(newY) - scrollH + _remainder) + 1;
1775
+ newY = Math.max(0, absoluteToRow(rowToAbsolute(newY + freezeY) - scrollH + _remainder) - freezeY + 1);
1774
1776
  }
1775
1777
 
1776
1778
  return [newX, newY];
1777
1779
  };
1778
1780
  var getViewExtent = function getViewExtent(view, offset, freeze, cellLayout) {
1779
1781
  var cellToAbsolute = cellLayout.cellToAbsolute,
1780
- absoluteToColumn = cellLayout.absoluteToColumn,
1781
- columnToAbsolute = cellLayout.columnToAbsolute,
1782
- absoluteToRow = cellLayout.absoluteToRow,
1783
- rowToAbsolute = cellLayout.rowToAbsolute,
1784
1782
  getIndentX = cellLayout.getIndentX,
1785
1783
  getIndentY = cellLayout.getIndentY;
1786
1784
  var x = offset[0],
@@ -1796,10 +1794,8 @@ var getViewExtent = function getViewExtent(view, offset, freeze, cellLayout) {
1796
1794
  var scrollH = h - frozenY - getIndentY();
1797
1795
  var leftEdge = x + freeze[0];
1798
1796
  var topEdge = y + freeze[1];
1799
- var rightEdge = absoluteToColumn(columnToAbsolute(leftEdge) + scrollW);
1800
- var bottomEdge = absoluteToRow(rowToAbsolute(topEdge) + scrollH);
1801
1797
  return {
1802
- edge: [rightEdge, bottomEdge],
1798
+ edge: [leftEdge, topEdge],
1803
1799
  viewport: [scrollW, scrollH]
1804
1800
  };
1805
1801
  };
@@ -1854,20 +1850,25 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1854
1850
 
1855
1851
  if (!isSameXY(newOffset, offset)) {
1856
1852
  var scroll = cellToAbsolute(newOffset);
1857
-
1858
- var _cellToAbsolute4 = cellToAbsolute([0, 0], [0.5, 0.5]),
1859
- nudgeX = _cellToAbsolute4[0],
1860
- nudgeY = _cellToAbsolute4[1];
1861
-
1862
1853
  callback(newOffset, maxXY(maxScroll, scroll));
1863
1854
  setTimeout(function () {
1864
- var scrollX = scroll[0],
1865
- scrollY = scroll[1];
1866
- element.scrollLeft = scrollX - nudgeX;
1867
- element.scrollTop = scrollY - nudgeY;
1855
+ updateScrollPosition(element, newOffset, cellLayout);
1868
1856
  });
1869
1857
  }
1870
1858
  };
1859
+ var updateScrollPosition = function updateScrollPosition(element, dataOffset, cellLayout) {
1860
+ var cellToAbsolute = cellLayout.cellToAbsolute;
1861
+ var scroll = cellToAbsolute(dataOffset);
1862
+
1863
+ var _cellToAbsolute4 = cellToAbsolute([0, 0], [0.5, 0.5]),
1864
+ nudgeX = _cellToAbsolute4[0],
1865
+ nudgeY = _cellToAbsolute4[1];
1866
+
1867
+ var scrollX = scroll[0],
1868
+ scrollY = scroll[1];
1869
+ element.scrollLeft = scrollX - nudgeX;
1870
+ element.scrollTop = scrollY - nudgeY;
1871
+ };
1871
1872
 
1872
1873
  var useAutoSizeColumn = function useAutoSizeColumn(rows, displayData, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth) {
1873
1874
  var context = React.useMemo(function () {
@@ -3726,9 +3727,13 @@ var Sheet = React.forwardRef(function (props, ref) {
3726
3727
  _props$maxRows = props.maxRows,
3727
3728
  maxRows = _props$maxRows === void 0 ? Infinity : _props$maxRows;
3728
3729
  React.useLayoutEffect(function () {
3730
+ var overlay = overlayRef.current;
3731
+ if (!overlay) return;
3729
3732
  var view = [canvasWidth, canvasHeight];
3730
3733
  var freeze = [freezeColumns, freezeRows];
3731
- setDataOffset(clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout));
3734
+ var newOffset = clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout);
3735
+ setDataOffset(newOffset);
3736
+ updateScrollPosition(overlay, newOffset, cellLayout);
3732
3737
  }, [maxRows, maxColumns]);
3733
3738
  var hitmapRef = React.useRef(NO_CLICKABLES);
3734
3739
  var isFocused = focused || editMode;