@fileverse-dev/fortune-react 1.2.26 → 1.2.27
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.
|
@@ -9,7 +9,7 @@ import FormulaSearch from "../../components/SheetOverlay/FormulaSearch";
|
|
|
9
9
|
import FormulaHint from "../../components/SheetOverlay/FormulaHint";
|
|
10
10
|
import usePrevious from "../../hooks/usePrevious";
|
|
11
11
|
import { LucideIcon } from "../../components/SheetOverlay/LucideIcon";
|
|
12
|
-
import { countCommasBeforeCursor } from "../../components/SheetOverlay/helper";
|
|
12
|
+
import { countCommasBeforeCursor, isLetterNumberPattern, moveCursorToEnd } from "../../components/SheetOverlay/helper";
|
|
13
13
|
var FxEditor = function FxEditor() {
|
|
14
14
|
var _a, _b, _c;
|
|
15
15
|
var hideFormulaHintLocal = localStorage.getItem("formulaMore") === "true";
|
|
@@ -81,6 +81,26 @@ var FxEditor = function FxEditor() {
|
|
|
81
81
|
});
|
|
82
82
|
}
|
|
83
83
|
}, [context.config, context.luckysheet_select_save, context.luckysheetfile, context.currentSheetId, refs.globalCache, setContext]);
|
|
84
|
+
var getActiveFormula = useCallback(function () {
|
|
85
|
+
return document.querySelector(".luckysheet-formula-search-item-active");
|
|
86
|
+
}, []);
|
|
87
|
+
var insertSelectedFormula = useCallback(function (formulaName) {
|
|
88
|
+
if (/^=[a-zA-Z]+$/.test(refs.fxInput.current.innerText)) {
|
|
89
|
+
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
90
|
+
refs.fxInput.current.innerHTML = ht;
|
|
91
|
+
var cellEditor = document.getElementById("luckysheet-rich-text-editor");
|
|
92
|
+
if (cellEditor) {
|
|
93
|
+
cellEditor.innerHTML = ht;
|
|
94
|
+
}
|
|
95
|
+
moveCursorToEnd(refs.fxInput.current);
|
|
96
|
+
setContext(function (draftCtx) {
|
|
97
|
+
draftCtx.functionCandidates = [];
|
|
98
|
+
draftCtx.defaultCandidates = [];
|
|
99
|
+
draftCtx.functionHint = formulaName;
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
}, [setContext]);
|
|
84
104
|
var onKeyDown = useCallback(function (e) {
|
|
85
105
|
var _a;
|
|
86
106
|
if (context.allowEdit === false) {
|
|
@@ -94,6 +114,54 @@ var FxEditor = function FxEditor() {
|
|
|
94
114
|
if (key === "ArrowLeft" || key === "ArrowRight") {
|
|
95
115
|
e.stopPropagation();
|
|
96
116
|
}
|
|
117
|
+
if (e.key === "Enter" && context.luckysheetCellUpdate.length > 0) {
|
|
118
|
+
if (e.altKey || e.metaKey) {
|
|
119
|
+
document.execCommand("insertHTML", false, "\n ");
|
|
120
|
+
document.execCommand("delete", false);
|
|
121
|
+
e.stopPropagation();
|
|
122
|
+
} else {
|
|
123
|
+
var event_1 = e;
|
|
124
|
+
selectActiveFormulaOnClick(event_1);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
if (e.key === "ArrowUp" && context.luckysheetCellUpdate.length > 0) {
|
|
129
|
+
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
130
|
+
var formulaSearchContainer = document.getElementById("luckysheet-formula-search-c");
|
|
131
|
+
var activeItem = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item-active");
|
|
132
|
+
var previousItem = activeItem ? activeItem.previousElementSibling : null;
|
|
133
|
+
while (previousItem && !previousItem.classList.contains("luckysheet-formula-search-item")) {
|
|
134
|
+
previousItem = previousItem.previousElementSibling;
|
|
135
|
+
}
|
|
136
|
+
if (!previousItem) {
|
|
137
|
+
var items = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelectorAll(".luckysheet-formula-search-item");
|
|
138
|
+
var lastItem = items === null || items === void 0 ? void 0 : items[items.length - 1];
|
|
139
|
+
previousItem = lastItem || null;
|
|
140
|
+
}
|
|
141
|
+
clearSearchItemActiveClass();
|
|
142
|
+
if (previousItem) {
|
|
143
|
+
previousItem.classList.add("luckysheet-formula-search-item-active");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
e.preventDefault();
|
|
147
|
+
} else if (e.key === "ArrowDown" && context.luckysheetCellUpdate.length > 0) {
|
|
148
|
+
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
149
|
+
var formulaSearchContainer = document.getElementById("luckysheet-formula-search-c");
|
|
150
|
+
var activeItem = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item-active");
|
|
151
|
+
var nextItem = activeItem ? activeItem.nextElementSibling : null;
|
|
152
|
+
while (nextItem && !nextItem.classList.contains("luckysheet-formula-search-item")) {
|
|
153
|
+
nextItem = nextItem.nextElementSibling;
|
|
154
|
+
}
|
|
155
|
+
if (!nextItem) {
|
|
156
|
+
nextItem = (formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item")) || null;
|
|
157
|
+
}
|
|
158
|
+
clearSearchItemActiveClass();
|
|
159
|
+
if (nextItem) {
|
|
160
|
+
nextItem.classList.add("luckysheet-formula-search-item-active");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
e.preventDefault();
|
|
164
|
+
}
|
|
97
165
|
setContext(function (draftCtx) {
|
|
98
166
|
if (context.luckysheetCellUpdate.length > 0) {
|
|
99
167
|
switch (key) {
|
|
@@ -196,6 +264,24 @@ var FxEditor = function FxEditor() {
|
|
|
196
264
|
}
|
|
197
265
|
return true;
|
|
198
266
|
}, [context.config, context.luckysheet_select_save, context.luckysheetfile, context.currentSheetId, isHidenRC]);
|
|
267
|
+
var selectActiveFormulaOnClick = useCallback(function (e) {
|
|
268
|
+
var _a, _b, _c;
|
|
269
|
+
if (e.target.className.includes("sign-fortune")) return;
|
|
270
|
+
recentText.current = (_a = refs.fxInput) === null || _a === void 0 ? void 0 : _a.current.innerText;
|
|
271
|
+
var formulaName = (_c = (_b = getActiveFormula()) === null || _b === void 0 ? void 0 : _b.querySelector(".luckysheet-formula-search-func")) === null || _c === void 0 ? void 0 : _c.textContent;
|
|
272
|
+
var lastSpanText = getLastInputSpanText();
|
|
273
|
+
if (formulaName && !isLetterNumberPattern(lastSpanText)) {
|
|
274
|
+
insertSelectedFormula(formulaName);
|
|
275
|
+
e.preventDefault();
|
|
276
|
+
e.stopPropagation();
|
|
277
|
+
}
|
|
278
|
+
}, [getActiveFormula, insertSelectedFormula]);
|
|
279
|
+
var clearSearchItemActiveClass = useCallback(function () {
|
|
280
|
+
var activeFormula = getActiveFormula();
|
|
281
|
+
if (activeFormula) {
|
|
282
|
+
activeFormula.classList.remove("luckysheet-formula-search-item-active");
|
|
283
|
+
}
|
|
284
|
+
}, [getActiveFormula]);
|
|
199
285
|
return /*#__PURE__*/React.createElement("div", {
|
|
200
286
|
className: "fortune-fx-editor"
|
|
201
287
|
}, /*#__PURE__*/React.createElement(NameBox, null), /*#__PURE__*/React.createElement("div", {
|
|
@@ -236,9 +322,13 @@ var FxEditor = function FxEditor() {
|
|
|
236
322
|
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
237
323
|
var hoveredItem = e.target.closest(".luckysheet-formula-search-item");
|
|
238
324
|
if (!hoveredItem) return;
|
|
325
|
+
clearSearchItemActiveClass();
|
|
239
326
|
hoveredItem.classList.add("luckysheet-formula-search-item-active");
|
|
240
327
|
}
|
|
241
328
|
e.preventDefault();
|
|
329
|
+
},
|
|
330
|
+
onMouseDown: function onMouseDown(e) {
|
|
331
|
+
selectActiveFormulaOnClick(e);
|
|
242
332
|
}
|
|
243
333
|
})), /*#__PURE__*/React.createElement("div", {
|
|
244
334
|
className: "fx-hint"
|
|
@@ -164,6 +164,10 @@ var InputBox = function InputBox() {
|
|
|
164
164
|
if (/^=[a-zA-Z]+$/.test(inputRef.current.innerText)) {
|
|
165
165
|
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
166
166
|
inputRef.current.innerHTML = ht;
|
|
167
|
+
var fxEditor = document.getElementById("luckysheet-functionbox-cell");
|
|
168
|
+
if (fxEditor) {
|
|
169
|
+
fxEditor.innerHTML = ht;
|
|
170
|
+
}
|
|
167
171
|
moveCursorToEnd(inputRef.current);
|
|
168
172
|
setContext(function (draftCtx) {
|
|
169
173
|
draftCtx.functionCandidates = [];
|
|
@@ -90,6 +90,26 @@ var FxEditor = function FxEditor() {
|
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
92
|
}, [context.config, context.luckysheet_select_save, context.luckysheetfile, context.currentSheetId, refs.globalCache, setContext]);
|
|
93
|
+
var getActiveFormula = (0, _react.useCallback)(function () {
|
|
94
|
+
return document.querySelector(".luckysheet-formula-search-item-active");
|
|
95
|
+
}, []);
|
|
96
|
+
var insertSelectedFormula = (0, _react.useCallback)(function (formulaName) {
|
|
97
|
+
if (/^=[a-zA-Z]+$/.test(refs.fxInput.current.innerText)) {
|
|
98
|
+
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
99
|
+
refs.fxInput.current.innerHTML = ht;
|
|
100
|
+
var cellEditor = document.getElementById("luckysheet-rich-text-editor");
|
|
101
|
+
if (cellEditor) {
|
|
102
|
+
cellEditor.innerHTML = ht;
|
|
103
|
+
}
|
|
104
|
+
(0, _helper.moveCursorToEnd)(refs.fxInput.current);
|
|
105
|
+
setContext(function (draftCtx) {
|
|
106
|
+
draftCtx.functionCandidates = [];
|
|
107
|
+
draftCtx.defaultCandidates = [];
|
|
108
|
+
draftCtx.functionHint = formulaName;
|
|
109
|
+
});
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
}, [setContext]);
|
|
93
113
|
var onKeyDown = (0, _react.useCallback)(function (e) {
|
|
94
114
|
var _a;
|
|
95
115
|
if (context.allowEdit === false) {
|
|
@@ -103,6 +123,54 @@ var FxEditor = function FxEditor() {
|
|
|
103
123
|
if (key === "ArrowLeft" || key === "ArrowRight") {
|
|
104
124
|
e.stopPropagation();
|
|
105
125
|
}
|
|
126
|
+
if (e.key === "Enter" && context.luckysheetCellUpdate.length > 0) {
|
|
127
|
+
if (e.altKey || e.metaKey) {
|
|
128
|
+
document.execCommand("insertHTML", false, "\n ");
|
|
129
|
+
document.execCommand("delete", false);
|
|
130
|
+
e.stopPropagation();
|
|
131
|
+
} else {
|
|
132
|
+
var event_1 = e;
|
|
133
|
+
selectActiveFormulaOnClick(event_1);
|
|
134
|
+
}
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
if (e.key === "ArrowUp" && context.luckysheetCellUpdate.length > 0) {
|
|
138
|
+
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
139
|
+
var formulaSearchContainer = document.getElementById("luckysheet-formula-search-c");
|
|
140
|
+
var activeItem = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item-active");
|
|
141
|
+
var previousItem = activeItem ? activeItem.previousElementSibling : null;
|
|
142
|
+
while (previousItem && !previousItem.classList.contains("luckysheet-formula-search-item")) {
|
|
143
|
+
previousItem = previousItem.previousElementSibling;
|
|
144
|
+
}
|
|
145
|
+
if (!previousItem) {
|
|
146
|
+
var items = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelectorAll(".luckysheet-formula-search-item");
|
|
147
|
+
var lastItem = items === null || items === void 0 ? void 0 : items[items.length - 1];
|
|
148
|
+
previousItem = lastItem || null;
|
|
149
|
+
}
|
|
150
|
+
clearSearchItemActiveClass();
|
|
151
|
+
if (previousItem) {
|
|
152
|
+
previousItem.classList.add("luckysheet-formula-search-item-active");
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
e.preventDefault();
|
|
156
|
+
} else if (e.key === "ArrowDown" && context.luckysheetCellUpdate.length > 0) {
|
|
157
|
+
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
158
|
+
var formulaSearchContainer = document.getElementById("luckysheet-formula-search-c");
|
|
159
|
+
var activeItem = formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item-active");
|
|
160
|
+
var nextItem = activeItem ? activeItem.nextElementSibling : null;
|
|
161
|
+
while (nextItem && !nextItem.classList.contains("luckysheet-formula-search-item")) {
|
|
162
|
+
nextItem = nextItem.nextElementSibling;
|
|
163
|
+
}
|
|
164
|
+
if (!nextItem) {
|
|
165
|
+
nextItem = (formulaSearchContainer === null || formulaSearchContainer === void 0 ? void 0 : formulaSearchContainer.querySelector(".luckysheet-formula-search-item")) || null;
|
|
166
|
+
}
|
|
167
|
+
clearSearchItemActiveClass();
|
|
168
|
+
if (nextItem) {
|
|
169
|
+
nextItem.classList.add("luckysheet-formula-search-item-active");
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
e.preventDefault();
|
|
173
|
+
}
|
|
106
174
|
setContext(function (draftCtx) {
|
|
107
175
|
if (context.luckysheetCellUpdate.length > 0) {
|
|
108
176
|
switch (key) {
|
|
@@ -205,6 +273,24 @@ var FxEditor = function FxEditor() {
|
|
|
205
273
|
}
|
|
206
274
|
return true;
|
|
207
275
|
}, [context.config, context.luckysheet_select_save, context.luckysheetfile, context.currentSheetId, isHidenRC]);
|
|
276
|
+
var selectActiveFormulaOnClick = (0, _react.useCallback)(function (e) {
|
|
277
|
+
var _a, _b, _c;
|
|
278
|
+
if (e.target.className.includes("sign-fortune")) return;
|
|
279
|
+
recentText.current = (_a = refs.fxInput) === null || _a === void 0 ? void 0 : _a.current.innerText;
|
|
280
|
+
var formulaName = (_c = (_b = getActiveFormula()) === null || _b === void 0 ? void 0 : _b.querySelector(".luckysheet-formula-search-func")) === null || _c === void 0 ? void 0 : _c.textContent;
|
|
281
|
+
var lastSpanText = getLastInputSpanText();
|
|
282
|
+
if (formulaName && !(0, _helper.isLetterNumberPattern)(lastSpanText)) {
|
|
283
|
+
insertSelectedFormula(formulaName);
|
|
284
|
+
e.preventDefault();
|
|
285
|
+
e.stopPropagation();
|
|
286
|
+
}
|
|
287
|
+
}, [getActiveFormula, insertSelectedFormula]);
|
|
288
|
+
var clearSearchItemActiveClass = (0, _react.useCallback)(function () {
|
|
289
|
+
var activeFormula = getActiveFormula();
|
|
290
|
+
if (activeFormula) {
|
|
291
|
+
activeFormula.classList.remove("luckysheet-formula-search-item-active");
|
|
292
|
+
}
|
|
293
|
+
}, [getActiveFormula]);
|
|
208
294
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
209
295
|
className: "fortune-fx-editor"
|
|
210
296
|
}, /*#__PURE__*/_react.default.createElement(_NameBox.default, null), /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -245,9 +331,13 @@ var FxEditor = function FxEditor() {
|
|
|
245
331
|
if (document.getElementById("luckysheet-formula-search-c")) {
|
|
246
332
|
var hoveredItem = e.target.closest(".luckysheet-formula-search-item");
|
|
247
333
|
if (!hoveredItem) return;
|
|
334
|
+
clearSearchItemActiveClass();
|
|
248
335
|
hoveredItem.classList.add("luckysheet-formula-search-item-active");
|
|
249
336
|
}
|
|
250
337
|
e.preventDefault();
|
|
338
|
+
},
|
|
339
|
+
onMouseDown: function onMouseDown(e) {
|
|
340
|
+
selectActiveFormulaOnClick(e);
|
|
251
341
|
}
|
|
252
342
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
253
343
|
className: "fx-hint"
|
|
@@ -173,6 +173,10 @@ var InputBox = function InputBox() {
|
|
|
173
173
|
if (/^=[a-zA-Z]+$/.test(inputRef.current.innerText)) {
|
|
174
174
|
var ht = "<span dir=\"auto\" class=\"luckysheet-formula-text-color\">=</span><span dir=\"auto\" class=\"luckysheet-formula-text-func\">".concat(formulaName, "</span><span dir=\"auto\" class=\"luckysheet-formula-text-lpar\">(</span>");
|
|
175
175
|
inputRef.current.innerHTML = ht;
|
|
176
|
+
var fxEditor = document.getElementById("luckysheet-functionbox-cell");
|
|
177
|
+
if (fxEditor) {
|
|
178
|
+
fxEditor.innerHTML = ht;
|
|
179
|
+
}
|
|
176
180
|
(0, _helper.moveCursorToEnd)(inputRef.current);
|
|
177
181
|
setContext(function (draftCtx) {
|
|
178
182
|
draftCtx.functionCandidates = [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fileverse-dev/fortune-react",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.27",
|
|
4
4
|
"main": "lib/index.js",
|
|
5
5
|
"types": "lib/index.d.ts",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"tsc": "tsc"
|
|
17
17
|
},
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@fileverse-dev/fortune-core": "1.2.
|
|
19
|
+
"@fileverse-dev/fortune-core": "1.2.27",
|
|
20
20
|
"@fileverse/ui": "^4.1.7-patch-40",
|
|
21
21
|
"@tippyjs/react": "^4.2.6",
|
|
22
22
|
"@types/regenerator-runtime": "^0.13.6",
|