@leankylin-sheet/react 5.2.77 → 6.0.1
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/components/Workbook/api.d.ts +1 -0
- package/dist/components/Workbook/index.d.ts +1 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/index.esm.js +284 -85
- package/dist/index.js +283 -84
- package/dist/index.umd.js +15533 -15334
- package/dist/index.umd.min.js +1 -1
- package/package.json +3 -3
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
|
}
|
|
@@ -2272,7 +2273,7 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2272
2273
|
c = _ref.c,
|
|
2273
2274
|
rc = _ref.rc,
|
|
2274
2275
|
originText = _ref.originText,
|
|
2275
|
-
|
|
2276
|
+
_originType = _ref.originType,
|
|
2276
2277
|
originAddress = _ref.originAddress,
|
|
2277
2278
|
isEditing = _ref.isEditing,
|
|
2278
2279
|
position = _ref.position,
|
|
@@ -2280,7 +2281,8 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2280
2281
|
var _useContext = React.useContext(WorkbookContext),
|
|
2281
2282
|
context = _useContext.context,
|
|
2282
2283
|
setContext = _useContext.setContext,
|
|
2283
|
-
refs = _useContext.refs
|
|
2284
|
+
refs = _useContext.refs,
|
|
2285
|
+
settings = _useContext.settings;
|
|
2284
2286
|
var _useState = React.useState(originText),
|
|
2285
2287
|
_useState2 = _slicedToArray(_useState, 2),
|
|
2286
2288
|
linkText = _useState2[0],
|
|
@@ -2289,10 +2291,19 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2289
2291
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
2290
2292
|
linkAddress = _useState4[0],
|
|
2291
2293
|
setLinkAddress = _useState4[1];
|
|
2294
|
+
var originType = _originType || settings.detailLinkType || "webpage";
|
|
2292
2295
|
var _useState5 = React.useState(originType),
|
|
2293
2296
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
2294
2297
|
linkType = _useState6[0],
|
|
2295
2298
|
setLinkType = _useState6[1];
|
|
2299
|
+
var _useState7 = React.useState(function () {
|
|
2300
|
+
var _origin$payload;
|
|
2301
|
+
var origin = core.getCellHyperlink(context, r, c);
|
|
2302
|
+
return (_origin$payload = origin === null || origin === void 0 ? void 0 : origin.payload) !== null && _origin$payload !== void 0 ? _origin$payload : {};
|
|
2303
|
+
}),
|
|
2304
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
2305
|
+
customPayload = _useState8[0],
|
|
2306
|
+
setCustomPayload = _useState8[1];
|
|
2296
2307
|
var _locale = core.locale(context),
|
|
2297
2308
|
insertLink = _locale.insertLink,
|
|
2298
2309
|
linkTypeList = _locale.linkTypeList,
|
|
@@ -2303,9 +2314,65 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2303
2314
|
}]));
|
|
2304
2315
|
var skipCellRangeSet = React.useRef(true);
|
|
2305
2316
|
var isLinkAddressValid = core.isLinkValid(context, linkType, linkAddress);
|
|
2306
|
-
var
|
|
2307
|
-
|
|
2308
|
-
|
|
2317
|
+
var mergedLinkTypeList = React.useMemo(function () {
|
|
2318
|
+
var _settings$customLinkT;
|
|
2319
|
+
var customs = (_settings$customLinkT = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT !== void 0 ? _settings$customLinkT : [];
|
|
2320
|
+
if (customs.length === 0) return linkTypeList;
|
|
2321
|
+
var builtinTypes = new Set(linkTypeList.map(function (it) {
|
|
2322
|
+
return it.value;
|
|
2323
|
+
}));
|
|
2324
|
+
var extra = customs.filter(function (it) {
|
|
2325
|
+
return it.type && !builtinTypes.has(it.type);
|
|
2326
|
+
}).map(function (it) {
|
|
2327
|
+
return {
|
|
2328
|
+
text: it.text,
|
|
2329
|
+
value: it.type
|
|
2330
|
+
};
|
|
2331
|
+
});
|
|
2332
|
+
return [].concat(_toConsumableArray(extra), _toConsumableArray(linkTypeList));
|
|
2333
|
+
}, [settings === null || settings === void 0 ? void 0 : settings.customLinkTypes, linkTypeList]);
|
|
2334
|
+
var customLinkTypeMap = React.useMemo(function () {
|
|
2335
|
+
var _settings$customLinkT2;
|
|
2336
|
+
var m = {};
|
|
2337
|
+
((_settings$customLinkT2 = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT2 !== void 0 ? _settings$customLinkT2 : []).forEach(function (it) {
|
|
2338
|
+
if (it.type) m[it.type] = it;
|
|
2339
|
+
});
|
|
2340
|
+
return m;
|
|
2341
|
+
}, [settings === null || settings === void 0 ? void 0 : settings.customLinkTypes]);
|
|
2342
|
+
var currentCustomConfig = customLinkTypeMap[linkType];
|
|
2343
|
+
var isCustomTypeValid = React.useMemo(function () {
|
|
2344
|
+
if (!currentCustomConfig) return true;
|
|
2345
|
+
if (!currentCustomConfig.onSave) return true;
|
|
2346
|
+
var next = currentCustomConfig.onSave({
|
|
2347
|
+
linkText: linkText,
|
|
2348
|
+
linkAddress: linkAddress,
|
|
2349
|
+
position: {
|
|
2350
|
+
r: r,
|
|
2351
|
+
c: c
|
|
2352
|
+
},
|
|
2353
|
+
origin: function () {
|
|
2354
|
+
var o = core.getCellHyperlink(context, r, c);
|
|
2355
|
+
return o ? {
|
|
2356
|
+
linkType: o.linkType,
|
|
2357
|
+
linkAddress: o.linkAddress,
|
|
2358
|
+
payload: o.payload
|
|
2359
|
+
} : undefined;
|
|
2360
|
+
}()
|
|
2361
|
+
});
|
|
2362
|
+
return next !== undefined;
|
|
2363
|
+
}, [currentCustomConfig, linkText, linkAddress, r, c, context]);
|
|
2364
|
+
var canSubmit = !currentCustomConfig || isCustomTypeValid ? isLinkAddressValid.isValid : false;
|
|
2365
|
+
var tooltip = function () {
|
|
2366
|
+
var text;
|
|
2367
|
+
if (currentCustomConfig) {
|
|
2368
|
+
text = isCustomTypeValid ? "" : insertLink.tooltipInfo1 || "";
|
|
2369
|
+
} else {
|
|
2370
|
+
text = isLinkAddressValid.tooltip;
|
|
2371
|
+
}
|
|
2372
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2373
|
+
className: "validation-input-tip"
|
|
2374
|
+
}, text);
|
|
2375
|
+
}();
|
|
2309
2376
|
var hideLinkCard = React.useCallback(function () {
|
|
2310
2377
|
___default['default'].set(refs.globalCache, "linkCard.mouseEnter", false);
|
|
2311
2378
|
setContext(function (draftCtx) {
|
|
@@ -2367,10 +2434,13 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2367
2434
|
}));
|
|
2368
2435
|
}, []);
|
|
2369
2436
|
React.useLayoutEffect(function () {
|
|
2437
|
+
var _origin$payload2;
|
|
2370
2438
|
setLinkAddress(originAddress);
|
|
2371
2439
|
setLinkText(originText);
|
|
2372
2440
|
setLinkType(originType);
|
|
2373
|
-
|
|
2441
|
+
var origin = core.getCellHyperlink(context, r, c);
|
|
2442
|
+
setCustomPayload((_origin$payload2 = origin === null || origin === void 0 ? void 0 : origin.payload) !== null && _origin$payload2 !== void 0 ? _origin$payload2 : {});
|
|
2443
|
+
}, [rc, originAddress, originText, originType, r, c, context]);
|
|
2374
2444
|
React.useLayoutEffect(function () {
|
|
2375
2445
|
if (selectingCellRange) {
|
|
2376
2446
|
skipCellRangeSet.current = true;
|
|
@@ -2389,6 +2459,7 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2389
2459
|
}
|
|
2390
2460
|
}, [context, selectingCellRange]);
|
|
2391
2461
|
if (!isEditing) {
|
|
2462
|
+
var toolbarCustomConfig = customLinkTypeMap[originType];
|
|
2392
2463
|
return /*#__PURE__*/React__default['default'].createElement("div", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
|
|
2393
2464
|
onKeyDown: function onKeyDown(e) {
|
|
2394
2465
|
e.stopPropagation();
|
|
@@ -2400,16 +2471,35 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2400
2471
|
}
|
|
2401
2472
|
}), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2402
2473
|
className: "link-content",
|
|
2403
|
-
onClick: function onClick() {
|
|
2474
|
+
onClick: function onClick(reactEvent) {
|
|
2475
|
+
var _getCellHyperlink, _toolbarCustomConfig$, _settings$hooks, _settings$hooks$onHyp;
|
|
2476
|
+
var payload = (_getCellHyperlink = core.getCellHyperlink(context, r, c)) === null || _getCellHyperlink === void 0 ? void 0 : _getCellHyperlink.payload;
|
|
2477
|
+
var clickInfo = {
|
|
2478
|
+
linkType: originType,
|
|
2479
|
+
linkAddress: originAddress,
|
|
2480
|
+
payload: payload,
|
|
2481
|
+
position: {
|
|
2482
|
+
r: r,
|
|
2483
|
+
c: c,
|
|
2484
|
+
sheetId: context.currentSheetId
|
|
2485
|
+
},
|
|
2486
|
+
event: reactEvent
|
|
2487
|
+
};
|
|
2488
|
+
var userResult = toolbarCustomConfig === null || toolbarCustomConfig === void 0 ? void 0 : (_toolbarCustomConfig$ = toolbarCustomConfig.onClick) === null || _toolbarCustomConfig$ === void 0 ? void 0 : _toolbarCustomConfig$.call(toolbarCustomConfig, clickInfo);
|
|
2489
|
+
settings === null || settings === void 0 ? void 0 : (_settings$hooks = settings.hooks) === null || _settings$hooks === void 0 ? void 0 : (_settings$hooks$onHyp = _settings$hooks.onHyperlinkClick) === null || _settings$hooks$onHyp === void 0 ? void 0 : _settings$hooks$onHyp.call(_settings$hooks, clickInfo);
|
|
2490
|
+
if (userResult === false) {
|
|
2491
|
+
hideLinkCard();
|
|
2492
|
+
return;
|
|
2493
|
+
}
|
|
2404
2494
|
setContext(function (draftCtx) {
|
|
2405
|
-
return core.goToLink(draftCtx, r, c,
|
|
2495
|
+
return core.goToLink(draftCtx, r, c, originType, originAddress, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
2406
2496
|
});
|
|
2407
2497
|
}
|
|
2408
|
-
},
|
|
2409
|
-
linkAddress:
|
|
2498
|
+
}, originType === "webpage" ? insertLink.openLink : core.replaceHtml(insertLink.goTo, {
|
|
2499
|
+
linkAddress: originAddress
|
|
2410
2500
|
})), context.allowEdit === true && /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2411
2501
|
className: "divider"
|
|
2412
|
-
}), context.allowEdit === true &&
|
|
2502
|
+
}), context.allowEdit === true && originType === "webpage" && renderToolbarButton("copy", function () {
|
|
2413
2503
|
navigator.clipboard.writeText(originAddress);
|
|
2414
2504
|
hideLinkCard();
|
|
2415
2505
|
}), context.allowEdit === true && renderToolbarButton("pencil", function () {
|
|
@@ -2488,18 +2578,23 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2488
2578
|
className: "leankylin-link-modify-select",
|
|
2489
2579
|
value: linkType,
|
|
2490
2580
|
onChange: function onChange(e) {
|
|
2491
|
-
|
|
2581
|
+
var next = e.target.value;
|
|
2582
|
+
var nextCustomConfig = customLinkTypeMap[next];
|
|
2583
|
+
if (next === "sheet") {
|
|
2492
2584
|
if (!linkText) {
|
|
2493
2585
|
setLinkText(context.luckysheetfile[0].name);
|
|
2494
2586
|
}
|
|
2495
2587
|
setLinkAddress(context.luckysheetfile[0].name);
|
|
2588
|
+
} else if (nextCustomConfig) {
|
|
2589
|
+
setLinkAddress("");
|
|
2590
|
+
setCustomPayload({});
|
|
2496
2591
|
} else {
|
|
2497
2592
|
setLinkAddress("");
|
|
2498
2593
|
}
|
|
2499
|
-
if (
|
|
2500
|
-
setLinkType(
|
|
2594
|
+
if (next === "cellrange") setRangeModalVisible(true);
|
|
2595
|
+
setLinkType(next);
|
|
2501
2596
|
}
|
|
2502
|
-
},
|
|
2597
|
+
}, mergedLinkTypeList.map(function (type) {
|
|
2503
2598
|
return /*#__PURE__*/React__default['default'].createElement("option", {
|
|
2504
2599
|
key: type.value,
|
|
2505
2600
|
value: type.value
|
|
@@ -2545,11 +2640,63 @@ var LinkEditCard = function LinkEditCard(_ref) {
|
|
|
2545
2640
|
key: sheet.id,
|
|
2546
2641
|
value: sheet.name
|
|
2547
2642
|
}, sheet.name);
|
|
2643
|
+
})), tooltip)), currentCustomConfig && ( /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, currentCustomConfig.render ? currentCustomConfig.render({
|
|
2644
|
+
value: linkAddress,
|
|
2645
|
+
position: {
|
|
2646
|
+
r: r,
|
|
2647
|
+
c: c
|
|
2648
|
+
},
|
|
2649
|
+
onChange: function onChange(v) {
|
|
2650
|
+
return setLinkAddress(v);
|
|
2651
|
+
},
|
|
2652
|
+
setPayload: function setPayload(next) {
|
|
2653
|
+
setCustomPayload(function (prev) {
|
|
2654
|
+
return typeof next === "function" ? next(prev) : next;
|
|
2655
|
+
});
|
|
2656
|
+
},
|
|
2657
|
+
payload: customPayload,
|
|
2658
|
+
ctx: {
|
|
2659
|
+
context: context,
|
|
2660
|
+
setContext: setContext,
|
|
2661
|
+
settings: settings
|
|
2662
|
+
}
|
|
2663
|
+
}) : ( /*#__PURE__*/React__default['default'].createElement("input", {
|
|
2664
|
+
className: "leankylin-link-modify-input ".concat(canSubmit ? "" : "error-input"),
|
|
2665
|
+
spellCheck: "false",
|
|
2666
|
+
value: linkAddress,
|
|
2667
|
+
onChange: function onChange(e) {
|
|
2668
|
+
return setLinkAddress(e.target.value);
|
|
2669
|
+
}
|
|
2548
2670
|
})), tooltip))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
2549
2671
|
className: "modal-footer"
|
|
2550
2672
|
}, renderBottomButton(function () {
|
|
2551
|
-
if (!
|
|
2673
|
+
if (!canSubmit) return;
|
|
2552
2674
|
___default['default'].set(refs.globalCache, "linkCard.mouseEnter", false);
|
|
2675
|
+
if (currentCustomConfig === null || currentCustomConfig === void 0 ? void 0 : currentCustomConfig.onSave) {
|
|
2676
|
+
var origin = function () {
|
|
2677
|
+
var o = core.getCellHyperlink(context, r, c);
|
|
2678
|
+
return o ? {
|
|
2679
|
+
linkType: o.linkType,
|
|
2680
|
+
linkAddress: o.linkAddress,
|
|
2681
|
+
payload: o.payload
|
|
2682
|
+
} : undefined;
|
|
2683
|
+
}();
|
|
2684
|
+
var saved = currentCustomConfig.onSave({
|
|
2685
|
+
linkText: linkText,
|
|
2686
|
+
linkAddress: linkAddress,
|
|
2687
|
+
position: {
|
|
2688
|
+
r: r,
|
|
2689
|
+
c: c
|
|
2690
|
+
},
|
|
2691
|
+
origin: origin
|
|
2692
|
+
});
|
|
2693
|
+
if (!saved) return;
|
|
2694
|
+
setContext(function (draftCtx) {
|
|
2695
|
+
var _saved$payload;
|
|
2696
|
+
return core.saveHyperlink(draftCtx, r, c, linkText || saved.linkAddress, saved.linkType, saved.linkAddress, _objectSpread2(_objectSpread2({}, customPayload), (_saved$payload = saved.payload) !== null && _saved$payload !== void 0 ? _saved$payload : {}));
|
|
2697
|
+
});
|
|
2698
|
+
return;
|
|
2699
|
+
}
|
|
2553
2700
|
setContext(function (draftCtx) {
|
|
2554
2701
|
return core.saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
|
|
2555
2702
|
});
|
|
@@ -4360,9 +4507,7 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4360
4507
|
}, [setContext, refs.globalCache, refs.cellInput, refs.cellArea, refs.fxInput, refs.canvas]);
|
|
4361
4508
|
var debounceMouseMove = ahooks.useMemoizedFn(function (e) {
|
|
4362
4509
|
var nativeEvent = e.nativeEvent;
|
|
4363
|
-
|
|
4364
|
-
core.handleCellAreaMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4365
|
-
});
|
|
4510
|
+
core.handleCellAreaMouseMove(context, refs.globalCache, nativeEvent, refs.cellArea.current);
|
|
4366
4511
|
});
|
|
4367
4512
|
var debounceDragOver = ahooks.useMemoizedFn(function (e) {
|
|
4368
4513
|
var nativeEvent = e.nativeEvent;
|
|
@@ -4428,16 +4573,53 @@ var SheetOverlay = function SheetOverlay() {
|
|
|
4428
4573
|
if (link == null) {
|
|
4429
4574
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false);
|
|
4430
4575
|
} else {
|
|
4576
|
+
var _settings$customLinkT, _customConfig$onHover, _settings$hooks, _settings$hooks$onHyp;
|
|
4431
4577
|
core.showLinkCard(ctx, rc.r, rc.c, false);
|
|
4432
4578
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false, true);
|
|
4579
|
+
var payload = link.payload;
|
|
4580
|
+
var customConfigMap = ((_settings$customLinkT = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT !== void 0 ? _settings$customLinkT : []).reduce(function (acc, it) {
|
|
4581
|
+
if (it.type) acc[it.type] = it;
|
|
4582
|
+
return acc;
|
|
4583
|
+
}, {});
|
|
4584
|
+
var customConfig = customConfigMap[link.linkType];
|
|
4585
|
+
var hoverInfo = {
|
|
4586
|
+
linkType: link.linkType,
|
|
4587
|
+
linkAddress: link.linkAddress,
|
|
4588
|
+
payload: payload,
|
|
4589
|
+
position: {
|
|
4590
|
+
r: rc.r,
|
|
4591
|
+
c: rc.c,
|
|
4592
|
+
sheetId: ctx.currentSheetId
|
|
4593
|
+
},
|
|
4594
|
+
event: e
|
|
4595
|
+
};
|
|
4596
|
+
customConfig === null || customConfig === void 0 ? void 0 : (_customConfig$onHover = customConfig.onHover) === null || _customConfig$onHover === void 0 ? void 0 : _customConfig$onHover.call(customConfig, hoverInfo);
|
|
4597
|
+
settings === null || settings === void 0 ? void 0 : (_settings$hooks = settings.hooks) === null || _settings$hooks === void 0 ? void 0 : (_settings$hooks$onHyp = _settings$hooks.onHyperlinkHover) === null || _settings$hooks$onHyp === void 0 ? void 0 : _settings$hooks$onHyp.call(_settings$hooks, hoverInfo);
|
|
4433
4598
|
}
|
|
4434
|
-
}, [debouncedShowLinkCard]);
|
|
4599
|
+
}, [debouncedShowLinkCard, settings]);
|
|
4600
|
+
var lastHoverCellRef = React.useRef(null);
|
|
4435
4601
|
var onMouseMove = React.useCallback(function (nativeEvent) {
|
|
4602
|
+
var _gc$commentBox, _gc$commentBox2, _gc$searchDialog, _gc$linkCard;
|
|
4603
|
+
var container = containerRef.current;
|
|
4604
|
+
var scrollX = refs.scrollbarX.current;
|
|
4605
|
+
var scrollY = refs.scrollbarY.current;
|
|
4606
|
+
if (!container || !scrollX || !scrollY) return;
|
|
4607
|
+
var gc = refs.globalCache;
|
|
4608
|
+
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;
|
|
4609
|
+
if (!isInteracting) {
|
|
4610
|
+
var rc = core.getCellRowColumn(context, nativeEvent, container, scrollX, scrollY);
|
|
4611
|
+
var last = lastHoverCellRef.current;
|
|
4612
|
+
var hoverChanged = rc == null ? last != null : last == null || last.r !== rc.r || last.c !== rc.c;
|
|
4613
|
+
if (!hoverChanged) {
|
|
4614
|
+
return;
|
|
4615
|
+
}
|
|
4616
|
+
lastHoverCellRef.current = rc !== null && rc !== void 0 ? rc : null;
|
|
4617
|
+
}
|
|
4436
4618
|
setContext(function (draftCtx) {
|
|
4437
|
-
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent,
|
|
4438
|
-
core.handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current,
|
|
4619
|
+
overShowLinkCard(draftCtx, refs.globalCache, nativeEvent, container, scrollX, scrollY);
|
|
4620
|
+
core.handleOverlayMouseMove(draftCtx, refs.globalCache, nativeEvent, refs.cellInput.current, scrollX, scrollY, container, refs.fxInput.current);
|
|
4439
4621
|
});
|
|
4440
|
-
}, [overShowLinkCard, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4622
|
+
}, [overShowLinkCard, context, refs.cellInput, refs.fxInput, refs.globalCache, refs.scrollbarX, refs.scrollbarY, setContext]);
|
|
4441
4623
|
var onMouseUp = React.useCallback(function (nativeEvent) {
|
|
4442
4624
|
setContext(function (draftCtx) {
|
|
4443
4625
|
try {
|
|
@@ -5024,9 +5206,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5024
5206
|
return false;
|
|
5025
5207
|
}
|
|
5026
5208
|
var onWheel = React.useCallback(function (e) {
|
|
5027
|
-
|
|
5028
|
-
core.handleGlobalWheel(draftCtx, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5029
|
-
});
|
|
5209
|
+
core.handleGlobalWheel(context, e, refs.globalCache, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
5030
5210
|
if (e.deltaY === 0 && e.deltaX === 0) {
|
|
5031
5211
|
return;
|
|
5032
5212
|
}
|
|
@@ -5047,7 +5227,7 @@ var Sheet = function Sheet(_ref) {
|
|
|
5047
5227
|
e.preventDefault();
|
|
5048
5228
|
}
|
|
5049
5229
|
}
|
|
5050
|
-
}, [refs.globalCache, refs.scrollbarX, refs.scrollbarY
|
|
5230
|
+
}, [context, refs.globalCache, refs.scrollbarX, refs.scrollbarY]);
|
|
5051
5231
|
React.useEffect(function () {
|
|
5052
5232
|
var container = containerRef.current;
|
|
5053
5233
|
container === null || container === void 0 ? void 0 : container.addEventListener("wheel", onWheel);
|
|
@@ -11968,6 +12148,7 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
11968
12148
|
_useState2 = _slicedToArray(_useState, 2),
|
|
11969
12149
|
context = _useState2[0],
|
|
11970
12150
|
setContext = _useState2[1];
|
|
12151
|
+
var contextRef = React.useRef(context);
|
|
11971
12152
|
var _useState3 = React.useState(null),
|
|
11972
12153
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
11973
12154
|
moreToolbarItems = _useState4[0],
|
|
@@ -12072,64 +12253,81 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
12072
12253
|
}
|
|
12073
12254
|
return cellData;
|
|
12074
12255
|
}
|
|
12075
|
-
var setContextWithProduce =
|
|
12256
|
+
var setContextWithProduce = ahooks.useMemoizedFn(function (recipe) {
|
|
12076
12257
|
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
|
|
12258
|
+
var ctx_ = contextRef.current;
|
|
12259
|
+
var _produceWithPatches = produce.produceWithPatches(ctx_, concatProducer(recipe, triggerGroupValuesRefresh)),
|
|
12260
|
+
_produceWithPatches2 = _slicedToArray(_produceWithPatches, 3),
|
|
12261
|
+
result = _produceWithPatches2[0],
|
|
12262
|
+
patches = _produceWithPatches2[1],
|
|
12263
|
+
inversePatches = _produceWithPatches2[2];
|
|
12264
|
+
if (patches.length > 0 && !options.noHistory) {
|
|
12265
|
+
if (options.logPatch) {
|
|
12266
|
+
console.info("patch", patches);
|
|
12267
|
+
}
|
|
12268
|
+
var filteredPatches = core.filterPatch(patches);
|
|
12269
|
+
var filteredInversePatches = core.filterPatch(inversePatches);
|
|
12270
|
+
if (filteredInversePatches.length > 0) {
|
|
12271
|
+
options.id = ctx_.currentSheetId;
|
|
12272
|
+
if (options.deleteSheetOp) {
|
|
12273
|
+
var target = ctx_.luckysheetfile.filter(function (sheet) {
|
|
12274
|
+
var _options$deleteSheetO;
|
|
12275
|
+
return sheet.id === ((_options$deleteSheetO = options.deleteSheetOp) === null || _options$deleteSheetO === void 0 ? void 0 : _options$deleteSheetO.id);
|
|
12120
12276
|
});
|
|
12121
|
-
|
|
12122
|
-
|
|
12123
|
-
|
|
12124
|
-
|
|
12125
|
-
|
|
12126
|
-
|
|
12127
|
-
|
|
12277
|
+
if (target) {
|
|
12278
|
+
var index = core.getSheetIndex(ctx_, options.deleteSheetOp.id);
|
|
12279
|
+
options.deletedSheet = {
|
|
12280
|
+
id: options.deleteSheetOp.id,
|
|
12281
|
+
index: index,
|
|
12282
|
+
value: ___default['default'].cloneDeep(ctx_.luckysheetfile[index])
|
|
12283
|
+
};
|
|
12284
|
+
options.deletedSheet.value.celldata = dataToCelldata(options.deletedSheet.value.data);
|
|
12285
|
+
delete options.deletedSheet.value.data;
|
|
12286
|
+
options.deletedSheet.value.status = 0;
|
|
12287
|
+
filteredInversePatches = [{
|
|
12288
|
+
op: "add",
|
|
12289
|
+
path: ["luckysheetfile", 0],
|
|
12290
|
+
value: options.deletedSheet.value
|
|
12291
|
+
}];
|
|
12292
|
+
}
|
|
12293
|
+
} else if (options.addSheetOp) {
|
|
12294
|
+
options.addSheet = {};
|
|
12295
|
+
options.addSheet.id = result.luckysheetfile[result.luckysheetfile.length - 1].id;
|
|
12128
12296
|
}
|
|
12297
|
+
globalCache.current.undoList.push({
|
|
12298
|
+
patches: filteredPatches,
|
|
12299
|
+
inversePatches: filteredInversePatches,
|
|
12300
|
+
options: options
|
|
12301
|
+
});
|
|
12302
|
+
globalCache.current.redoList = [];
|
|
12303
|
+
emitOp(result, filteredPatches, options);
|
|
12129
12304
|
}
|
|
12305
|
+
} else {
|
|
12306
|
+
var _patches$, _patches$$value, _ctx_$luckysheetfile;
|
|
12307
|
+
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)) {
|
|
12308
|
+
reduceUndoList(result, ctx_);
|
|
12309
|
+
}
|
|
12310
|
+
}
|
|
12311
|
+
contextRef.current = result;
|
|
12312
|
+
setContext(function (prev) {
|
|
12313
|
+
if (prev === ctx_) {
|
|
12314
|
+
return result;
|
|
12315
|
+
}
|
|
12316
|
+
var merged = produce.applyPatches(prev, patches);
|
|
12317
|
+
contextRef.current = merged;
|
|
12318
|
+
return merged;
|
|
12319
|
+
});
|
|
12320
|
+
});
|
|
12321
|
+
var setScrollContext = ahooks.useMemoizedFn(function (recipe) {
|
|
12322
|
+
setContext(function (ctx_) {
|
|
12323
|
+
var result = produce__default['default'](ctx_, recipe);
|
|
12324
|
+
if (result === ctx_) {
|
|
12325
|
+
return ctx_;
|
|
12326
|
+
}
|
|
12327
|
+
contextRef.current = result;
|
|
12130
12328
|
return result;
|
|
12131
12329
|
});
|
|
12132
|
-
}
|
|
12330
|
+
});
|
|
12133
12331
|
var handleUndo = React.useCallback(function () {
|
|
12134
12332
|
var history = globalCache.current.undoList.pop();
|
|
12135
12333
|
if (history) {
|
|
@@ -12202,12 +12400,13 @@ var Workbook = /*#__PURE__*/React__default['default'].forwardRef(function (_ref,
|
|
|
12202
12400
|
return {
|
|
12203
12401
|
context: context,
|
|
12204
12402
|
setContext: setContextWithProduce,
|
|
12403
|
+
setScrollContext: setScrollContext,
|
|
12205
12404
|
settings: mergedSettings,
|
|
12206
12405
|
handleUndo: handleUndo,
|
|
12207
12406
|
handleRedo: handleRedo,
|
|
12208
12407
|
refs: refs
|
|
12209
12408
|
};
|
|
12210
|
-
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce]);
|
|
12409
|
+
}, [context, handleRedo, handleUndo, mergedSettings, refs, setContextWithProduce, setScrollContext]);
|
|
12211
12410
|
React.useEffect(function () {
|
|
12212
12411
|
if (!___default['default'].isEmpty(context.luckysheetfile)) {
|
|
12213
12412
|
onChange === null || onChange === void 0 ? void 0 : onChange(context.luckysheetfile);
|