sheet-happens 0.0.59 → 0.0.61

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
@@ -657,7 +657,7 @@ var findInDisplayData = function findInDisplayData(displayData, start, direction
657
657
  return maxXY(cell, [0, 0]);
658
658
  };
659
659
 
660
- var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, maxColumns, maxRows, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, getAutoSizeHeight, onEdit, onCommit, onKnobAreaChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onFocusChange, onInvalidateColumn, onInvalidateRow, onChange, onColumnOrderChange, onRowOrderChange, onCellWidthChange, onCellHeightChange, onRightClick, dontCommitEditOnSelectionChange, dontChangeSelectionOnOrderChange) {
660
+ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, maxColumns, maxRows, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, getAutoSizeHeight, onEdit, onCommit, onKnobAreaChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onFocusChange, onInvalidateColumn, onInvalidateRow, onChange, onColumnOrderChange, onRowOrderChange, onColumnDrop, onRowDrop, onCellWidthChange, onCellHeightChange, onRightClick, dontCommitEditOnSelectionChange, dontChangeSelectionOnOrderChange) {
661
661
  var _useState = React.useState(null),
662
662
  columnResize = _useState[0],
663
663
  setColumnResize = _useState[1];
@@ -806,7 +806,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
806
806
  return i;
807
807
  });
808
808
  if (!hideColumnHeaders && y < getIndentY()) {
809
- if (onColumnOrderChange) {
809
+ if (onColumnOrderChange || onColumnDrop) {
810
810
  var start = columnToPixel(minX) + SIZES.resizeZone;
811
811
  var end = columnToPixel(maxX, 1) - SIZES.resizeZone;
812
812
  if (isInRange(x, start, end) || selectedColumnGroups) {
@@ -870,7 +870,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
870
870
  }
871
871
  }
872
872
  if (!hideRowHeaders && x < getIndentX()) {
873
- if (onRowOrderChange) {
873
+ if (onRowOrderChange || onRowDrop) {
874
874
  var _start2 = rowToPixel(minY) + SIZES.resizeZone;
875
875
  var _end2 = rowToPixel(maxY, 1) - SIZES.resizeZone;
876
876
  if (isInRange(y, _start2, _end2) || selectedRowGroups) {
@@ -1009,33 +1009,45 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1009
1009
  _normalizeSelection2$2 = _normalizeSelection2[1],
1010
1010
  maxX = _normalizeSelection2$2[0],
1011
1011
  maxY = _normalizeSelection2$2[1];
1012
- var cellX = pixelToColumn(x, 0.5);
1013
- var cellY = pixelToRow(y, 0.5);
1014
1012
  if (columnDrag) {
1015
1013
  var indices = columnDrag.indices;
1016
- var insideSelection = cellX >= minX && cellX <= maxX + 1;
1017
- var insideGroup = selectedColumnGroups === null || selectedColumnGroups === void 0 ? void 0 : selectedColumnGroups.has(columnGroupKeys(x));
1018
- if (!insideSelection && !insideGroup) {
1014
+ var startX = pixelToColumn(x, 0);
1015
+ var midX = pixelToColumn(x, 0.5);
1016
+ var leftX = pixelToColumn(x, 0.25);
1017
+ var rightX = pixelToColumn(x, 0.75) - 1;
1018
+ var insideGroup = isBoundaryInsideGroup(midX, columnGroupKeys);
1019
+ var dropOn = onColumnDrop && (insideGroup || leftX === rightX) || !onColumnOrderChange;
1020
+ var dropX = dropOn ? startX : midX;
1021
+ var insideSelection = dropX >= minX && dropX <= maxX + +!dropOn;
1022
+ if (!insideSelection && (dropOn || !insideGroup)) {
1023
+ var _ref;
1019
1024
  var preceding = indices.filter(function (i) {
1020
- return i < cellX;
1025
+ return i < dropX;
1021
1026
  });
1022
- var order = cellX - preceding.length;
1023
- dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[order, minY], [order + indices.length - 1, maxY]]));
1024
- onColumnOrderChange === null || onColumnOrderChange === void 0 ? void 0 : onColumnOrderChange(indices, order);
1027
+ var order = dropX - preceding.length;
1028
+ dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[order, minY], [order + (dropOn ? 0 : indices.length - 1), maxY]]));
1029
+ (_ref = dropOn ? onColumnDrop : onColumnOrderChange) === null || _ref === void 0 ? void 0 : _ref(indices, order);
1025
1030
  onInvalidateColumn === null || onInvalidateColumn === void 0 ? void 0 : onInvalidateColumn(Math.min(minX, order));
1026
1031
  }
1027
1032
  }
1028
1033
  if (rowDrag) {
1029
1034
  var _indices4 = rowDrag.indices;
1030
- var _insideSelection = cellY >= minY && cellY <= maxY + 1;
1031
- var _insideGroup = selectedRowGroups === null || selectedRowGroups === void 0 ? void 0 : selectedRowGroups.has(rowGroupKeys(y));
1032
- if (!_insideSelection && !_insideGroup) {
1035
+ var startY = pixelToRow(y, 0);
1036
+ var midY = pixelToRow(y, 0.5);
1037
+ var topY = pixelToRow(y, 0.25);
1038
+ var bottomY = pixelToRow(y, 0.75) - 1;
1039
+ var _insideGroup = isBoundaryInsideGroup(midY, rowGroupKeys);
1040
+ var _dropOn = onRowDrop && (_insideGroup || topY === bottomY) || !onRowOrderChange;
1041
+ var dropY = _dropOn ? startY : midY;
1042
+ var _insideSelection = dropY >= minY && dropY <= maxY + +!_dropOn;
1043
+ if (!_insideSelection && (_dropOn || !_insideGroup)) {
1044
+ var _ref2;
1033
1045
  var _preceding = _indices4.filter(function (i) {
1034
- return i < cellY;
1046
+ return i < dropY;
1035
1047
  });
1036
- var _order = cellY - _preceding.length;
1037
- dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[minX, _order], [maxX, _order + _indices4.length - 1]]));
1038
- onRowOrderChange === null || onRowOrderChange === void 0 ? void 0 : onRowOrderChange(_indices4, _order);
1048
+ var _order = dropY - _preceding.length;
1049
+ dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[minX, _order], [maxX, _order + (_dropOn ? 0 : _indices4.length - 1)]]));
1050
+ (_ref2 = _dropOn ? onRowDrop : onRowOrderChange) === null || _ref2 === void 0 ? void 0 : _ref2(_indices4, _order);
1039
1051
  onInvalidateRow === null || onInvalidateRow === void 0 ? void 0 : onInvalidateRow(Math.min(minY, _order));
1040
1052
  }
1041
1053
  }
@@ -1111,7 +1123,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1111
1123
  };
1112
1124
  if (!isDragging) {
1113
1125
  if (!hideColumnHeaders && y < getIndentY()) {
1114
- if (onColumnOrderChange) {
1126
+ if (onColumnOrderChange || onColumnDrop) {
1115
1127
  var start = columnToPixel(minX) + SIZES.resizeZone;
1116
1128
  var end = columnToPixel(maxX, 1) - SIZES.resizeZone;
1117
1129
  if (isInRange(x, start, end) || selectedColumnGroups) {
@@ -1138,7 +1150,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1138
1150
  }
1139
1151
  }
1140
1152
  if (!hideRowHeaders && x < getIndentX()) {
1141
- if (onRowOrderChange) {
1153
+ if (onRowOrderChange || onRowDrop) {
1142
1154
  var _start5 = rowToPixel(minY) + SIZES.resizeZone;
1143
1155
  var _end5 = rowToPixel(maxY, 1) - SIZES.resizeZone;
1144
1156
  if (isInRange(y, _start5, _end5) || selectedRowGroups) {
@@ -1253,31 +1265,61 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1253
1265
  var _x = xy[0],
1254
1266
  _y = xy[1];
1255
1267
  if (columnDrag) {
1256
- var _cellX = pixelToColumn(_x, 0.5);
1257
- var insideSelection = _cellX >= minX && _cellX <= maxX + 1;
1258
- var insideGroup = isBoundaryInsideGroup(_cellX, columnGroupKeys);
1268
+ var _expandSelectionToRow7 = expandSelectionToRowOrColumnGroups(selection, columnGroupKeys, selectedColumnGroups, 0),
1269
+ _expandSelectionToRow8 = _expandSelectionToRow7[0],
1270
+ _minX2 = _expandSelectionToRow8[0],
1271
+ _expandSelectionToRow9 = _expandSelectionToRow7[1],
1272
+ _maxX2 = _expandSelectionToRow9[0];
1273
+ var startX = pixelToColumn(_x, 0);
1274
+ var midX = pixelToColumn(_x, 0.5);
1275
+ var leftX = pixelToColumn(_x, 0.25);
1276
+ var rightX = pixelToColumn(_x, 0.75) - 1;
1277
+ var insideGroup = isBoundaryInsideGroup(midX, columnGroupKeys);
1278
+ var dropOn = onColumnDrop && (insideGroup || leftX === rightX) && startX < maxColumns || !onColumnOrderChange;
1279
+ var dropX = dropOn ? startX : midX;
1259
1280
  var _anchor3 = columnDrag.anchor,
1260
1281
  _offset2 = columnDrag.offset;
1261
1282
  var shift = _x - _anchor3[0];
1262
1283
  var _getDragScrollOffset3 = getDragScrollOffset(_offset2),
1263
1284
  _scrollOffset2 = _getDragScrollOffset3[0];
1285
+ var insideSelection = dropX >= _minX2 && dropX <= _maxX2 + +!dropOn;
1286
+ var dropSelection = [[dropX, -1], [dropX, -1]];
1287
+ if (dropOn) {
1288
+ var dropOnColumnGroup = new Set([columnGroupKeys(dropX)]);
1289
+ dropSelection = expandSelectionToRowOrColumnGroups(dropSelection, columnGroupKeys, dropOnColumnGroup, 0);
1290
+ }
1264
1291
  onDragOffsetChange === null || onDragOffsetChange === void 0 ? void 0 : onDragOffsetChange([shift + _scrollOffset2, 0]);
1265
- onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(insideSelection || insideGroup ? null : [[_cellX, -1], [_cellX, -1]]);
1292
+ onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(!insideSelection && (dropOn || !insideGroup) ? dropSelection : null, dropOn);
1266
1293
  }
1267
1294
  if (rowDrag) {
1268
- var _cellY = pixelToRow(_y, 0.5);
1269
- var _insideSelection2 = _cellY >= minY && _cellY <= maxY + 1;
1270
- var _insideGroup2 = isBoundaryInsideGroup(_cellY, rowGroupKeys);
1295
+ var _expandSelectionToRow10 = expandSelectionToRowOrColumnGroups(selection, rowGroupKeys, selectedRowGroups, 1),
1296
+ _expandSelectionToRow11 = _expandSelectionToRow10[0],
1297
+ _minY2 = _expandSelectionToRow11[1],
1298
+ _expandSelectionToRow12 = _expandSelectionToRow10[1],
1299
+ _maxY2 = _expandSelectionToRow12[1];
1300
+ var startY = pixelToRow(_y, 0);
1301
+ var midY = pixelToRow(_y, 0.5);
1302
+ var topY = pixelToRow(_y, 0.25);
1303
+ var bottomY = pixelToRow(_y, 0.75) - 1;
1304
+ var _insideGroup2 = isBoundaryInsideGroup(midY, rowGroupKeys);
1305
+ var _dropOn2 = onRowDrop && (_insideGroup2 || topY === bottomY) && startY < maxRows || !onRowOrderChange;
1306
+ var dropY = _dropOn2 ? startY : midY;
1271
1307
  var _anchor4 = rowDrag.anchor,
1272
1308
  _offset3 = rowDrag.offset;
1273
1309
  var _shift = _y - _anchor4[1];
1274
1310
  var _getDragScrollOffset4 = getDragScrollOffset(_offset3),
1275
1311
  _scrollOffset3 = _getDragScrollOffset4[1];
1312
+ var _insideSelection2 = dropY >= _minY2 && dropY <= _maxY2 + +!_dropOn2;
1313
+ var _dropSelection = [[-1, dropY], [-1, dropY]];
1314
+ if (_dropOn2) {
1315
+ var dropOnRowGroup = new Set([rowGroupKeys(dropY)]);
1316
+ _dropSelection = expandSelectionToRowOrColumnGroups(_dropSelection, rowGroupKeys, dropOnRowGroup, 1);
1317
+ }
1276
1318
  onDragOffsetChange === null || onDragOffsetChange === void 0 ? void 0 : onDragOffsetChange([0, _shift + _scrollOffset3]);
1277
- onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(_insideSelection2 || _insideGroup2 ? null : [[-1, _cellY], [-1, _cellY]]);
1319
+ onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(!_insideSelection2 && (_dropOn2 || !_insideGroup2) ? _dropSelection : null, _dropOn2);
1278
1320
  }
1279
1321
  }
1280
- }, [getMousePosition, getMouseOutOfBounds, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys]);
1322
+ }, [getMousePosition, getMouseOutOfBounds, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, maxColumns, maxRows]);
1281
1323
  var onClick = React.useCallback(function (e) {
1282
1324
  var xy = getMousePosition(e);
1283
1325
  if (!xy) return;
@@ -1379,10 +1421,16 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1379
1421
  if (!xy) return;
1380
1422
  var x = xy[0],
1381
1423
  y = xy[1];
1382
- if (x <= getIndentX() || y <= getIndentY()) {
1424
+ if (x <= getIndentX() && y <= getIndentY()) {
1383
1425
  return;
1384
1426
  }
1385
1427
  var cell = pixelToCell(xy);
1428
+ if (!hideRowHeaders && x < getIndentX()) {
1429
+ cell[0] = -1;
1430
+ }
1431
+ if (!hideColumnHeaders && y < getIndentY()) {
1432
+ cell[1] = -1;
1433
+ }
1386
1434
  if (!isPointInsideSelection(selection, cell)) {
1387
1435
  onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([cell, cell]);
1388
1436
  }
@@ -2955,7 +3003,7 @@ var makeIntMap = function makeIntMap(initialSize) {
2955
3003
  };
2956
3004
  };
2957
3005
 
2958
- var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset) {
3006
+ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, dropOn, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset) {
2959
3007
  var canvas = context.canvas;
2960
3008
  var width = canvas.width,
2961
3009
  height = canvas.height;
@@ -3086,7 +3134,8 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3086
3134
  var isInRowGroup = groupKey != null && (selectedRowGroups === null || selectedRowGroups === void 0 ? void 0 : selectedRowGroups.has(groupKey));
3087
3135
  var isSelfSelected = rowSelectionActive && isActive;
3088
3136
  var isGroupSelected = rowSelectionActive && isInRowGroup;
3089
- var style = isSelfSelected ? HEADER_SELECTED_STYLE : isGroupSelected ? HEADER_GROUP_SELECTED_STYLE : isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3137
+ var isDropSelected = dropOn && dropTarget && row >= dropTarget[0][1] && row <= dropTarget[1][1];
3138
+ var style = isSelfSelected ? HEADER_SELECTED_STYLE : isGroupSelected || isDropSelected ? HEADER_GROUP_SELECTED_STYLE : isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3090
3139
  var resolvedStyle = _extends({}, DEFAULT_COLUMN_HEADER_STYLE, style);
3091
3140
  var _top2 = rowToPixel(row);
3092
3141
  var _bottom2 = rowToPixel(row, 1);
@@ -3103,7 +3152,8 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3103
3152
  var _groupKey = columnGroupKeys(column);
3104
3153
  var isInColumnGroup = _groupKey != null && (selectedColumnGroups === null || selectedColumnGroups === void 0 ? void 0 : selectedColumnGroups.has(_groupKey));
3105
3154
  var isSelected = columnSelectionActive && !rowSelectionActive && (_isActive || isInColumnGroup);
3106
- var selectedStyle = isSelected ? HEADER_SELECTED_STYLE : NO_STYLE;
3155
+ var _isDropSelected = dropOn && dropTarget && column >= dropTarget[0][0] && column <= dropTarget[1][0];
3156
+ var selectedStyle = isSelected ? HEADER_SELECTED_STYLE : _isDropSelected ? HEADER_GROUP_SELECTED_STYLE : NO_STYLE;
3107
3157
  var activeStyle = _isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3108
3158
  var _style = _extends({}, DEFAULT_COLUMN_HEADER_STYLE, columnHeaderStyle(column), activeStyle, selectedStyle);
3109
3159
  var _left2 = columnToPixel(column);
@@ -3190,7 +3240,7 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3190
3240
  }
3191
3241
  }
3192
3242
  }
3193
- if (dropTarget) {
3243
+ if (dropTarget && !dropOn) {
3194
3244
  var _resolveSelection = resolveSelection(dropTarget, cellLayout),
3195
3245
  _resolveSelection$ = _resolveSelection[0],
3196
3246
  _left6 = _resolveSelection$[0],
@@ -3524,28 +3574,31 @@ var Sheet = React.forwardRef(function (props, ref) {
3524
3574
  var _useState7 = React.useState(null),
3525
3575
  dropTarget = _useState7[0],
3526
3576
  setDropTarget = _useState7[1];
3527
- var _useState8 = React.useState(NO_CELL),
3528
- editCell = _useState8[0],
3529
- setEditCell = _useState8[1];
3530
- var _useState9 = React.useState(!!props.autoFocus),
3531
- focused = _useState9[0],
3532
- setFocused = _useState9[1];
3533
- var _useState10 = React.useState(selectionProp),
3534
- lastSelectionProp = _useState10[0],
3535
- setLastSelectionProp = _useState10[1];
3577
+ var _useState8 = React.useState(false),
3578
+ dropOn = _useState8[0],
3579
+ setDropOn = _useState8[1];
3580
+ var _useState9 = React.useState(NO_CELL),
3581
+ editCell = _useState9[0],
3582
+ setEditCell = _useState9[1];
3583
+ var _useState10 = React.useState(!!props.autoFocus),
3584
+ focused = _useState10[0],
3585
+ setFocused = _useState10[1];
3586
+ var _useState11 = React.useState(selectionProp),
3587
+ lastSelectionProp = _useState11[0],
3588
+ setLastSelectionProp = _useState11[1];
3536
3589
  if (lastSelectionProp !== selectionProp) {
3537
3590
  setLastSelectionProp(selectionProp);
3538
3591
  setRawSelection(selectionProp);
3539
3592
  }
3540
- var _useState11 = React.useState(''),
3541
- editValue = _useState11[0],
3542
- setEditValue = _useState11[1];
3543
- var _useState12 = React.useState(null),
3544
- sourceValue = _useState12[0],
3545
- setSourceValue = _useState12[1];
3546
- var _useState13 = React.useState(false),
3547
- arrowKeyCommitMode = _useState13[0],
3548
- setArrowKeyCommitMode = _useState13[1];
3593
+ var _useState12 = React.useState(''),
3594
+ editValue = _useState12[0],
3595
+ setEditValue = _useState12[1];
3596
+ var _useState13 = React.useState(null),
3597
+ sourceValue = _useState13[0],
3598
+ setSourceValue = _useState13[1];
3599
+ var _useState14 = React.useState(false),
3600
+ arrowKeyCommitMode = _useState14[0],
3601
+ setArrowKeyCommitMode = _useState14[1];
3549
3602
  var _useResizeObserver = useResizeObserver({
3550
3603
  ref: overlayRef
3551
3604
  }),
@@ -3671,6 +3724,13 @@ var Sheet = React.forwardRef(function (props, ref) {
3671
3724
  setMaxScroll(maxScroll);
3672
3725
  });
3673
3726
  };
3727
+ var changeDropTarget = function changeDropTarget(newSelection, dropOn) {
3728
+ if (dropOn === void 0) {
3729
+ dropOn = false;
3730
+ }
3731
+ setDropTarget(newSelection);
3732
+ setDropOn(dropOn);
3733
+ };
3674
3734
  var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
3675
3735
  if (scrollTo === void 0) {
3676
3736
  scrollTo = true;
@@ -3687,14 +3747,14 @@ var Sheet = React.forwardRef(function (props, ref) {
3687
3747
  scrollToSelection(newSelection, toHead);
3688
3748
  }
3689
3749
  if (props.onSelectionChanged) {
3690
- var _normalizeSelection = normalizeSelection(validateSelection(newSelection)),
3691
- _normalizeSelection$ = _normalizeSelection[0],
3692
- minX = _normalizeSelection$[0],
3693
- minY = _normalizeSelection$[1],
3694
- _normalizeSelection$2 = _normalizeSelection[1],
3695
- maxX = _normalizeSelection$2[0],
3696
- maxY = _normalizeSelection$2[1];
3697
- props.onSelectionChanged(minX, minY, maxX, maxY);
3750
+ var _validateSelection = validateSelection(newSelection),
3751
+ _validateSelection$ = _validateSelection[0],
3752
+ anchorX = _validateSelection$[0],
3753
+ anchorY = _validateSelection$[1],
3754
+ _validateSelection$2 = _validateSelection[1],
3755
+ headX = _validateSelection$2[0],
3756
+ headY = _validateSelection$2[1];
3757
+ props.onSelectionChanged(anchorX, anchorY, headX, headY);
3698
3758
  }
3699
3759
  };
3700
3760
  var cancelEditingCell = function cancelEditingCell() {
@@ -3768,7 +3828,7 @@ var Sheet = React.forwardRef(function (props, ref) {
3768
3828
  var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll, props.onScrollAction);
3769
3829
  var getAutoSizeWidth = useAutoSizeColumn(visibleCells.rows, displayData, cellLayout, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth, freezeColumns);
3770
3830
  var getAutoSizeHeight = useAutoSizeRow(visibleCells.columns, displayData, cellLayout, cellStyle, columnHeaders, columnHeaderStyle, cellWidth, canvasHeight, freezeRows);
3771
- var _useMouse = useMouse(overlayRef, dataOffset, hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, maxColumns, maxRows, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, getAutoSizeHeight, startEditingCell, commitEditingCell, setKnobArea, setDragIndices, setDragOffset, setDropTarget, changeSelection, setFocused, props.cacheLayout ? columnLayout.clearAfter : undefined, props.cacheLayout ? rowLayout.clearAfter : undefined, props.onChange, props.onColumnOrderChange, props.onRowOrderChange, props.onCellWidthChange, props.onCellHeightChange, props.onRightClick, props.dontCommitEditOnSelectionChange, props.dontChangeSelectionOnOrderChange),
3831
+ var _useMouse = useMouse(overlayRef, dataOffset, hitmapRef, selection, knobArea, editMode, editData, sourceData, cellReadOnly, maxColumns, maxRows, canSizeColumn, canSizeRow, canOrderColumn, canOrderRow, cellLayout, visibleCells, sheetStyle, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, getAutoSizeWidth, getAutoSizeHeight, startEditingCell, commitEditingCell, setKnobArea, setDragIndices, setDragOffset, changeDropTarget, changeSelection, setFocused, props.cacheLayout ? columnLayout.clearAfter : undefined, props.cacheLayout ? rowLayout.clearAfter : undefined, props.onChange, props.onColumnOrderChange, props.onRowOrderChange, props.onColumnDrop, props.onRowDrop, props.onCellWidthChange, props.onCellHeightChange, props.onRightClick, props.dontCommitEditOnSelectionChange, props.dontChangeSelectionOnOrderChange),
3772
3832
  mouseHandlers = _useMouse.mouseHandlers,
3773
3833
  knobPosition = _useMouse.knobPosition;
3774
3834
  var _useKeyboard = useKeyboard(arrowKeyCommitMode, overlayRef, cellReadOnly, displayData, editCell, editMode, focused, rawSelection, selection, startEditingCell, commitEditingCell, cancelEditingCell, changeSelection, setFocused, onClipboardCopy, props.onChange),
@@ -3787,15 +3847,15 @@ var Sheet = React.forwardRef(function (props, ref) {
3787
3847
  return;
3788
3848
  }
3789
3849
  var animationFrameId = window.requestAnimationFrame(function () {
3790
- hitmapRef.current = renderSheet(context, imageRenderer, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset);
3850
+ hitmapRef.current = renderSheet(context, imageRenderer, cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragIndices, dragOffset, dropTarget, dropOn, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset);
3791
3851
  });
3792
3852
  return function () {
3793
3853
  window.cancelAnimationFrame(animationFrameId);
3794
3854
  };
3795
3855
  }, [cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset]);
3796
- var _useState14 = React.useState(''),
3797
- lastEditKey = _useState14[0],
3798
- setLastEditKey = _useState14[1];
3856
+ var _useState15 = React.useState(''),
3857
+ lastEditKey = _useState15[0],
3858
+ setLastEditKey = _useState15[1];
3799
3859
  var editTextPosition = ORIGIN;
3800
3860
  var editTextWidth = 0;
3801
3861
  var editTextHeight = 0;