sheet-happens 0.0.31 → 0.0.32

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.
@@ -157,9 +157,6 @@ var isInRange = function isInRange(x, min, max) {
157
157
  var isInRangeLeft = function isInRangeLeft(x, min, max) {
158
158
  return min <= x && x < max;
159
159
  };
160
- var isInRangeRight = function isInRangeRight(x, min, max) {
161
- return min < x && x <= max;
162
- };
163
160
  var isInRangeCenter = function isInRangeCenter(x, min, max) {
164
161
  return min < x && x < max;
165
162
  };
@@ -745,24 +742,24 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
745
742
  }
746
743
  }
747
744
 
748
- var scrollToHead = true;
745
+ var scrollTo = true;
749
746
 
750
747
  if (!hideRowHeaders && x < getIndentX()) {
751
- scrollToHead = false;
748
+ scrollTo = false;
752
749
  setDraggingRowSelection(true);
753
750
  anchor[0] = -1;
754
751
  head[0] = -1;
755
752
  }
756
753
 
757
754
  if (!hideColumnHeaders && y < getIndentY()) {
758
- scrollToHead = false;
755
+ scrollTo = false;
759
756
  setDraggingColumnSelection(true);
760
757
  anchor[1] = -1;
761
758
  head[1] = -1;
762
759
  }
763
760
 
764
761
  setDraggingSelection(true);
765
- onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([anchor, head], scrollToHead);
762
+ onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([anchor, head], scrollTo, true);
766
763
  }, [getMousePosition, getScrollPosition, getMouseHit, onColumnOrderChange, onRowOrderChange, onCellWidthChange, onCellHeightChange, onKnobAreaChange, onSelectionChange, onCommit, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow]);
767
764
  var onPointerUp = useCallback(function (e) {
768
765
  var _ref$current2 = ref.current,
@@ -1284,8 +1281,14 @@ var useScroll = function useScroll(offset, maxScroll, cellLayout, onOffsetChange
1284
1281
  return;
1285
1282
  }
1286
1283
 
1287
- var xy = [e.target.scrollLeft, e.target.scrollTop];
1288
- var absoluteToCell = cellLayout.absoluteToCell;
1284
+ var absoluteToCell = cellLayout.absoluteToCell,
1285
+ cellToAbsolute = cellLayout.cellToAbsolute;
1286
+
1287
+ var _cellToAbsolute = cellToAbsolute([0, 0], [0.5, 0.5]),
1288
+ nudgeX = _cellToAbsolute[0],
1289
+ nudgeY = _cellToAbsolute[1];
1290
+
1291
+ var xy = [e.target.scrollLeft + nudgeX, e.target.scrollTop + nudgeY];
1289
1292
  var cell = absoluteToCell(xy);
1290
1293
 
1291
1294
  if (!isSameXY(cell, offset)) {
@@ -1316,9 +1319,9 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1316
1319
  columnToPixel = cellLayout.columnToPixel,
1317
1320
  rowToPixel = cellLayout.rowToPixel;
1318
1321
 
1319
- var _cellToAbsolute = cellToAbsolute(freeze),
1320
- frozenX = _cellToAbsolute[0],
1321
- frozenY = _cellToAbsolute[1];
1322
+ var _cellToAbsolute2 = cellToAbsolute(freeze),
1323
+ frozenX = _cellToAbsolute2[0],
1324
+ frozenY = _cellToAbsolute2[1];
1322
1325
 
1323
1326
  var _cellToPixel = cellToPixel(cell),
1324
1327
  left = _cellToPixel[0],
@@ -1332,11 +1335,11 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1332
1335
  newY = offset[1];
1333
1336
 
1334
1337
  if (left <= frozenX) {
1335
- newX = x;
1338
+ newX = x - freeze[0];
1336
1339
  }
1337
1340
 
1338
1341
  if (top <= frozenY) {
1339
- newY = y;
1342
+ newY = y - freeze[1];
1340
1343
  }
1341
1344
 
1342
1345
  if (right > w) {
@@ -1355,12 +1358,17 @@ var scrollToCell = function scrollToCell(element, cell, view, freeze, offset, ma
1355
1358
 
1356
1359
  if (!isSameXY(newOffset, offset)) {
1357
1360
  var scroll = cellToAbsolute(newOffset);
1361
+
1362
+ var _cellToAbsolute3 = cellToAbsolute([0, 0], [0.5, 0.5]),
1363
+ nudgeX = _cellToAbsolute3[0],
1364
+ nudgeY = _cellToAbsolute3[1];
1365
+
1358
1366
  callback(newOffset, maxXY(maxScroll, scroll));
1359
1367
  setTimeout(function () {
1360
1368
  var scrollX = scroll[0],
1361
1369
  scrollY = scroll[1];
1362
- element.scrollLeft = scrollX;
1363
- element.scrollTop = scrollY;
1370
+ element.scrollLeft = scrollX - nudgeX;
1371
+ element.scrollTop = scrollY - nudgeY;
1364
1372
  });
1365
1373
  }
1366
1374
  };
@@ -2483,18 +2491,20 @@ var resolveFrozenSelection = function resolveFrozenSelection(selection, cellLayo
2483
2491
 
2484
2492
  if (isInRangeLeft(minX, freezeX, offsetX + freezeX)) {
2485
2493
  left = -1e5;
2494
+ var lastInvisibleX = offsetX + freezeX - 1;
2486
2495
 
2487
- if (isInRangeRight(maxX + 1, freezeX, offsetX + freezeX)) {
2488
- right = indentX;
2496
+ if (maxX <= lastInvisibleX) {
2497
+ if (maxX === lastInvisibleX) right = indentX;else right = -1e5;
2489
2498
  hideKnob = true;
2490
2499
  }
2491
2500
  }
2492
2501
 
2493
2502
  if (isInRangeLeft(minY, freezeY, offsetY + freezeY)) {
2494
2503
  top = -1e5;
2504
+ var lastInvisibleY = offsetY + freezeY - 1;
2495
2505
 
2496
- if (isInRangeRight(maxY + 1, freezeY, offsetY + freezeY)) {
2497
- bottom = indentY;
2506
+ if (maxY <= lastInvisibleY) {
2507
+ if (maxY === lastInvisibleY) bottom = indentY;else bottom = -1e5;
2498
2508
  hideKnob = true;
2499
2509
  }
2500
2510
  }
@@ -2707,9 +2717,13 @@ var Sheet = forwardRef(function (props, ref) {
2707
2717
  }
2708
2718
  }, [visibleCells, props.onScrollChange]);
2709
2719
 
2710
- var changeSelection = function changeSelection(newSelection, scrollToAnchor) {
2711
- if (scrollToAnchor === void 0) {
2712
- scrollToAnchor = true;
2720
+ var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
2721
+ if (scrollTo === void 0) {
2722
+ scrollTo = true;
2723
+ }
2724
+
2725
+ if (toHead === void 0) {
2726
+ toHead = false;
2713
2727
  }
2714
2728
 
2715
2729
  if (!isSameSelection(selection, newSelection)) {
@@ -2719,9 +2733,10 @@ var Sheet = forwardRef(function (props, ref) {
2719
2733
  var overlay = overlayRef.current;
2720
2734
  if (!overlay) return;
2721
2735
 
2722
- if (scrollToAnchor) {
2723
- var anchor = newSelection[0];
2724
- scrollToCell(overlay, anchor, [canvasWidth, canvasHeight], [freezeColumns, freezeRows], dataOffset, maxScroll, cellLayout, function (dataOffset, maxScroll) {
2736
+ if (scrollTo) {
2737
+ var anchor = newSelection[0],
2738
+ head = newSelection[1];
2739
+ scrollToCell(overlay, toHead ? head : anchor, [canvasWidth, canvasHeight], [freezeColumns, freezeRows], dataOffset, maxScroll, cellLayout, function (dataOffset, maxScroll) {
2725
2740
  setDataOffset(dataOffset);
2726
2741
  setMaxScroll(maxScroll);
2727
2742
  });
@@ -2915,7 +2930,7 @@ var Sheet = forwardRef(function (props, ref) {
2915
2930
  anchor = head;
2916
2931
  }
2917
2932
 
2918
- changeSelection([anchor, head]);
2933
+ changeSelection([anchor, head], true, true);
2919
2934
  return;
2920
2935
  }
2921
2936
 
@@ -2994,16 +3009,26 @@ var Sheet = forwardRef(function (props, ref) {
2994
3009
  canvasStyles.width = 'calc(100%)';
2995
3010
  }
2996
3011
 
2997
- var userRendered = useMemo(function () {
2998
- var _props$render;
3012
+ var renderedInside = useMemo(function () {
3013
+ var _props$renderInside;
3014
+
3015
+ return (_props$renderInside = props.renderInside) === null || _props$renderInside === void 0 ? void 0 : _props$renderInside.call(props, {
3016
+ visibleCells: visibleCells,
3017
+ cellLayout: cellLayout,
3018
+ selection: selection,
3019
+ editMode: editMode
3020
+ });
3021
+ }, [props.renderInside, visibleCells, cellLayout, selection, editMode]);
3022
+ var renderedOutside = useMemo(function () {
3023
+ var _props$renderOutside;
2999
3024
 
3000
- return (_props$render = props.render) === null || _props$render === void 0 ? void 0 : _props$render.call(props, {
3025
+ return (_props$renderOutside = props.renderOutside) === null || _props$renderOutside === void 0 ? void 0 : _props$renderOutside.call(props, {
3001
3026
  visibleCells: visibleCells,
3002
3027
  cellLayout: cellLayout,
3003
3028
  selection: selection,
3004
3029
  editMode: editMode
3005
3030
  });
3006
- }, [props.render, visibleCells, cellLayout, selection, editMode]);
3031
+ }, [props.renderOutside, visibleCells, cellLayout, selection, editMode]);
3007
3032
  return React.createElement("div", {
3008
3033
  style: {
3009
3034
  position: 'relative',
@@ -3037,13 +3062,19 @@ var Sheet = forwardRef(function (props, ref) {
3037
3062
  height: 1,
3038
3063
  backgroundColor: 'rgba(0,0,0,0.0)'
3039
3064
  }
3040
- }), userRendered ? React.createElement("div", {
3065
+ }), renderedInside ? React.createElement("div", {
3041
3066
  style: {
3042
3067
  position: 'sticky',
3043
3068
  left: 0,
3044
3069
  top: 0
3045
3070
  }
3046
- }, userRendered) : null), React.createElement("textarea", {
3071
+ }, renderedInside) : null), renderedOutside ? React.createElement("div", {
3072
+ style: {
3073
+ position: 'absolute',
3074
+ left: 0,
3075
+ top: 0
3076
+ }
3077
+ }, renderedOutside) : null, React.createElement("textarea", {
3047
3078
  style: {
3048
3079
  position: 'absolute',
3049
3080
  top: 0,