@leankylin-sheet/react 5.2.77 → 6.0.0
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/context/index.d.ts +1 -0
- package/dist/index.esm.js +100 -67
- package/dist/index.js +100 -67
- package/dist/index.umd.js +15348 -15315
- package/dist/index.umd.min.js +1 -1
- package/package.json +3 -3
package/dist/context/index.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export type SetContextOptions = {
|
|
|
17
17
|
declare const WorkbookContext: React.Context<{
|
|
18
18
|
context: Context;
|
|
19
19
|
setContext: (recipe: (ctx: Context) => void, options?: SetContextOptions) => void;
|
|
20
|
+
setScrollContext: (recipe: (ctx: Context) => void) => void;
|
|
20
21
|
settings: Required<Settings>;
|
|
21
22
|
refs: RefValues;
|
|
22
23
|
handleUndo: () => void;
|
package/dist/index.esm.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defaultContext, defaultSettings, getSheetIndex, colLocationByIndex, fixPositionOnFrozenCells, colLocation, getFlowdata, isAllowEdit, handleColumnHeaderMouseDown, handleColSizeHandleMouseDown, handleColFreezeHandleMouseDown, handleContextMenu, selectTitlesMap, selectTitlesRange, fixColumnStyleOverflowInFreeze, rowLocationByIndex, rowLocation, handleRowHeaderMouseDown, handleRowSizeHandleMouseDown, handleRowFreezeHandleMouseDown, fixRowStyleOverflowInFreeze, functionHTMLGenerate, locale, getCellValue, createRangeHightlight, isInlineStringCell, getInlineStringHTML, valueShowEs, escapeHTMLTag, escapeScriptTag, isShowHidenCR, cancelNormalSelected, moveHighlightCell, updateCell, israngeseleciton, handleFormulaInput, onSearchDialogMoveStart, replaceAll, replace, searchAll, searchNext, changeSheet, normalizeSelection, scrollToHighlightCell, chatatABC, isLinkValid, getRangetxt, goToLink, replaceHtml, removeHyperlink, onRangeSelectionModalMoveStart, saveHyperlink, createFilterOptions, onImageMoveStart, onImageResizeStart, showComments, setEditingComment, onCommentBoxMoveStart, onCommentBoxResizeStart, confirmMessage, getRangeByTxt, getDropdownList, setCellValue, setConditionRules, mergeBorder, setDropcownValue, handleCellAreaMouseDown, handleCellAreaMouseMove, handleCellAreaDragOver, handleCellDrop, handleCellAreaDoubleClick, selectAll, showLinkCard, getCellRowColumn, getCellHyperlink, handleOverlayMouseMove, handleOverlayMouseUp, handleKeydownForZoom, handleOverlayTouchStart, handleOverlayTouchMove, handleOverlayTouchEnd, onCellsMoveStart, createDropCellRange, handleDropCellDoubleClick, updateContextWithSheetData, updateContextWithCanvas, initFreeze, Canvas, handleGlobalWheel, setCaretPosition, getDataArr, updateMoreCell, getRegStr, getOptionValue, getSelectRange, applyLocation, updateItem, update, normalizedCellAttr, updateFormat, handleTextSize, handleHorizontalAlign, handleVerticalAlign, handleScreenShot, showImgChooser, insertImage, editComment, deleteComment, showHideComment, showHideAllComments, newComment, handleSum, autoSelectionFormula, handleMerge, handleBorder, handleFreeze, handleSort, createFilter, clearFilter, toolbarItemSelectedFunc, toolbarItemClickHandler, handleTextColor, handleTextBackground, getDataBySelectionNoCopy, getInlineStringNoStyle, rangeHightlightselected, editSheetName, setNextSheet, MAX_ZOOM_RATIO, MIN_ZOOM_RATIO, addSheet, indexToColumnChar, sortSelection, handleCopy, insertRowCol, deleteRowCol, hideSelected, showSelected, api, removeActiveImage, deleteSelectedCellText, jfrefreshgrid, handleLink, deleteSheet, opToPatch, orderbydatafiler, getFilterColumnValues, getFilterColumnColors, saveFilter, cancelActiveImgItem, patchToOp, filterPatch, inverseRowColOptions, ensureSheetIndex, initSheetIndex, handleGlobalKeyDown, handlePasteByLeanklin, groupValuesRefresh } from '@leankylin-sheet/core';
|
|
2
|
+
import { useInViewport, useMemoizedFn, useThrottleFn } from 'ahooks';
|
|
2
3
|
import React, { useContext, useRef, useState, useMemo, useCallback, useEffect, useLayoutEffect, useImperativeHandle } from 'react';
|
|
3
4
|
import produce, { applyPatches, enablePatches, produceWithPatches } from 'immer';
|
|
4
5
|
import _ from 'lodash';
|
|
5
|
-
import { useInViewport, useMemoizedFn, useThrottleFn } from 'ahooks';
|
|
6
6
|
import { createPortal } from 'react-dom';
|
|
7
7
|
|
|
8
8
|
function _iterableToArrayLimit(r, l) {
|
|
@@ -556,6 +556,7 @@ var defaultRefs = {
|
|
|
556
556
|
var WorkbookContext = /*#__PURE__*/React.createContext({
|
|
557
557
|
context: defaultContext(defaultRefs),
|
|
558
558
|
setContext: function setContext() {},
|
|
559
|
+
setScrollContext: function setScrollContext() {},
|
|
559
560
|
settings: defaultSettings,
|
|
560
561
|
handleUndo: function handleUndo() {},
|
|
561
562
|
handleRedo: function handleRedo() {},
|
|
@@ -1670,7 +1671,7 @@ var ScrollBar = function ScrollBar(_ref) {
|
|
|
1670
1671
|
var _useContext = useContext(WorkbookContext),
|
|
1671
1672
|
context = _useContext.context,
|
|
1672
1673
|
refs = _useContext.refs,
|
|
1673
|
-
|
|
1674
|
+
setScrollContext = _useContext.setScrollContext;
|
|
1674
1675
|
var ref = axis === "x" ? refs.scrollbarX : refs.scrollbarY;
|
|
1675
1676
|
var _useInViewport = useInViewport(ref),
|
|
1676
1677
|
_useInViewport2 = _slicedToArray(_useInViewport, 1),
|
|
@@ -1703,11 +1704,11 @@ var ScrollBar = function ScrollBar(_ref) {
|
|
|
1703
1704
|
className: "luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-".concat(axis),
|
|
1704
1705
|
onScroll: function onScroll() {
|
|
1705
1706
|
if (axis === "x") {
|
|
1706
|
-
|
|
1707
|
+
setScrollContext(function (draftCtx) {
|
|
1707
1708
|
draftCtx.scrollLeft = refs.scrollbarX.current.scrollLeft;
|
|
1708
1709
|
});
|
|
1709
1710
|
} else {
|
|
1710
|
-
|
|
1711
|
+
setScrollContext(function (draftCtx) {
|
|
1711
1712
|
draftCtx.scrollTop = refs.scrollbarY.current.scrollTop;
|
|
1712
1713
|
});
|
|
1713
1714
|
}
|
|
@@ -4350,9 +4351,7 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4350
4351
|
}, [setContext, refs.globalCache, refs.cellInput, refs.cellArea, refs.fxInput, refs.canvas]);
|
|
4351
4352
|
var debounceMouseMove = useMemoizedFn(function (e) {
|
|
4352
4353
|
var nativeEvent = e.nativeEvent;
|
|
4353
|
-
|
|
4354
|
-
handleCellAreaMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4355
|
-
});
|
|
4354
|
+
handleCellAreaMouseMove(context, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4356
4355
|
});
|
|
4357
4356
|
var debounceDragOver = useMemoizedFn(function (e) {
|
|
4358
4357
|
var nativeEvent = e.nativeEvent;
|
|
@@ -4422,12 +4421,29 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4422
4421
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false, true);
|
|
4423
4422
|
}
|
|
4424
4423
|
}, [debouncedShowLinkCard]);
|
|
4424
|
+
var lastHoverCellRef = useRef(null);
|
|
4425
4425
|
var onMouseMove = useCallback(function (nativeEvent) {
|
|
4426
|
+
var _gc$commentBox, _gc$commentBox2, _gc$searchDialog, _gc$linkCard;
|
|
4427
|
+
var container = containerRef.current;
|
|
4428
|
+
var scrollX = refs.scrollbarX.current;
|
|
4429
|
+
var scrollY = refs.scrollbarY.current;
|
|
4430
|
+
if (!container || !scrollX || !scrollY) return;
|
|
4431
|
+
var gc = refs.globalCache;
|
|
4432
|
+
var isInteracting = !!context.luckysheet_scroll_status || !!context.luckysheet_select_status || !!context.luckysheet_rows_selected_status || !!context.luckysheet_cols_selected_status || !!context.luckysheet_cell_selected_move || !!context.luckysheet_cell_selected_extend || !!context.luckysheet_cols_change_size || !!context.luckysheet_rows_change_size || ((_gc$commentBox = gc.commentBox) === null || _gc$commentBox === void 0 ? void 0 : _gc$commentBox.movingId) != null || ((_gc$commentBox2 = gc.commentBox) === null || _gc$commentBox2 === void 0 ? void 0 : _gc$commentBox2.resizingId) != null || gc.image != null || ((_gc$searchDialog = gc.searchDialog) === null || _gc$searchDialog === void 0 ? void 0 : _gc$searchDialog.moveProps) != null || ((_gc$linkCard = gc.linkCard) === null || _gc$linkCard === void 0 ? void 0 : _gc$linkCard.rangeSelectionModal) != null;
|
|
4433
|
+
if (!isInteracting) {
|
|
4434
|
+
var rc = getCellRowColumn(context, nativeEvent, container, scrollX, scrollY);
|
|
4435
|
+
var last = lastHoverCellRef.current;
|
|
4436
|
+
var hoverChanged = rc == null ? last != null : last == null || last.r !== rc.r || last.c !== rc.c;
|
|
4437
|
+
if (!hoverChanged) {
|
|
4438
|
+
return;
|
|
4439
|
+
}
|
|
4440
|
+
lastHoverCellRef.current = rc !== null && rc !== void 0 ? rc : null;
|
|
4441
|
+
}
|
|
4426
4442
|
setContext(function (draftCtx) {
|
|
4427
|
-
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent,
|
|
4428
|
-
handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current,
|
|
4443
|
+
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent, container, scrollX, scrollY);
|
|
4444
|
+
handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current, scrollX, scrollY, container, refs.fxInput.current);
|
|
4429
4445
|
});
|
|
4430
|
-
}, [overShowLinkCard, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4446
|
+
}, [overShowLinkCard, context, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4431
4447
|
var onMouseUp = useCallback(function (nativeEvent) {
|
|
4432
4448
|
setContext(function (draftCtx) {
|
|
4433
4449
|
try {
|
|
@@ -5014,9 +5030,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5014
5030
|
return false;
|
|
5015
5031
|
}
|
|
5016
5032
|
var onWheel = useCallback(function (e) {
|
|
5017
|
-
|
|
5018
|
-
handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5019
|
-
});
|
|
5033
|
+
handleGlobalWheel(context, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5020
5034
|
if (e.deltaY === 0 && e.deltaX === 0) {
|
|
5021
5035
|
return;
|
|
5022
5036
|
}
|
|
@@ -5037,7 +5051,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5037
5051
|
e.preventDefault();
|
|
5038
5052
|
}
|
|
5039
5053
|
}
|
|
5040
|
-
}, [refs.globalCache, refs.scrollbarX, refs.scrollbarY
|
|
5054
|
+
}, [context, refs.globalCache, refs.scrollbarX, refs.scrollbarY]);
|
|
5041
5055
|
useEffect(function () {
|
|
5042
5056
|
var container = containerRef.current;
|
|
5043
5057
|
container === null || container === void 0 ? void 0 : container.addEventListener("wheel", onWheel);
|
|
@@ -11958,6 +11972,7 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
11958
11972
|
_useState2 = _slicedToArray(_useState, 2),
|
|
11959
11973
|
context = _useState2[0],
|
|
11960
11974
|
setContext = _useState2[1];
|
|
11975
|
+
var contextRef = useRef(context);
|
|
11961
11976
|
var _useState3 = useState(null),
|
|
11962
11977
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
11963
11978
|
moreToolbarItems = _useState4[0],
|
|
@@ -12062,64 +12077,81 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
12062
12077
|
}
|
|
12063
12078
|
return cellData;
|
|
12064
12079
|
}
|
|
12065
|
-
var setContextWithProduce =
|
|
12080
|
+
var setContextWithProduce = useMemoizedFn(function (recipe) {
|
|
12066
12081
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
12067
|
-
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
|
|
12074
|
-
|
|
12075
|
-
|
|
12076
|
-
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
|
|
12085
|
-
});
|
|
12086
|
-
if (target) {
|
|
12087
|
-
var index = getSheetIndex(ctx_, options.deleteSheetOp.id);
|
|
12088
|
-
options.deletedSheet = {
|
|
12089
|
-
id: options.deleteSheetOp.id,
|
|
12090
|
-
index: index,
|
|
12091
|
-
value: _.cloneDeep(ctx_.luckysheetfile[index])
|
|
12092
|
-
};
|
|
12093
|
-
options.deletedSheet.value.celldata = dataToCelldata(options.deletedSheet.value.data);
|
|
12094
|
-
delete options.deletedSheet.value.data;
|
|
12095
|
-
options.deletedSheet.value.status = 0;
|
|
12096
|
-
filteredInversePatches = [{
|
|
12097
|
-
op: "add",
|
|
12098
|
-
path: ["luckysheetfile", 0],
|
|
12099
|
-
value: options.deletedSheet.value
|
|
12100
|
-
}];
|
|
12101
|
-
}
|
|
12102
|
-
} else if (options.addSheetOp) {
|
|
12103
|
-
options.addSheet = {};
|
|
12104
|
-
options.addSheet.id = result.luckysheetfile[result.luckysheetfile.length - 1].id;
|
|
12105
|
-
}
|
|
12106
|
-
globalCache.current.undoList.push({
|
|
12107
|
-
patches: filteredPatches,
|
|
12108
|
-
inversePatches: filteredInversePatches,
|
|
12109
|
-
options: options
|
|
12082
|
+
var ctx_ = contextRef.current;
|
|
12083
|
+
var _produceWithPatches = produceWithPatches(ctx_, concatProducer(recipe, triggerGroupValuesRefresh)),
|
|
12084
|
+
_produceWithPatches2 = _slicedToArray(_produceWithPatches, 3),
|
|
12085
|
+
result = _produceWithPatches2[0],
|
|
12086
|
+
patches = _produceWithPatches2[1],
|
|
12087
|
+
inversePatches = _produceWithPatches2[2];
|
|
12088
|
+
if (patches.length > 0 && !options.noHistory) {
|
|
12089
|
+
if (options.logPatch) {
|
|
12090
|
+
console.info("patch", patches);
|
|
12091
|
+
}
|
|
12092
|
+
var filteredPatches = filterPatch(patches);
|
|
12093
|
+
var filteredInversePatches = filterPatch(inversePatches);
|
|
12094
|
+
if (filteredInversePatches.length > 0) {
|
|
12095
|
+
options.id = ctx_.currentSheetId;
|
|
12096
|
+
if (options.deleteSheetOp) {
|
|
12097
|
+
var target = ctx_.luckysheetfile.filter(function (sheet) {
|
|
12098
|
+
var _options$deleteSheetO;
|
|
12099
|
+
return sheet.id === ((_options$deleteSheetO = options.deleteSheetOp) === null || _options$deleteSheetO === void 0 ? void 0 : _options$deleteSheetO.id);
|
|
12110
12100
|
});
|
|
12111
|
-
|
|
12112
|
-
|
|
12113
|
-
|
|
12114
|
-
|
|
12115
|
-
|
|
12116
|
-
|
|
12117
|
-
|
|
12101
|
+
if (target) {
|
|
12102
|
+
var index = getSheetIndex(ctx_, options.deleteSheetOp.id);
|
|
12103
|
+
options.deletedSheet = {
|
|
12104
|
+
id: options.deleteSheetOp.id,
|
|
12105
|
+
index: index,
|
|
12106
|
+
value: _.cloneDeep(ctx_.luckysheetfile[index])
|
|
12107
|
+
};
|
|
12108
|
+
options.deletedSheet.value.celldata = dataToCelldata(options.deletedSheet.value.data);
|
|
12109
|
+
delete options.deletedSheet.value.data;
|
|
12110
|
+
options.deletedSheet.value.status = 0;
|
|
12111
|
+
filteredInversePatches = [{
|
|
12112
|
+
op: "add",
|
|
12113
|
+
path: ["luckysheetfile", 0],
|
|
12114
|
+
value: options.deletedSheet.value
|
|
12115
|
+
}];
|
|
12116
|
+
}
|
|
12117
|
+
} else if (options.addSheetOp) {
|
|
12118
|
+
options.addSheet = {};
|
|
12119
|
+
options.addSheet.id = result.luckysheetfile[result.luckysheetfile.length - 1].id;
|
|
12118
12120
|
}
|
|
12121
|
+
globalCache.current.undoList.push({
|
|
12122
|
+
patches: filteredPatches,
|
|
12123
|
+
inversePatches: filteredInversePatches,
|
|
12124
|
+
options: options
|
|
12125
|
+
});
|
|
12126
|
+
globalCache.current.redoList = [];
|
|
12127
|
+
emitOp(result, filteredPatches, options);
|
|
12128
|
+
}
|
|
12129
|
+
} else {
|
|
12130
|
+
var _patches$, _patches$$value, _ctx_$luckysheetfile;
|
|
12131
|
+
if ((patches === null || patches === void 0 ? void 0 : (_patches$ = patches[0]) === null || _patches$ === void 0 ? void 0 : (_patches$$value = _patches$.value) === null || _patches$$value === void 0 ? void 0 : _patches$$value.length) < (ctx_ === null || ctx_ === void 0 ? void 0 : (_ctx_$luckysheetfile = ctx_.luckysheetfile) === null || _ctx_$luckysheetfile === void 0 ? void 0 : _ctx_$luckysheetfile.length)) {
|
|
12132
|
+
reduceUndoList(result, ctx_);
|
|
12133
|
+
}
|
|
12134
|
+
}
|
|
12135
|
+
contextRef.current = result;
|
|
12136
|
+
setContext(function (prev) {
|
|
12137
|
+
if (prev === ctx_) {
|
|
12138
|
+
return result;
|
|
12119
12139
|
}
|
|
12140
|
+
var merged = applyPatches(prev, patches);
|
|
12141
|
+
contextRef.current = merged;
|
|
12142
|
+
return merged;
|
|
12143
|
+
});
|
|
12144
|
+
});
|
|
12145
|
+
var setScrollContext = useMemoizedFn(function (recipe) {
|
|
12146
|
+
setContext(function (ctx_) {
|
|
12147
|
+
var result = produce(ctx_, recipe);
|
|
12148
|
+
if (result === ctx_) {
|
|
12149
|
+
return ctx_;
|
|
12150
|
+
}
|
|
12151
|
+
contextRef.current = result;
|
|
12120
12152
|
return result;
|
|
12121
12153
|
});
|
|
12122
|
-
}
|
|
12154
|
+
});
|
|
12123
12155
|
var handleUndo = useCallback(function () {
|
|
12124
12156
|
var history = globalCache.current.undoList.pop();
|
|
12125
12157
|
if (history) {
|
|
@@ -12192,12 +12224,13 @@ var Workbook = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
12192
12224
|
return {
|
|
12193
12225
|
context: context,
|
|
12194
12226
|
setContext: setContextWithProduce,
|
|
12227
|
+
setScrollContext: setScrollContext,
|
|
12195
12228
|
settings: mergedSettings,
|
|
12196
12229
|
handleUndo: handleUndo,
|
|
12197
12230
|
handleRedo: handleRedo,
|
|
12198
12231
|
refs: refs
|
|
12199
12232
|
};
|
|
12200
|
-
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce]);
|
|
12233
|
+
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce, setScrollContext]);
|
|
12201
12234
|
useEffect(function () {
|
|
12202
12235
|
if (!_.isEmpty(context.luckysheetfile)) {
|
|
12203
12236
|
onChange === null || onChange === void 0 ? void 0 : onChange(context.luckysheetfile);
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var core = require('@leankylin-sheet/core');
|
|
6
|
+
var ahooks = require('ahooks');
|
|
6
7
|
var React = require('react');
|
|
7
8
|
var produce = require('immer');
|
|
8
9
|
var _ = require('lodash');
|
|
9
|
-
var ahooks = require('ahooks');
|
|
10
10
|
var reactDom = require('react-dom');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -566,6 +566,7 @@ var defaultRefs = {
|
|
|
566
566
|
var WorkbookContext = /*#__PURE__*/React__default['default'].createContext({
|
|
567
567
|
context: core.defaultContext(defaultRefs),
|
|
568
568
|
setContext: function setContext() {},
|
|
569
|
+
setScrollContext: function setScrollContext() {},
|
|
569
570
|
settings: core.defaultSettings,
|
|
570
571
|
handleUndo: function handleUndo() {},
|
|
571
572
|
handleRedo: function handleRedo() {},
|
|
@@ -1680,7 +1681,7 @@ var ScrollBar = function ScrollBar(_ref) {
|
|
|
1680
1681
|
var _useContext = React.useContext(WorkbookContext),
|
|
1681
1682
|
context = _useContext.context,
|
|
1682
1683
|
refs = _useContext.refs,
|
|
1683
|
-
|
|
1684
|
+
setScrollContext = _useContext.setScrollContext;
|
|
1684
1685
|
var ref = axis === "x" ? refs.scrollbarX : refs.scrollbarY;
|
|
1685
1686
|
var _useInViewport = ahooks.useInViewport(ref),
|
|
1686
1687
|
_useInViewport2 = _slicedToArray(_useInViewport, 1),
|
|
@@ -1713,11 +1714,11 @@ var ScrollBar = function ScrollBar(_ref) {
|
|
|
1713
1714
|
className: "luckysheet-scrollbars luckysheet-scrollbar-ltr luckysheet-scrollbar-".concat(axis),
|
|
1714
1715
|
onScroll: function onScroll() {
|
|
1715
1716
|
if (axis === "x") {
|
|
1716
|
-
|
|
1717
|
+
setScrollContext(function (draftCtx) {
|
|
1717
1718
|
draftCtx.scrollLeft = refs.scrollbarX.current.scrollLeft;
|
|
1718
1719
|
});
|
|
1719
1720
|
} else {
|
|
1720
|
-
|
|
1721
|
+
setScrollContext(function (draftCtx) {
|
|
1721
1722
|
draftCtx.scrollTop = refs.scrollbarY.current.scrollTop;
|
|
1722
1723
|
});
|
|
1723
1724
|
}
|
|
@@ -4360,9 +4361,7 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4360
4361
|
}, [setContext, refs.globalCache, refs.cellInput, refs.cellArea, refs.fxInput, refs.canvas]);
|
|
4361
4362
|
var debounceMouseMove = ahooks.useMemoizedFn(function (e) {
|
|
4362
4363
|
var nativeEvent = e.nativeEvent;
|
|
4363
|
-
|
|
4364
|
-
core.handleCellAreaMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4365
|
-
});
|
|
4364
|
+
core.handleCellAreaMouseMove(context, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4366
4365
|
});
|
|
4367
4366
|
var debounceDragOver = ahooks.useMemoizedFn(function (e) {
|
|
4368
4367
|
var nativeEvent = e.nativeEvent;
|
|
@@ -4432,12 +4431,29 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4432
4431
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false, true);
|
|
4433
4432
|
}
|
|
4434
4433
|
}, [debouncedShowLinkCard]);
|
|
4434
|
+
var lastHoverCellRef = React.useRef(null);
|
|
4435
4435
|
var onMouseMove = React.useCallback(function (nativeEvent) {
|
|
4436
|
+
var _gc$commentBox, _gc$commentBox2, _gc$searchDialog, _gc$linkCard;
|
|
4437
|
+
var container = containerRef.current;
|
|
4438
|
+
var scrollX = refs.scrollbarX.current;
|
|
4439
|
+
var scrollY = refs.scrollbarY.current;
|
|
4440
|
+
if (!container || !scrollX || !scrollY) return;
|
|
4441
|
+
var gc = refs.globalCache;
|
|
4442
|
+
var isInteracting = !!context.luckysheet_scroll_status || !!context.luckysheet_select_status || !!context.luckysheet_rows_selected_status || !!context.luckysheet_cols_selected_status || !!context.luckysheet_cell_selected_move || !!context.luckysheet_cell_selected_extend || !!context.luckysheet_cols_change_size || !!context.luckysheet_rows_change_size || ((_gc$commentBox = gc.commentBox) === null || _gc$commentBox === void 0 ? void 0 : _gc$commentBox.movingId) != null || ((_gc$commentBox2 = gc.commentBox) === null || _gc$commentBox2 === void 0 ? void 0 : _gc$commentBox2.resizingId) != null || gc.image != null || ((_gc$searchDialog = gc.searchDialog) === null || _gc$searchDialog === void 0 ? void 0 : _gc$searchDialog.moveProps) != null || ((_gc$linkCard = gc.linkCard) === null || _gc$linkCard === void 0 ? void 0 : _gc$linkCard.rangeSelectionModal) != null;
|
|
4443
|
+
if (!isInteracting) {
|
|
4444
|
+
var rc = core.getCellRowColumn(context, nativeEvent, container, scrollX, scrollY);
|
|
4445
|
+
var last = lastHoverCellRef.current;
|
|
4446
|
+
var hoverChanged = rc == null ? last != null : last == null || last.r !== rc.r || last.c !== rc.c;
|
|
4447
|
+
if (!hoverChanged) {
|
|
4448
|
+
return;
|
|
4449
|
+
}
|
|
4450
|
+
lastHoverCellRef.current = rc !== null && rc !== void 0 ? rc : null;
|
|
4451
|
+
}
|
|
4436
4452
|
setContext(function (draftCtx) {
|
|
4437
|
-
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent,
|
|
4438
|
-
core.handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current,
|
|
4453
|
+
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent, container, scrollX, scrollY);
|
|
4454
|
+
core.handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current, scrollX, scrollY, container, refs.fxInput.current);
|
|
4439
4455
|
});
|
|
4440
|
-
}, [overShowLinkCard, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4456
|
+
}, [overShowLinkCard, context, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4441
4457
|
var onMouseUp = React.useCallback(function (nativeEvent) {
|
|
4442
4458
|
setContext(function (draftCtx) {
|
|
4443
4459
|
try {
|
|
@@ -5024,9 +5040,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5024
5040
|
return false;
|
|
5025
5041
|
}
|
|
5026
5042
|
var onWheel = React.useCallback(function (e) {
|
|
5027
|
-
|
|
5028
|
-
core.handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5029
|
-
});
|
|
5043
|
+
core.handleGlobalWheel(context, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5030
5044
|
if (e.deltaY === 0 && e.deltaX === 0) {
|
|
5031
5045
|
return;
|
|
5032
5046
|
}
|
|
@@ -5047,7 +5061,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5047
5061
|
e.preventDefault();
|
|
5048
5062
|
}
|
|
5049
5063
|
}
|
|
5050
|
-
}, [refs.globalCache, refs.scrollbarX, refs.scrollbarY
|
|
5064
|
+
}, [context, refs.globalCache, refs.scrollbarX, refs.scrollbarY]);
|
|
5051
5065
|
React.useEffect(function () {
|
|
5052
5066
|
var container = containerRef.current;
|
|
5053
5067
|
container === null || container === void 0 ? void 0 : container.addEventListener("wheel", onWheel);
|
|
@@ -11968,6 +11982,7 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
11968
11982
|
_useState2 = _slicedToArray(_useState, 2),
|
|
11969
11983
|
context = _useState2[0],
|
|
11970
11984
|
setContext = _useState2[1];
|
|
11985
|
+
var contextRef = React.useRef(context);
|
|
11971
11986
|
var _useState3 = React.useState(null),
|
|
11972
11987
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
11973
11988
|
moreToolbarItems = _useState4[0],
|
|
@@ -12072,64 +12087,81 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
12072
12087
|
}
|
|
12073
12088
|
return cellData;
|
|
12074
12089
|
}
|
|
12075
|
-
var setContextWithProduce =
|
|
12090
|
+
var setContextWithProduce = ahooks.useMemoizedFn(function (recipe) {
|
|
12076
12091
|
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
|
|
12085
|
-
|
|
12086
|
-
|
|
12087
|
-
|
|
12088
|
-
|
|
12089
|
-
|
|
12090
|
-
|
|
12091
|
-
|
|
12092
|
-
|
|
12093
|
-
|
|
12094
|
-
|
|
12095
|
-
});
|
|
12096
|
-
if (target) {
|
|
12097
|
-
var index = core.getSheetIndex(ctx_, options.deleteSheetOp.id);
|
|
12098
|
-
options.deletedSheet = {
|
|
12099
|
-
id: options.deleteSheetOp.id,
|
|
12100
|
-
index: index,
|
|
12101
|
-
value: ___default['default'].cloneDeep(ctx_.luckysheetfile[index])
|
|
12102
|
-
};
|
|
12103
|
-
options.deletedSheet.value.celldata = dataToCelldata(options.deletedSheet.value.data);
|
|
12104
|
-
delete options.deletedSheet.value.data;
|
|
12105
|
-
options.deletedSheet.value.status = 0;
|
|
12106
|
-
filteredInversePatches = [{
|
|
12107
|
-
op: "add",
|
|
12108
|
-
path: ["luckysheetfile", 0],
|
|
12109
|
-
value: options.deletedSheet.value
|
|
12110
|
-
}];
|
|
12111
|
-
}
|
|
12112
|
-
} else if (options.addSheetOp) {
|
|
12113
|
-
options.addSheet = {};
|
|
12114
|
-
options.addSheet.id = result.luckysheetfile[result.luckysheetfile.length - 1].id;
|
|
12115
|
-
}
|
|
12116
|
-
globalCache.current.undoList.push({
|
|
12117
|
-
patches: filteredPatches,
|
|
12118
|
-
inversePatches: filteredInversePatches,
|
|
12119
|
-
options: options
|
|
12092
|
+
var ctx_ = contextRef.current;
|
|
12093
|
+
var _produceWithPatches = produce.produceWithPatches(ctx_, concatProducer(recipe, triggerGroupValuesRefresh)),
|
|
12094
|
+
_produceWithPatches2 = _slicedToArray(_produceWithPatches, 3),
|
|
12095
|
+
result = _produceWithPatches2[0],
|
|
12096
|
+
patches = _produceWithPatches2[1],
|
|
12097
|
+
inversePatches = _produceWithPatches2[2];
|
|
12098
|
+
if (patches.length > 0 && !options.noHistory) {
|
|
12099
|
+
if (options.logPatch) {
|
|
12100
|
+
console.info("patch", patches);
|
|
12101
|
+
}
|
|
12102
|
+
var filteredPatches = core.filterPatch(patches);
|
|
12103
|
+
var filteredInversePatches = core.filterPatch(inversePatches);
|
|
12104
|
+
if (filteredInversePatches.length > 0) {
|
|
12105
|
+
options.id = ctx_.currentSheetId;
|
|
12106
|
+
if (options.deleteSheetOp) {
|
|
12107
|
+
var target = ctx_.luckysheetfile.filter(function (sheet) {
|
|
12108
|
+
var _options$deleteSheetO;
|
|
12109
|
+
return sheet.id === ((_options$deleteSheetO = options.deleteSheetOp) === null || _options$deleteSheetO === void 0 ? void 0 : _options$deleteSheetO.id);
|
|
12120
12110
|
});
|
|
12121
|
-
|
|
12122
|
-
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12111
|
+
if (target) {
|
|
12112
|
+
var index = core.getSheetIndex(ctx_, options.deleteSheetOp.id);
|
|
12113
|
+
options.deletedSheet = {
|
|
12114
|
+
id: options.deleteSheetOp.id,
|
|
12115
|
+
index: index,
|
|
12116
|
+
value: ___default['default'].cloneDeep(ctx_.luckysheetfile[index])
|
|
12117
|
+
};
|
|
12118
|
+
options.deletedSheet.value.celldata = dataToCelldata(options.deletedSheet.value.data);
|
|
12119
|
+
delete options.deletedSheet.value.data;
|
|
12120
|
+
options.deletedSheet.value.status = 0;
|
|
12121
|
+
filteredInversePatches = [{
|
|
12122
|
+
op: "add",
|
|
12123
|
+
path: ["luckysheetfile", 0],
|
|
12124
|
+
value: options.deletedSheet.value
|
|
12125
|
+
}];
|
|
12126
|
+
}
|
|
12127
|
+
} else if (options.addSheetOp) {
|
|
12128
|
+
options.addSheet = {};
|
|
12129
|
+
options.addSheet.id = result.luckysheetfile[result.luckysheetfile.length - 1].id;
|
|
12128
12130
|
}
|
|
12131
|
+
globalCache.current.undoList.push({
|
|
12132
|
+
patches: filteredPatches,
|
|
12133
|
+
inversePatches: filteredInversePatches,
|
|
12134
|
+
options: options
|
|
12135
|
+
});
|
|
12136
|
+
globalCache.current.redoList = [];
|
|
12137
|
+
emitOp(result, filteredPatches, options);
|
|
12138
|
+
}
|
|
12139
|
+
} else {
|
|
12140
|
+
var _patches$, _patches$$value, _ctx_$luckysheetfile;
|
|
12141
|
+
if ((patches === null || patches === void 0 ? void 0 : (_patches$ = patches[0]) === null || _patches$ === void 0 ? void 0 : (_patches$$value = _patches$.value) === null || _patches$$value === void 0 ? void 0 : _patches$$value.length) < (ctx_ === null || ctx_ === void 0 ? void 0 : (_ctx_$luckysheetfile = ctx_.luckysheetfile) === null || _ctx_$luckysheetfile === void 0 ? void 0 : _ctx_$luckysheetfile.length)) {
|
|
12142
|
+
reduceUndoList(result, ctx_);
|
|
12143
|
+
}
|
|
12144
|
+
}
|
|
12145
|
+
contextRef.current = result;
|
|
12146
|
+
setContext(function (prev) {
|
|
12147
|
+
if (prev === ctx_) {
|
|
12148
|
+
return result;
|
|
12129
12149
|
}
|
|
12150
|
+
var merged = produce.applyPatches(prev, patches);
|
|
12151
|
+
contextRef.current = merged;
|
|
12152
|
+
return merged;
|
|
12153
|
+
});
|
|
12154
|
+
});
|
|
12155
|
+
var setScrollContext = ahooks.useMemoizedFn(function (recipe) {
|
|
12156
|
+
setContext(function (ctx_) {
|
|
12157
|
+
var result = produce__default['default'](ctx_, recipe);
|
|
12158
|
+
if (result === ctx_) {
|
|
12159
|
+
return ctx_;
|
|
12160
|
+
}
|
|
12161
|
+
contextRef.current = result;
|
|
12130
12162
|
return result;
|
|
12131
12163
|
});
|
|
12132
|
-
}
|
|
12164
|
+
});
|
|
12133
12165
|
var handleUndo = React.useCallback(function () {
|
|
12134
12166
|
var history = globalCache.current.undoList.pop();
|
|
12135
12167
|
if (history) {
|
|
@@ -12202,12 +12234,13 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
12202
12234
|
return {
|
|
12203
12235
|
context: context,
|
|
12204
12236
|
setContext: setContextWithProduce,
|
|
12237
|
+
setScrollContext: setScrollContext,
|
|
12205
12238
|
settings: mergedSettings,
|
|
12206
12239
|
handleUndo: handleUndo,
|
|
12207
12240
|
handleRedo: handleRedo,
|
|
12208
12241
|
refs: refs
|
|
12209
12242
|
};
|
|
12210
|
-
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce]);
|
|
12243
|
+
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce, setScrollContext]);
|
|
12211
12244
|
React.useEffect(function () {
|
|
12212
12245
|
if (!___default['default'].isEmpty(context.luckysheetfile)) {
|
|
12213
12246
|
onChange === null || onChange === void 0 ? void 0 : onChange(context.luckysheetfile);
|