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