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.
@@ -654,7 +654,7 @@ var findInDisplayData = function findInDisplayData(displayData, start, direction
654
654
  return maxXY(cell, [0, 0]);
655
655
  };
656
656
 
657
- 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) {
657
+ 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) {
658
658
  var _useState = useState(null),
659
659
  columnResize = _useState[0],
660
660
  setColumnResize = _useState[1];
@@ -803,7 +803,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
803
803
  return i;
804
804
  });
805
805
  if (!hideColumnHeaders && y < getIndentY()) {
806
- if (onColumnOrderChange) {
806
+ if (onColumnOrderChange || onColumnDrop) {
807
807
  var start = columnToPixel(minX) + SIZES.resizeZone;
808
808
  var end = columnToPixel(maxX, 1) - SIZES.resizeZone;
809
809
  if (isInRange(x, start, end) || selectedColumnGroups) {
@@ -867,7 +867,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
867
867
  }
868
868
  }
869
869
  if (!hideRowHeaders && x < getIndentX()) {
870
- if (onRowOrderChange) {
870
+ if (onRowOrderChange || onRowDrop) {
871
871
  var _start2 = rowToPixel(minY) + SIZES.resizeZone;
872
872
  var _end2 = rowToPixel(maxY, 1) - SIZES.resizeZone;
873
873
  if (isInRange(y, _start2, _end2) || selectedRowGroups) {
@@ -1006,33 +1006,45 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1006
1006
  _normalizeSelection2$2 = _normalizeSelection2[1],
1007
1007
  maxX = _normalizeSelection2$2[0],
1008
1008
  maxY = _normalizeSelection2$2[1];
1009
- var cellX = pixelToColumn(x, 0.5);
1010
- var cellY = pixelToRow(y, 0.5);
1011
1009
  if (columnDrag) {
1012
1010
  var indices = columnDrag.indices;
1013
- var insideSelection = cellX >= minX && cellX <= maxX + 1;
1014
- var insideGroup = selectedColumnGroups === null || selectedColumnGroups === void 0 ? void 0 : selectedColumnGroups.has(columnGroupKeys(x));
1015
- if (!insideSelection && !insideGroup) {
1011
+ var startX = pixelToColumn(x, 0);
1012
+ var midX = pixelToColumn(x, 0.5);
1013
+ var leftX = pixelToColumn(x, 0.25);
1014
+ var rightX = pixelToColumn(x, 0.75) - 1;
1015
+ var insideGroup = isBoundaryInsideGroup(midX, columnGroupKeys);
1016
+ var dropOn = onColumnDrop && (insideGroup || leftX === rightX) || !onColumnOrderChange;
1017
+ var dropX = dropOn ? startX : midX;
1018
+ var insideSelection = dropX >= minX && dropX <= maxX + +!dropOn;
1019
+ if (!insideSelection && (dropOn || !insideGroup)) {
1020
+ var _ref;
1016
1021
  var preceding = indices.filter(function (i) {
1017
- return i < cellX;
1022
+ return i < dropX;
1018
1023
  });
1019
- var order = cellX - preceding.length;
1020
- dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[order, minY], [order + indices.length - 1, maxY]]));
1021
- onColumnOrderChange === null || onColumnOrderChange === void 0 ? void 0 : onColumnOrderChange(indices, order);
1024
+ var order = dropX - preceding.length;
1025
+ dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[order, minY], [order + (dropOn ? 0 : indices.length - 1), maxY]]));
1026
+ (_ref = dropOn ? onColumnDrop : onColumnOrderChange) === null || _ref === void 0 ? void 0 : _ref(indices, order);
1022
1027
  onInvalidateColumn === null || onInvalidateColumn === void 0 ? void 0 : onInvalidateColumn(Math.min(minX, order));
1023
1028
  }
1024
1029
  }
1025
1030
  if (rowDrag) {
1026
1031
  var _indices4 = rowDrag.indices;
1027
- var _insideSelection = cellY >= minY && cellY <= maxY + 1;
1028
- var _insideGroup = selectedRowGroups === null || selectedRowGroups === void 0 ? void 0 : selectedRowGroups.has(rowGroupKeys(y));
1029
- if (!_insideSelection && !_insideGroup) {
1032
+ var startY = pixelToRow(y, 0);
1033
+ var midY = pixelToRow(y, 0.5);
1034
+ var topY = pixelToRow(y, 0.25);
1035
+ var bottomY = pixelToRow(y, 0.75) - 1;
1036
+ var _insideGroup = isBoundaryInsideGroup(midY, rowGroupKeys);
1037
+ var _dropOn = onRowDrop && (_insideGroup || topY === bottomY) || !onRowOrderChange;
1038
+ var dropY = _dropOn ? startY : midY;
1039
+ var _insideSelection = dropY >= minY && dropY <= maxY + +!_dropOn;
1040
+ if (!_insideSelection && (_dropOn || !_insideGroup)) {
1041
+ var _ref2;
1030
1042
  var _preceding = _indices4.filter(function (i) {
1031
- return i < cellY;
1043
+ return i < dropY;
1032
1044
  });
1033
- var _order = cellY - _preceding.length;
1034
- dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[minX, _order], [maxX, _order + _indices4.length - 1]]));
1035
- onRowOrderChange === null || onRowOrderChange === void 0 ? void 0 : onRowOrderChange(_indices4, _order);
1045
+ var _order = dropY - _preceding.length;
1046
+ dontChangeSelectionOnOrderChange || (onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([[minX, _order], [maxX, _order + (_dropOn ? 0 : _indices4.length - 1)]]));
1047
+ (_ref2 = _dropOn ? onRowDrop : onRowOrderChange) === null || _ref2 === void 0 ? void 0 : _ref2(_indices4, _order);
1036
1048
  onInvalidateRow === null || onInvalidateRow === void 0 ? void 0 : onInvalidateRow(Math.min(minY, _order));
1037
1049
  }
1038
1050
  }
@@ -1108,7 +1120,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1108
1120
  };
1109
1121
  if (!isDragging) {
1110
1122
  if (!hideColumnHeaders && y < getIndentY()) {
1111
- if (onColumnOrderChange) {
1123
+ if (onColumnOrderChange || onColumnDrop) {
1112
1124
  var start = columnToPixel(minX) + SIZES.resizeZone;
1113
1125
  var end = columnToPixel(maxX, 1) - SIZES.resizeZone;
1114
1126
  if (isInRange(x, start, end) || selectedColumnGroups) {
@@ -1135,7 +1147,7 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1135
1147
  }
1136
1148
  }
1137
1149
  if (!hideRowHeaders && x < getIndentX()) {
1138
- if (onRowOrderChange) {
1150
+ if (onRowOrderChange || onRowDrop) {
1139
1151
  var _start5 = rowToPixel(minY) + SIZES.resizeZone;
1140
1152
  var _end5 = rowToPixel(maxY, 1) - SIZES.resizeZone;
1141
1153
  if (isInRange(y, _start5, _end5) || selectedRowGroups) {
@@ -1250,31 +1262,61 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1250
1262
  var _x = xy[0],
1251
1263
  _y = xy[1];
1252
1264
  if (columnDrag) {
1253
- var _cellX = pixelToColumn(_x, 0.5);
1254
- var insideSelection = _cellX >= minX && _cellX <= maxX + 1;
1255
- var insideGroup = isBoundaryInsideGroup(_cellX, columnGroupKeys);
1265
+ var _expandSelectionToRow7 = expandSelectionToRowOrColumnGroups(selection, columnGroupKeys, selectedColumnGroups, 0),
1266
+ _expandSelectionToRow8 = _expandSelectionToRow7[0],
1267
+ _minX2 = _expandSelectionToRow8[0],
1268
+ _expandSelectionToRow9 = _expandSelectionToRow7[1],
1269
+ _maxX2 = _expandSelectionToRow9[0];
1270
+ var startX = pixelToColumn(_x, 0);
1271
+ var midX = pixelToColumn(_x, 0.5);
1272
+ var leftX = pixelToColumn(_x, 0.25);
1273
+ var rightX = pixelToColumn(_x, 0.75) - 1;
1274
+ var insideGroup = isBoundaryInsideGroup(midX, columnGroupKeys);
1275
+ var dropOn = onColumnDrop && (insideGroup || leftX === rightX) && startX < maxColumns || !onColumnOrderChange;
1276
+ var dropX = dropOn ? startX : midX;
1256
1277
  var _anchor3 = columnDrag.anchor,
1257
1278
  _offset2 = columnDrag.offset;
1258
1279
  var shift = _x - _anchor3[0];
1259
1280
  var _getDragScrollOffset3 = getDragScrollOffset(_offset2),
1260
1281
  _scrollOffset2 = _getDragScrollOffset3[0];
1282
+ var insideSelection = dropX >= _minX2 && dropX <= _maxX2 + +!dropOn;
1283
+ var dropSelection = [[dropX, -1], [dropX, -1]];
1284
+ if (dropOn) {
1285
+ var dropOnColumnGroup = new Set([columnGroupKeys(dropX)]);
1286
+ dropSelection = expandSelectionToRowOrColumnGroups(dropSelection, columnGroupKeys, dropOnColumnGroup, 0);
1287
+ }
1261
1288
  onDragOffsetChange === null || onDragOffsetChange === void 0 ? void 0 : onDragOffsetChange([shift + _scrollOffset2, 0]);
1262
- onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(insideSelection || insideGroup ? null : [[_cellX, -1], [_cellX, -1]]);
1289
+ onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(!insideSelection && (dropOn || !insideGroup) ? dropSelection : null, dropOn);
1263
1290
  }
1264
1291
  if (rowDrag) {
1265
- var _cellY = pixelToRow(_y, 0.5);
1266
- var _insideSelection2 = _cellY >= minY && _cellY <= maxY + 1;
1267
- var _insideGroup2 = isBoundaryInsideGroup(_cellY, rowGroupKeys);
1292
+ var _expandSelectionToRow10 = expandSelectionToRowOrColumnGroups(selection, rowGroupKeys, selectedRowGroups, 1),
1293
+ _expandSelectionToRow11 = _expandSelectionToRow10[0],
1294
+ _minY2 = _expandSelectionToRow11[1],
1295
+ _expandSelectionToRow12 = _expandSelectionToRow10[1],
1296
+ _maxY2 = _expandSelectionToRow12[1];
1297
+ var startY = pixelToRow(_y, 0);
1298
+ var midY = pixelToRow(_y, 0.5);
1299
+ var topY = pixelToRow(_y, 0.25);
1300
+ var bottomY = pixelToRow(_y, 0.75) - 1;
1301
+ var _insideGroup2 = isBoundaryInsideGroup(midY, rowGroupKeys);
1302
+ var _dropOn2 = onRowDrop && (_insideGroup2 || topY === bottomY) && startY < maxRows || !onRowOrderChange;
1303
+ var dropY = _dropOn2 ? startY : midY;
1268
1304
  var _anchor4 = rowDrag.anchor,
1269
1305
  _offset3 = rowDrag.offset;
1270
1306
  var _shift = _y - _anchor4[1];
1271
1307
  var _getDragScrollOffset4 = getDragScrollOffset(_offset3),
1272
1308
  _scrollOffset3 = _getDragScrollOffset4[1];
1309
+ var _insideSelection2 = dropY >= _minY2 && dropY <= _maxY2 + +!_dropOn2;
1310
+ var _dropSelection = [[-1, dropY], [-1, dropY]];
1311
+ if (_dropOn2) {
1312
+ var dropOnRowGroup = new Set([rowGroupKeys(dropY)]);
1313
+ _dropSelection = expandSelectionToRowOrColumnGroups(_dropSelection, rowGroupKeys, dropOnRowGroup, 1);
1314
+ }
1273
1315
  onDragOffsetChange === null || onDragOffsetChange === void 0 ? void 0 : onDragOffsetChange([0, _shift + _scrollOffset3]);
1274
- onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(_insideSelection2 || _insideGroup2 ? null : [[-1, _cellY], [-1, _cellY]]);
1316
+ onDropTargetChange === null || onDropTargetChange === void 0 ? void 0 : onDropTargetChange(!_insideSelection2 && (_dropOn2 || !_insideGroup2) ? _dropSelection : null, _dropOn2);
1275
1317
  }
1276
1318
  }
1277
- }, [getMousePosition, getMouseOutOfBounds, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys]);
1319
+ }, [getMousePosition, getMouseOutOfBounds, getMouseHit, onCellWidthChange, onCellHeightChange, onDragIndicesChange, onDragOffsetChange, onDropTargetChange, onSelectionChange, onKnobAreaChange, onInvalidateRow, onInvalidateColumn, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, maxColumns, maxRows]);
1278
1320
  var onClick = useCallback(function (e) {
1279
1321
  var xy = getMousePosition(e);
1280
1322
  if (!xy) return;
@@ -1376,10 +1418,16 @@ var useMouse = function useMouse(elementRef, dataOffset, hitmapRef, selection, k
1376
1418
  if (!xy) return;
1377
1419
  var x = xy[0],
1378
1420
  y = xy[1];
1379
- if (x <= getIndentX() || y <= getIndentY()) {
1421
+ if (x <= getIndentX() && y <= getIndentY()) {
1380
1422
  return;
1381
1423
  }
1382
1424
  var cell = pixelToCell(xy);
1425
+ if (!hideRowHeaders && x < getIndentX()) {
1426
+ cell[0] = -1;
1427
+ }
1428
+ if (!hideColumnHeaders && y < getIndentY()) {
1429
+ cell[1] = -1;
1430
+ }
1383
1431
  if (!isPointInsideSelection(selection, cell)) {
1384
1432
  onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange([cell, cell]);
1385
1433
  }
@@ -2952,7 +3000,7 @@ var makeIntMap = function makeIntMap(initialSize) {
2952
3000
  };
2953
3001
  };
2954
3002
 
2955
- 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) {
3003
+ 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) {
2956
3004
  var canvas = context.canvas;
2957
3005
  var width = canvas.width,
2958
3006
  height = canvas.height;
@@ -3083,7 +3131,8 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3083
3131
  var isInRowGroup = groupKey != null && (selectedRowGroups === null || selectedRowGroups === void 0 ? void 0 : selectedRowGroups.has(groupKey));
3084
3132
  var isSelfSelected = rowSelectionActive && isActive;
3085
3133
  var isGroupSelected = rowSelectionActive && isInRowGroup;
3086
- var style = isSelfSelected ? HEADER_SELECTED_STYLE : isGroupSelected ? HEADER_GROUP_SELECTED_STYLE : isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3134
+ var isDropSelected = dropOn && dropTarget && row >= dropTarget[0][1] && row <= dropTarget[1][1];
3135
+ var style = isSelfSelected ? HEADER_SELECTED_STYLE : isGroupSelected || isDropSelected ? HEADER_GROUP_SELECTED_STYLE : isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3087
3136
  var resolvedStyle = _extends({}, DEFAULT_COLUMN_HEADER_STYLE, style);
3088
3137
  var _top2 = rowToPixel(row);
3089
3138
  var _bottom2 = rowToPixel(row, 1);
@@ -3100,7 +3149,8 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3100
3149
  var _groupKey = columnGroupKeys(column);
3101
3150
  var isInColumnGroup = _groupKey != null && (selectedColumnGroups === null || selectedColumnGroups === void 0 ? void 0 : selectedColumnGroups.has(_groupKey));
3102
3151
  var isSelected = columnSelectionActive && !rowSelectionActive && (_isActive || isInColumnGroup);
3103
- var selectedStyle = isSelected ? HEADER_SELECTED_STYLE : NO_STYLE;
3152
+ var _isDropSelected = dropOn && dropTarget && column >= dropTarget[0][0] && column <= dropTarget[1][0];
3153
+ var selectedStyle = isSelected ? HEADER_SELECTED_STYLE : _isDropSelected ? HEADER_GROUP_SELECTED_STYLE : NO_STYLE;
3104
3154
  var activeStyle = _isActive ? HEADER_ACTIVE_STYLE : NO_STYLE;
3105
3155
  var _style = _extends({}, DEFAULT_COLUMN_HEADER_STYLE, columnHeaderStyle(column), activeStyle, selectedStyle);
3106
3156
  var _left2 = columnToPixel(column);
@@ -3187,7 +3237,7 @@ var renderSheet = function renderSheet(context, imageRenderer, cellLayout, visib
3187
3237
  }
3188
3238
  }
3189
3239
  }
3190
- if (dropTarget) {
3240
+ if (dropTarget && !dropOn) {
3191
3241
  var _resolveSelection = resolveSelection(dropTarget, cellLayout),
3192
3242
  _resolveSelection$ = _resolveSelection[0],
3193
3243
  _left6 = _resolveSelection$[0],
@@ -3521,28 +3571,31 @@ var Sheet = forwardRef(function (props, ref) {
3521
3571
  var _useState7 = useState(null),
3522
3572
  dropTarget = _useState7[0],
3523
3573
  setDropTarget = _useState7[1];
3524
- var _useState8 = useState(NO_CELL),
3525
- editCell = _useState8[0],
3526
- setEditCell = _useState8[1];
3527
- var _useState9 = useState(!!props.autoFocus),
3528
- focused = _useState9[0],
3529
- setFocused = _useState9[1];
3530
- var _useState10 = useState(selectionProp),
3531
- lastSelectionProp = _useState10[0],
3532
- setLastSelectionProp = _useState10[1];
3574
+ var _useState8 = useState(false),
3575
+ dropOn = _useState8[0],
3576
+ setDropOn = _useState8[1];
3577
+ var _useState9 = useState(NO_CELL),
3578
+ editCell = _useState9[0],
3579
+ setEditCell = _useState9[1];
3580
+ var _useState10 = useState(!!props.autoFocus),
3581
+ focused = _useState10[0],
3582
+ setFocused = _useState10[1];
3583
+ var _useState11 = useState(selectionProp),
3584
+ lastSelectionProp = _useState11[0],
3585
+ setLastSelectionProp = _useState11[1];
3533
3586
  if (lastSelectionProp !== selectionProp) {
3534
3587
  setLastSelectionProp(selectionProp);
3535
3588
  setRawSelection(selectionProp);
3536
3589
  }
3537
- var _useState11 = useState(''),
3538
- editValue = _useState11[0],
3539
- setEditValue = _useState11[1];
3540
- var _useState12 = useState(null),
3541
- sourceValue = _useState12[0],
3542
- setSourceValue = _useState12[1];
3543
- var _useState13 = useState(false),
3544
- arrowKeyCommitMode = _useState13[0],
3545
- setArrowKeyCommitMode = _useState13[1];
3590
+ var _useState12 = useState(''),
3591
+ editValue = _useState12[0],
3592
+ setEditValue = _useState12[1];
3593
+ var _useState13 = useState(null),
3594
+ sourceValue = _useState13[0],
3595
+ setSourceValue = _useState13[1];
3596
+ var _useState14 = useState(false),
3597
+ arrowKeyCommitMode = _useState14[0],
3598
+ setArrowKeyCommitMode = _useState14[1];
3546
3599
  var _useResizeObserver = useResizeObserver({
3547
3600
  ref: overlayRef
3548
3601
  }),
@@ -3668,6 +3721,13 @@ var Sheet = forwardRef(function (props, ref) {
3668
3721
  setMaxScroll(maxScroll);
3669
3722
  });
3670
3723
  };
3724
+ var changeDropTarget = function changeDropTarget(newSelection, dropOn) {
3725
+ if (dropOn === void 0) {
3726
+ dropOn = false;
3727
+ }
3728
+ setDropTarget(newSelection);
3729
+ setDropOn(dropOn);
3730
+ };
3671
3731
  var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
3672
3732
  if (scrollTo === void 0) {
3673
3733
  scrollTo = true;
@@ -3684,14 +3744,14 @@ var Sheet = forwardRef(function (props, ref) {
3684
3744
  scrollToSelection(newSelection, toHead);
3685
3745
  }
3686
3746
  if (props.onSelectionChanged) {
3687
- var _normalizeSelection = normalizeSelection(validateSelection(newSelection)),
3688
- _normalizeSelection$ = _normalizeSelection[0],
3689
- minX = _normalizeSelection$[0],
3690
- minY = _normalizeSelection$[1],
3691
- _normalizeSelection$2 = _normalizeSelection[1],
3692
- maxX = _normalizeSelection$2[0],
3693
- maxY = _normalizeSelection$2[1];
3694
- props.onSelectionChanged(minX, minY, maxX, maxY);
3747
+ var _validateSelection = validateSelection(newSelection),
3748
+ _validateSelection$ = _validateSelection[0],
3749
+ anchorX = _validateSelection$[0],
3750
+ anchorY = _validateSelection$[1],
3751
+ _validateSelection$2 = _validateSelection[1],
3752
+ headX = _validateSelection$2[0],
3753
+ headY = _validateSelection$2[1];
3754
+ props.onSelectionChanged(anchorX, anchorY, headX, headY);
3695
3755
  }
3696
3756
  };
3697
3757
  var cancelEditingCell = function cancelEditingCell() {
@@ -3765,7 +3825,7 @@ var Sheet = forwardRef(function (props, ref) {
3765
3825
  var onScroll = useScroll(dataOffset, maxScroll, cellLayout, setDataOffset, setMaxScroll, props.onScrollAction);
3766
3826
  var getAutoSizeWidth = useAutoSizeColumn(visibleCells.rows, displayData, cellLayout, cellStyle, columnHeaders, columnHeaderStyle, canvasWidth, freezeColumns);
3767
3827
  var getAutoSizeHeight = useAutoSizeRow(visibleCells.columns, displayData, cellLayout, cellStyle, columnHeaders, columnHeaderStyle, cellWidth, canvasHeight, freezeRows);
3768
- 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),
3828
+ 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),
3769
3829
  mouseHandlers = _useMouse.mouseHandlers,
3770
3830
  knobPosition = _useMouse.knobPosition;
3771
3831
  var _useKeyboard = useKeyboard(arrowKeyCommitMode, overlayRef, cellReadOnly, displayData, editCell, editMode, focused, rawSelection, selection, startEditingCell, commitEditingCell, cancelEditingCell, changeSelection, setFocused, onClipboardCopy, props.onChange),
@@ -3784,15 +3844,15 @@ var Sheet = forwardRef(function (props, ref) {
3784
3844
  return;
3785
3845
  }
3786
3846
  var animationFrameId = window.requestAnimationFrame(function () {
3787
- 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);
3847
+ 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);
3788
3848
  });
3789
3849
  return function () {
3790
3850
  window.cancelAnimationFrame(animationFrameId);
3791
3851
  };
3792
3852
  }, [cellLayout, visibleCells, sheetStyle, cellStyle, selection, secondarySelections, isFocused, knobPosition, knobArea, dragOffset, dropTarget, columnHeaders, columnHeaderStyle, displayData, columnGroupKeys, rowGroupKeys, selectedColumnGroups, selectedRowGroups, dataOffset]);
3793
- var _useState14 = useState(''),
3794
- lastEditKey = _useState14[0],
3795
- setLastEditKey = _useState14[1];
3853
+ var _useState15 = useState(''),
3854
+ lastEditKey = _useState15[0],
3855
+ setLastEditKey = _useState15[1];
3796
3856
  var editTextPosition = ORIGIN;
3797
3857
  var editTextWidth = 0;
3798
3858
  var editTextHeight = 0;