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