sheet-happens 0.0.47 → 0.0.48

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,
@@ -1763,14 +1765,14 @@ var clipDataOffset = function clipDataOffset(view, offset, freeze, maxCells, cel
1763
1765
  scrollH = _getViewExtent$viewpo[1];
1764
1766
 
1765
1767
  if (rightEdge > maxColumns) {
1766
- var remainder = columnToAbsolute(maxColumns) - columnToAbsolute(newX);
1767
- newX = absoluteToColumn(columnToAbsolute(newX) - scrollW + remainder) + 1;
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
1772
  if (bottomEdge > maxRows) {
1771
- var _remainder = rowToAbsolute(maxRows) - rowToAbsolute(newY);
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];
@@ -1854,20 +1856,25 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1854
1856
 
1855
1857
  if (!isSameXY(newOffset, offset)) {
1856
1858
  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
1859
  callback(newOffset, maxXY(maxScroll, scroll));
1863
1860
  setTimeout(function () {
1864
- var scrollX = scroll[0],
1865
- scrollY = scroll[1];
1866
- element.scrollLeft = scrollX - nudgeX;
1867
- element.scrollTop = scrollY - nudgeY;
1861
+ updateScrollPosition(element, newOffset, cellLayout);
1868
1862
  });
1869
1863
  }
1870
1864
  };
1865
+ var updateScrollPosition = function updateScrollPosition(element, dataOffset, cellLayout) {
1866
+ var cellToAbsolute = cellLayout.cellToAbsolute;
1867
+ var scroll = cellToAbsolute(dataOffset);
1868
+
1869
+ var _cellToAbsolute4 = cellToAbsolute([0, 0], [0.5, 0.5]),
1870
+ nudgeX = _cellToAbsolute4[0],
1871
+ nudgeY = _cellToAbsolute4[1];
1872
+
1873
+ var scrollX = scroll[0],
1874
+ scrollY = scroll[1];
1875
+ element.scrollLeft = scrollX - nudgeX;
1876
+ element.scrollTop = scrollY - nudgeY;
1877
+ };
1871
1878
 
1872
1879
  var useAutoSizeColumn = function useAutoSizeColumn(rows, displayData, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth) {
1873
1880
  var context = React.useMemo(function () {
@@ -3726,9 +3733,13 @@ var Sheet = React.forwardRef(function (props, ref) {
3726
3733
  _props$maxRows = props.maxRows,
3727
3734
  maxRows = _props$maxRows === void 0 ? Infinity : _props$maxRows;
3728
3735
  React.useLayoutEffect(function () {
3736
+ var overlay = overlayRef.current;
3737
+ if (!overlay) return;
3729
3738
  var view = [canvasWidth, canvasHeight];
3730
3739
  var freeze = [freezeColumns, freezeRows];
3731
- setDataOffset(clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout));
3740
+ var newOffset = clipDataOffset(view, dataOffset, freeze, [maxColumns, maxRows], cellLayout);
3741
+ setDataOffset(newOffset);
3742
+ updateScrollPosition(overlay, newOffset, cellLayout);
3732
3743
  }, [maxRows, maxColumns]);
3733
3744
  var hitmapRef = React.useRef(NO_CLICKABLES);
3734
3745
  var isFocused = focused || editMode;