@leankylin-sheet/react 6.0.0 → 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/index.esm.js +184 -18
- package/dist/index.js +183 -17
- package/dist/index.umd.js +183 -17
- package/dist/index.umd.min.js +1 -1
- package/package.json +3 -3
package/dist/index.umd.js
CHANGED
|
@@ -21347,7 +21347,7 @@
|
|
|
21347
21347
|
c = _ref.c,
|
|
21348
21348
|
rc = _ref.rc,
|
|
21349
21349
|
originText = _ref.originText,
|
|
21350
|
-
|
|
21350
|
+
_originType = _ref.originType,
|
|
21351
21351
|
originAddress = _ref.originAddress,
|
|
21352
21352
|
isEditing = _ref.isEditing,
|
|
21353
21353
|
position = _ref.position,
|
|
@@ -21355,7 +21355,8 @@
|
|
|
21355
21355
|
var _useContext = React.useContext(WorkbookContext),
|
|
21356
21356
|
context = _useContext.context,
|
|
21357
21357
|
setContext = _useContext.setContext,
|
|
21358
|
-
refs = _useContext.refs
|
|
21358
|
+
refs = _useContext.refs,
|
|
21359
|
+
settings = _useContext.settings;
|
|
21359
21360
|
var _useState = React.useState(originText),
|
|
21360
21361
|
_useState2 = _slicedToArray(_useState, 2),
|
|
21361
21362
|
linkText = _useState2[0],
|
|
@@ -21364,10 +21365,19 @@
|
|
|
21364
21365
|
_useState4 = _slicedToArray(_useState3, 2),
|
|
21365
21366
|
linkAddress = _useState4[0],
|
|
21366
21367
|
setLinkAddress = _useState4[1];
|
|
21368
|
+
var originType = _originType || settings.detailLinkType || "webpage";
|
|
21367
21369
|
var _useState5 = React.useState(originType),
|
|
21368
21370
|
_useState6 = _slicedToArray(_useState5, 2),
|
|
21369
21371
|
linkType = _useState6[0],
|
|
21370
21372
|
setLinkType = _useState6[1];
|
|
21373
|
+
var _useState7 = React.useState(function () {
|
|
21374
|
+
var _origin$payload;
|
|
21375
|
+
var origin = core.getCellHyperlink(context, r, c);
|
|
21376
|
+
return (_origin$payload = origin === null || origin === void 0 ? void 0 : origin.payload) !== null && _origin$payload !== void 0 ? _origin$payload : {};
|
|
21377
|
+
}),
|
|
21378
|
+
_useState8 = _slicedToArray(_useState7, 2),
|
|
21379
|
+
customPayload = _useState8[0],
|
|
21380
|
+
setCustomPayload = _useState8[1];
|
|
21371
21381
|
var _locale = core.locale(context),
|
|
21372
21382
|
insertLink = _locale.insertLink,
|
|
21373
21383
|
linkTypeList = _locale.linkTypeList,
|
|
@@ -21378,9 +21388,65 @@
|
|
|
21378
21388
|
}]));
|
|
21379
21389
|
var skipCellRangeSet = React.useRef(true);
|
|
21380
21390
|
var isLinkAddressValid = core.isLinkValid(context, linkType, linkAddress);
|
|
21381
|
-
var
|
|
21382
|
-
|
|
21383
|
-
|
|
21391
|
+
var mergedLinkTypeList = React.useMemo(function () {
|
|
21392
|
+
var _settings$customLinkT;
|
|
21393
|
+
var customs = (_settings$customLinkT = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT !== void 0 ? _settings$customLinkT : [];
|
|
21394
|
+
if (customs.length === 0) return linkTypeList;
|
|
21395
|
+
var builtinTypes = new Set(linkTypeList.map(function (it) {
|
|
21396
|
+
return it.value;
|
|
21397
|
+
}));
|
|
21398
|
+
var extra = customs.filter(function (it) {
|
|
21399
|
+
return it.type && !builtinTypes.has(it.type);
|
|
21400
|
+
}).map(function (it) {
|
|
21401
|
+
return {
|
|
21402
|
+
text: it.text,
|
|
21403
|
+
value: it.type
|
|
21404
|
+
};
|
|
21405
|
+
});
|
|
21406
|
+
return [].concat(_toConsumableArray(extra), _toConsumableArray(linkTypeList));
|
|
21407
|
+
}, [settings === null || settings === void 0 ? void 0 : settings.customLinkTypes, linkTypeList]);
|
|
21408
|
+
var customLinkTypeMap = React.useMemo(function () {
|
|
21409
|
+
var _settings$customLinkT2;
|
|
21410
|
+
var m = {};
|
|
21411
|
+
((_settings$customLinkT2 = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT2 !== void 0 ? _settings$customLinkT2 : []).forEach(function (it) {
|
|
21412
|
+
if (it.type) m[it.type] = it;
|
|
21413
|
+
});
|
|
21414
|
+
return m;
|
|
21415
|
+
}, [settings === null || settings === void 0 ? void 0 : settings.customLinkTypes]);
|
|
21416
|
+
var currentCustomConfig = customLinkTypeMap[linkType];
|
|
21417
|
+
var isCustomTypeValid = React.useMemo(function () {
|
|
21418
|
+
if (!currentCustomConfig) return true;
|
|
21419
|
+
if (!currentCustomConfig.onSave) return true;
|
|
21420
|
+
var next = currentCustomConfig.onSave({
|
|
21421
|
+
linkText: linkText,
|
|
21422
|
+
linkAddress: linkAddress,
|
|
21423
|
+
position: {
|
|
21424
|
+
r: r,
|
|
21425
|
+
c: c
|
|
21426
|
+
},
|
|
21427
|
+
origin: function () {
|
|
21428
|
+
var o = core.getCellHyperlink(context, r, c);
|
|
21429
|
+
return o ? {
|
|
21430
|
+
linkType: o.linkType,
|
|
21431
|
+
linkAddress: o.linkAddress,
|
|
21432
|
+
payload: o.payload
|
|
21433
|
+
} : undefined;
|
|
21434
|
+
}()
|
|
21435
|
+
});
|
|
21436
|
+
return next !== undefined;
|
|
21437
|
+
}, [currentCustomConfig, linkText, linkAddress, r, c, context]);
|
|
21438
|
+
var canSubmit = !currentCustomConfig || isCustomTypeValid ? isLinkAddressValid.isValid : false;
|
|
21439
|
+
var tooltip = function () {
|
|
21440
|
+
var text;
|
|
21441
|
+
if (currentCustomConfig) {
|
|
21442
|
+
text = isCustomTypeValid ? "" : insertLink.tooltipInfo1 || "";
|
|
21443
|
+
} else {
|
|
21444
|
+
text = isLinkAddressValid.tooltip;
|
|
21445
|
+
}
|
|
21446
|
+
return /*#__PURE__*/React__default['default'].createElement("div", {
|
|
21447
|
+
className: "validation-input-tip"
|
|
21448
|
+
}, text);
|
|
21449
|
+
}();
|
|
21384
21450
|
var hideLinkCard = React.useCallback(function () {
|
|
21385
21451
|
lodash.set(refs.globalCache, "linkCard.mouseEnter", false);
|
|
21386
21452
|
setContext(function (draftCtx) {
|
|
@@ -21442,10 +21508,13 @@
|
|
|
21442
21508
|
}));
|
|
21443
21509
|
}, []);
|
|
21444
21510
|
React.useLayoutEffect(function () {
|
|
21511
|
+
var _origin$payload2;
|
|
21445
21512
|
setLinkAddress(originAddress);
|
|
21446
21513
|
setLinkText(originText);
|
|
21447
21514
|
setLinkType(originType);
|
|
21448
|
-
|
|
21515
|
+
var origin = core.getCellHyperlink(context, r, c);
|
|
21516
|
+
setCustomPayload((_origin$payload2 = origin === null || origin === void 0 ? void 0 : origin.payload) !== null && _origin$payload2 !== void 0 ? _origin$payload2 : {});
|
|
21517
|
+
}, [rc, originAddress, originText, originType, r, c, context]);
|
|
21449
21518
|
React.useLayoutEffect(function () {
|
|
21450
21519
|
if (selectingCellRange) {
|
|
21451
21520
|
skipCellRangeSet.current = true;
|
|
@@ -21464,6 +21533,7 @@
|
|
|
21464
21533
|
}
|
|
21465
21534
|
}, [context, selectingCellRange]);
|
|
21466
21535
|
if (!isEditing) {
|
|
21536
|
+
var toolbarCustomConfig = customLinkTypeMap[originType];
|
|
21467
21537
|
return /*#__PURE__*/React__default['default'].createElement("div", _objectSpread2(_objectSpread2({}, containerEvent), {}, {
|
|
21468
21538
|
onKeyDown: function onKeyDown(e) {
|
|
21469
21539
|
e.stopPropagation();
|
|
@@ -21475,16 +21545,35 @@
|
|
|
21475
21545
|
}
|
|
21476
21546
|
}), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
21477
21547
|
className: "link-content",
|
|
21478
|
-
onClick: function onClick() {
|
|
21548
|
+
onClick: function onClick(reactEvent) {
|
|
21549
|
+
var _getCellHyperlink, _toolbarCustomConfig$, _settings$hooks, _settings$hooks$onHyp;
|
|
21550
|
+
var payload = (_getCellHyperlink = core.getCellHyperlink(context, r, c)) === null || _getCellHyperlink === void 0 ? void 0 : _getCellHyperlink.payload;
|
|
21551
|
+
var clickInfo = {
|
|
21552
|
+
linkType: originType,
|
|
21553
|
+
linkAddress: originAddress,
|
|
21554
|
+
payload: payload,
|
|
21555
|
+
position: {
|
|
21556
|
+
r: r,
|
|
21557
|
+
c: c,
|
|
21558
|
+
sheetId: context.currentSheetId
|
|
21559
|
+
},
|
|
21560
|
+
event: reactEvent
|
|
21561
|
+
};
|
|
21562
|
+
var userResult = toolbarCustomConfig === null || toolbarCustomConfig === void 0 ? void 0 : (_toolbarCustomConfig$ = toolbarCustomConfig.onClick) === null || _toolbarCustomConfig$ === void 0 ? void 0 : _toolbarCustomConfig$.call(toolbarCustomConfig, clickInfo);
|
|
21563
|
+
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);
|
|
21564
|
+
if (userResult === false) {
|
|
21565
|
+
hideLinkCard();
|
|
21566
|
+
return;
|
|
21567
|
+
}
|
|
21479
21568
|
setContext(function (draftCtx) {
|
|
21480
|
-
return core.goToLink(draftCtx, r, c,
|
|
21569
|
+
return core.goToLink(draftCtx, r, c, originType, originAddress, refs.scrollbarX.current, refs.scrollbarY.current);
|
|
21481
21570
|
});
|
|
21482
21571
|
}
|
|
21483
|
-
},
|
|
21484
|
-
linkAddress:
|
|
21572
|
+
}, originType === "webpage" ? insertLink.openLink : core.replaceHtml(insertLink.goTo, {
|
|
21573
|
+
linkAddress: originAddress
|
|
21485
21574
|
})), context.allowEdit === true && /*#__PURE__*/React__default['default'].createElement("div", {
|
|
21486
21575
|
className: "divider"
|
|
21487
|
-
}), context.allowEdit === true &&
|
|
21576
|
+
}), context.allowEdit === true && originType === "webpage" && renderToolbarButton("copy", function () {
|
|
21488
21577
|
navigator.clipboard.writeText(originAddress);
|
|
21489
21578
|
hideLinkCard();
|
|
21490
21579
|
}), context.allowEdit === true && renderToolbarButton("pencil", function () {
|
|
@@ -21563,18 +21652,23 @@
|
|
|
21563
21652
|
className: "leankylin-link-modify-select",
|
|
21564
21653
|
value: linkType,
|
|
21565
21654
|
onChange: function onChange(e) {
|
|
21566
|
-
|
|
21655
|
+
var next = e.target.value;
|
|
21656
|
+
var nextCustomConfig = customLinkTypeMap[next];
|
|
21657
|
+
if (next === "sheet") {
|
|
21567
21658
|
if (!linkText) {
|
|
21568
21659
|
setLinkText(context.luckysheetfile[0].name);
|
|
21569
21660
|
}
|
|
21570
21661
|
setLinkAddress(context.luckysheetfile[0].name);
|
|
21662
|
+
} else if (nextCustomConfig) {
|
|
21663
|
+
setLinkAddress("");
|
|
21664
|
+
setCustomPayload({});
|
|
21571
21665
|
} else {
|
|
21572
21666
|
setLinkAddress("");
|
|
21573
21667
|
}
|
|
21574
|
-
if (
|
|
21575
|
-
setLinkType(
|
|
21668
|
+
if (next === "cellrange") setRangeModalVisible(true);
|
|
21669
|
+
setLinkType(next);
|
|
21576
21670
|
}
|
|
21577
|
-
},
|
|
21671
|
+
}, mergedLinkTypeList.map(function (type) {
|
|
21578
21672
|
return /*#__PURE__*/React__default['default'].createElement("option", {
|
|
21579
21673
|
key: type.value,
|
|
21580
21674
|
value: type.value
|
|
@@ -21620,11 +21714,63 @@
|
|
|
21620
21714
|
key: sheet.id,
|
|
21621
21715
|
value: sheet.name
|
|
21622
21716
|
}, sheet.name);
|
|
21717
|
+
})), tooltip)), currentCustomConfig && ( /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, currentCustomConfig.render ? currentCustomConfig.render({
|
|
21718
|
+
value: linkAddress,
|
|
21719
|
+
position: {
|
|
21720
|
+
r: r,
|
|
21721
|
+
c: c
|
|
21722
|
+
},
|
|
21723
|
+
onChange: function onChange(v) {
|
|
21724
|
+
return setLinkAddress(v);
|
|
21725
|
+
},
|
|
21726
|
+
setPayload: function setPayload(next) {
|
|
21727
|
+
setCustomPayload(function (prev) {
|
|
21728
|
+
return typeof next === "function" ? next(prev) : next;
|
|
21729
|
+
});
|
|
21730
|
+
},
|
|
21731
|
+
payload: customPayload,
|
|
21732
|
+
ctx: {
|
|
21733
|
+
context: context,
|
|
21734
|
+
setContext: setContext,
|
|
21735
|
+
settings: settings
|
|
21736
|
+
}
|
|
21737
|
+
}) : ( /*#__PURE__*/React__default['default'].createElement("input", {
|
|
21738
|
+
className: "leankylin-link-modify-input ".concat(canSubmit ? "" : "error-input"),
|
|
21739
|
+
spellCheck: "false",
|
|
21740
|
+
value: linkAddress,
|
|
21741
|
+
onChange: function onChange(e) {
|
|
21742
|
+
return setLinkAddress(e.target.value);
|
|
21743
|
+
}
|
|
21623
21744
|
})), tooltip))), /*#__PURE__*/React__default['default'].createElement("div", {
|
|
21624
21745
|
className: "modal-footer"
|
|
21625
21746
|
}, renderBottomButton(function () {
|
|
21626
|
-
if (!
|
|
21747
|
+
if (!canSubmit) return;
|
|
21627
21748
|
lodash.set(refs.globalCache, "linkCard.mouseEnter", false);
|
|
21749
|
+
if (currentCustomConfig === null || currentCustomConfig === void 0 ? void 0 : currentCustomConfig.onSave) {
|
|
21750
|
+
var origin = function () {
|
|
21751
|
+
var o = core.getCellHyperlink(context, r, c);
|
|
21752
|
+
return o ? {
|
|
21753
|
+
linkType: o.linkType,
|
|
21754
|
+
linkAddress: o.linkAddress,
|
|
21755
|
+
payload: o.payload
|
|
21756
|
+
} : undefined;
|
|
21757
|
+
}();
|
|
21758
|
+
var saved = currentCustomConfig.onSave({
|
|
21759
|
+
linkText: linkText,
|
|
21760
|
+
linkAddress: linkAddress,
|
|
21761
|
+
position: {
|
|
21762
|
+
r: r,
|
|
21763
|
+
c: c
|
|
21764
|
+
},
|
|
21765
|
+
origin: origin
|
|
21766
|
+
});
|
|
21767
|
+
if (!saved) return;
|
|
21768
|
+
setContext(function (draftCtx) {
|
|
21769
|
+
var _saved$payload;
|
|
21770
|
+
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 : {}));
|
|
21771
|
+
});
|
|
21772
|
+
return;
|
|
21773
|
+
}
|
|
21628
21774
|
setContext(function (draftCtx) {
|
|
21629
21775
|
return core.saveHyperlink(draftCtx, r, c, linkText, linkType, linkAddress);
|
|
21630
21776
|
});
|
|
@@ -23501,10 +23647,30 @@
|
|
|
23501
23647
|
if (link == null) {
|
|
23502
23648
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false);
|
|
23503
23649
|
} else {
|
|
23650
|
+
var _settings$customLinkT, _customConfig$onHover, _settings$hooks, _settings$hooks$onHyp;
|
|
23504
23651
|
core.showLinkCard(ctx, rc.r, rc.c, false);
|
|
23505
23652
|
debouncedShowLinkCard(globalCache, rc.r, rc.c, false, true);
|
|
23653
|
+
var payload = link.payload;
|
|
23654
|
+
var customConfigMap = ((_settings$customLinkT = settings === null || settings === void 0 ? void 0 : settings.customLinkTypes) !== null && _settings$customLinkT !== void 0 ? _settings$customLinkT : []).reduce(function (acc, it) {
|
|
23655
|
+
if (it.type) acc[it.type] = it;
|
|
23656
|
+
return acc;
|
|
23657
|
+
}, {});
|
|
23658
|
+
var customConfig = customConfigMap[link.linkType];
|
|
23659
|
+
var hoverInfo = {
|
|
23660
|
+
linkType: link.linkType,
|
|
23661
|
+
linkAddress: link.linkAddress,
|
|
23662
|
+
payload: payload,
|
|
23663
|
+
position: {
|
|
23664
|
+
r: rc.r,
|
|
23665
|
+
c: rc.c,
|
|
23666
|
+
sheetId: ctx.currentSheetId
|
|
23667
|
+
},
|
|
23668
|
+
event: e
|
|
23669
|
+
};
|
|
23670
|
+
customConfig === null || customConfig === void 0 ? void 0 : (_customConfig$onHover = customConfig.onHover) === null || _customConfig$onHover === void 0 ? void 0 : _customConfig$onHover.call(customConfig, hoverInfo);
|
|
23671
|
+
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);
|
|
23506
23672
|
}
|
|
23507
|
-
}, [debouncedShowLinkCard]);
|
|
23673
|
+
}, [debouncedShowLinkCard, settings]);
|
|
23508
23674
|
var lastHoverCellRef = React.useRef(null);
|
|
23509
23675
|
var onMouseMove = React.useCallback(function (nativeEvent) {
|
|
23510
23676
|
var _gc$commentBox, _gc$commentBox2, _gc$searchDialog, _gc$linkCard;
|