sheet-happens 0.0.31 → 0.0.33
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 +80 -38
- package/dist/index.js.map +1 -1
- package/dist/index.modern.js +80 -38
- package/dist/index.modern.js.map +1 -1
- package/dist/mouse.d.ts +1 -1
- package/dist/sheet.d.ts +8 -5
- package/package.json +1 -1
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
|
|
748
|
+
var scrollTo = true;
|
|
752
749
|
|
|
753
750
|
if (!hideRowHeaders && x < getIndentX()) {
|
|
754
|
-
|
|
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
|
-
|
|
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],
|
|
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,
|
|
@@ -785,7 +782,7 @@ var useMouse = function useMouse(hitmapRef, selection, knobArea, editMode, editD
|
|
|
785
782
|
if (knobArea && draggingKnob) {
|
|
786
783
|
var changes = parseKnobOperation(knobArea, selection, sourceData, editData);
|
|
787
784
|
onChange === null || onChange === void 0 ? void 0 : onChange(changes);
|
|
788
|
-
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(knobArea);
|
|
785
|
+
onSelectionChange === null || onSelectionChange === void 0 ? void 0 : onSelectionChange(knobArea, true, true);
|
|
789
786
|
onKnobAreaChange === null || onKnobAreaChange === void 0 ? void 0 : onKnobAreaChange(null);
|
|
790
787
|
}
|
|
791
788
|
|
|
@@ -1287,8 +1284,14 @@ var useScroll = function useScroll(offset, maxScroll, cellLayout, onOffsetChange
|
|
|
1287
1284
|
return;
|
|
1288
1285
|
}
|
|
1289
1286
|
|
|
1290
|
-
var
|
|
1291
|
-
|
|
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
|
|
1323
|
-
frozenX =
|
|
1324
|
-
frozenY =
|
|
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
|
};
|
|
@@ -1374,7 +1382,13 @@ var useClipboardCopy = function useClipboardCopy(textAreaRef, selection, editMod
|
|
|
1374
1382
|
if (!textArea) return;
|
|
1375
1383
|
if (editMode) return;
|
|
1376
1384
|
if (isEmptySelection(selection)) return;
|
|
1377
|
-
|
|
1385
|
+
var v = formatSelectionAsTSV(selection, editData);
|
|
1386
|
+
|
|
1387
|
+
if (v.match(/^[\t\n]*$/)) {
|
|
1388
|
+
v = ' ' + v;
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
textArea.value = v;
|
|
1378
1392
|
}, [selection, editMode, editData, textAreaRef]);
|
|
1379
1393
|
React.useLayoutEffect(function () {
|
|
1380
1394
|
var textArea = textAreaRef.current;
|
|
@@ -2486,18 +2500,20 @@ var resolveFrozenSelection = function resolveFrozenSelection(selection, cellLayo
|
|
|
2486
2500
|
|
|
2487
2501
|
if (isInRangeLeft(minX, freezeX, offsetX + freezeX)) {
|
|
2488
2502
|
left = -1e5;
|
|
2503
|
+
var lastInvisibleX = offsetX + freezeX - 1;
|
|
2489
2504
|
|
|
2490
|
-
if (
|
|
2491
|
-
right = indentX;
|
|
2505
|
+
if (maxX <= lastInvisibleX) {
|
|
2506
|
+
if (maxX === lastInvisibleX) right = indentX;else right = -1e5;
|
|
2492
2507
|
hideKnob = true;
|
|
2493
2508
|
}
|
|
2494
2509
|
}
|
|
2495
2510
|
|
|
2496
2511
|
if (isInRangeLeft(minY, freezeY, offsetY + freezeY)) {
|
|
2497
2512
|
top = -1e5;
|
|
2513
|
+
var lastInvisibleY = offsetY + freezeY - 1;
|
|
2498
2514
|
|
|
2499
|
-
if (
|
|
2500
|
-
bottom = indentY;
|
|
2515
|
+
if (maxY <= lastInvisibleY) {
|
|
2516
|
+
if (maxY === lastInvisibleY) bottom = indentY;else bottom = -1e5;
|
|
2501
2517
|
hideKnob = true;
|
|
2502
2518
|
}
|
|
2503
2519
|
}
|
|
@@ -2695,9 +2711,6 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
2695
2711
|
var cellLayout = React.useMemo(function () {
|
|
2696
2712
|
return makeCellLayout([freezeColumns, freezeRows], [rowHeaderWidth, columnHeaderHeight], dataOffset, columnLayout, rowLayout);
|
|
2697
2713
|
}, [freezeColumns, freezeRows, rowHeaderWidth, columnHeaderHeight, dataOffset, columnLayout, rowLayout]);
|
|
2698
|
-
React.useImperativeHandle(ref, function () {
|
|
2699
|
-
return cellLayout;
|
|
2700
|
-
}, [cellLayout]);
|
|
2701
2714
|
var getVisibleCells = cellLayout.getVisibleCells,
|
|
2702
2715
|
cellToPixel = cellLayout.cellToPixel,
|
|
2703
2716
|
getVersion = cellLayout.getVersion;
|
|
@@ -2710,9 +2723,13 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
2710
2723
|
}
|
|
2711
2724
|
}, [visibleCells, props.onScrollChange]);
|
|
2712
2725
|
|
|
2713
|
-
var changeSelection = function changeSelection(newSelection,
|
|
2714
|
-
if (
|
|
2715
|
-
|
|
2726
|
+
var changeSelection = function changeSelection(newSelection, scrollTo, toHead) {
|
|
2727
|
+
if (scrollTo === void 0) {
|
|
2728
|
+
scrollTo = true;
|
|
2729
|
+
}
|
|
2730
|
+
|
|
2731
|
+
if (toHead === void 0) {
|
|
2732
|
+
toHead = false;
|
|
2716
2733
|
}
|
|
2717
2734
|
|
|
2718
2735
|
if (!isSameSelection(selection, newSelection)) {
|
|
@@ -2722,9 +2739,10 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
2722
2739
|
var overlay = overlayRef.current;
|
|
2723
2740
|
if (!overlay) return;
|
|
2724
2741
|
|
|
2725
|
-
if (
|
|
2726
|
-
var anchor = newSelection[0]
|
|
2727
|
-
|
|
2742
|
+
if (scrollTo) {
|
|
2743
|
+
var anchor = newSelection[0],
|
|
2744
|
+
head = newSelection[1];
|
|
2745
|
+
scrollToCell(overlay, toHead ? head : anchor, [canvasWidth, canvasHeight], [freezeColumns, freezeRows], dataOffset, maxScroll, cellLayout, function (dataOffset, maxScroll) {
|
|
2728
2746
|
setDataOffset(dataOffset);
|
|
2729
2747
|
setMaxScroll(maxScroll);
|
|
2730
2748
|
});
|
|
@@ -2918,7 +2936,7 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
2918
2936
|
anchor = head;
|
|
2919
2937
|
}
|
|
2920
2938
|
|
|
2921
|
-
changeSelection([anchor, head]);
|
|
2939
|
+
changeSelection([anchor, head], true, true);
|
|
2922
2940
|
return;
|
|
2923
2941
|
}
|
|
2924
2942
|
|
|
@@ -2997,16 +3015,31 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
2997
3015
|
canvasStyles.width = 'calc(100%)';
|
|
2998
3016
|
}
|
|
2999
3017
|
|
|
3000
|
-
var
|
|
3001
|
-
var _props$
|
|
3018
|
+
var renderedInside = React.useMemo(function () {
|
|
3019
|
+
var _props$renderInside;
|
|
3002
3020
|
|
|
3003
|
-
return (_props$
|
|
3021
|
+
return (_props$renderInside = props.renderInside) === null || _props$renderInside === void 0 ? void 0 : _props$renderInside.call(props, {
|
|
3004
3022
|
visibleCells: visibleCells,
|
|
3005
3023
|
cellLayout: cellLayout,
|
|
3006
3024
|
selection: selection,
|
|
3007
3025
|
editMode: editMode
|
|
3008
3026
|
});
|
|
3009
|
-
}, [props.
|
|
3027
|
+
}, [props.renderInside, visibleCells, cellLayout, selection, editMode]);
|
|
3028
|
+
var renderedOutside = React.useMemo(function () {
|
|
3029
|
+
var _props$renderOutside;
|
|
3030
|
+
|
|
3031
|
+
return (_props$renderOutside = props.renderOutside) === null || _props$renderOutside === void 0 ? void 0 : _props$renderOutside.call(props, {
|
|
3032
|
+
visibleCells: visibleCells,
|
|
3033
|
+
cellLayout: cellLayout,
|
|
3034
|
+
selection: selection,
|
|
3035
|
+
editMode: editMode
|
|
3036
|
+
});
|
|
3037
|
+
}, [props.renderOutside, visibleCells, cellLayout, selection, editMode]);
|
|
3038
|
+
React.useImperativeHandle(ref, function () {
|
|
3039
|
+
return _extends({}, cellLayout, {
|
|
3040
|
+
startEditingCell: startEditingCell
|
|
3041
|
+
});
|
|
3042
|
+
}, [cellLayout, startEditingCell]);
|
|
3010
3043
|
return React__default.createElement("div", {
|
|
3011
3044
|
style: {
|
|
3012
3045
|
position: 'relative',
|
|
@@ -3040,13 +3073,22 @@ var Sheet = React.forwardRef(function (props, ref) {
|
|
|
3040
3073
|
height: 1,
|
|
3041
3074
|
backgroundColor: 'rgba(0,0,0,0.0)'
|
|
3042
3075
|
}
|
|
3043
|
-
}),
|
|
3076
|
+
}), renderedInside ? React__default.createElement("div", {
|
|
3044
3077
|
style: {
|
|
3045
3078
|
position: 'sticky',
|
|
3046
3079
|
left: 0,
|
|
3047
3080
|
top: 0
|
|
3048
3081
|
}
|
|
3049
|
-
},
|
|
3082
|
+
}, renderedInside) : null), renderedOutside ? React__default.createElement("div", {
|
|
3083
|
+
style: {
|
|
3084
|
+
position: 'absolute',
|
|
3085
|
+
left: 0,
|
|
3086
|
+
top: 0,
|
|
3087
|
+
width: '100%',
|
|
3088
|
+
height: '100%',
|
|
3089
|
+
pointerEvents: 'none'
|
|
3090
|
+
}
|
|
3091
|
+
}, renderedOutside) : null, React__default.createElement("textarea", {
|
|
3050
3092
|
style: {
|
|
3051
3093
|
position: 'absolute',
|
|
3052
3094
|
top: 0,
|