@fileverse-dev/fortune-core 1.3.12 → 1.3.13
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/es/events/keyboard.js +60 -37
- package/es/events/mouse.js +1 -0
- package/es/events/paste.js +47 -28
- package/es/locale/en.d.ts +3 -0
- package/es/locale/en.js +3 -0
- package/es/locale/es.d.ts +3 -0
- package/es/locale/es.js +3 -0
- package/es/locale/hi.d.ts +3 -0
- package/es/locale/hi.js +3 -0
- package/es/locale/index.d.ts +3 -0
- package/es/locale/zh.d.ts +3 -0
- package/es/locale/zh.js +3 -0
- package/es/locale/zh_tw.d.ts +3 -0
- package/es/locale/zh_tw.js +3 -0
- package/es/modules/ConditionFormat.js +26 -0
- package/es/modules/cell.js +1 -1
- package/es/modules/format.js +12 -7
- package/es/modules/selection.js +9 -3
- package/es/modules/validation.js +6 -3
- package/es/paste-table-helpers.js +39 -1
- package/es/types.d.ts +2 -0
- package/lib/events/keyboard.js +60 -37
- package/lib/events/mouse.js +1 -0
- package/lib/events/paste.js +45 -26
- package/lib/locale/en.d.ts +3 -0
- package/lib/locale/en.js +3 -0
- package/lib/locale/es.d.ts +3 -0
- package/lib/locale/es.js +3 -0
- package/lib/locale/hi.d.ts +3 -0
- package/lib/locale/hi.js +3 -0
- package/lib/locale/index.d.ts +3 -0
- package/lib/locale/zh.d.ts +3 -0
- package/lib/locale/zh.js +3 -0
- package/lib/locale/zh_tw.d.ts +3 -0
- package/lib/locale/zh_tw.js +3 -0
- package/lib/modules/ConditionFormat.js +26 -0
- package/lib/modules/cell.js +1 -1
- package/lib/modules/format.js +12 -7
- package/lib/modules/selection.js +9 -3
- package/lib/modules/validation.js +6 -3
- package/lib/paste-table-helpers.js +39 -1
- package/lib/types.d.ts +2 -0
- package/package.json +1 -1
|
@@ -9,11 +9,20 @@ var __assign = this && this.__assign || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
+
var __rest = this && this.__rest || function (s, e) {
|
|
13
|
+
var t = {};
|
|
14
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
|
15
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
16
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
|
17
|
+
}
|
|
18
|
+
return t;
|
|
19
|
+
};
|
|
12
20
|
import _ from "lodash";
|
|
13
21
|
import { locale } from "./locale";
|
|
14
22
|
import { getQKBorder, saveHyperlink } from "./modules";
|
|
15
23
|
import { getSheetIndex } from "./utils";
|
|
16
24
|
import { setRowHeight, setColumnWidth } from "./api";
|
|
25
|
+
import { adjustFormulaForPaste } from "./events/paste";
|
|
17
26
|
export var DEFAULT_FONT_SIZE = 12;
|
|
18
27
|
var parseStylesheetPairs = function parseStylesheetPairs(styleInner) {
|
|
19
28
|
var patternReg = /{([^}]*)}/g;
|
|
@@ -127,6 +136,28 @@ function brToNewline(str) {
|
|
|
127
136
|
}
|
|
128
137
|
var buildCellFromTd = function buildCellFromTd(td, classStyles, ctx) {
|
|
129
138
|
var _a, _b, _c, _d;
|
|
139
|
+
var fortuneCellAttr = td.getAttribute("data-fortune-cell");
|
|
140
|
+
if (fortuneCellAttr) {
|
|
141
|
+
try {
|
|
142
|
+
var _e = JSON.parse(decodeURIComponent(fortuneCellAttr)),
|
|
143
|
+
_srcRow = _e._srcRow,
|
|
144
|
+
_srcCol = _e._srcCol,
|
|
145
|
+
parsed = __rest(_e, ["_srcRow", "_srcCol"]);
|
|
146
|
+
var cell_1 = parsed;
|
|
147
|
+
delete cell_1.mc;
|
|
148
|
+
delete cell_1.hl;
|
|
149
|
+
var rowspan_1 = parseInt(td.getAttribute("rowspan") || "1", 10);
|
|
150
|
+
var colspan_1 = parseInt(td.getAttribute("colspan") || "1", 10);
|
|
151
|
+
return {
|
|
152
|
+
cell: cell_1,
|
|
153
|
+
rowspan: Number.isNaN(rowspan_1) ? 1 : rowspan_1,
|
|
154
|
+
colspan: Number.isNaN(colspan_1) ? 1 : colspan_1,
|
|
155
|
+
hyperlink: detectHyperlink(td),
|
|
156
|
+
srcRow: _srcRow,
|
|
157
|
+
srcCol: _srcCol
|
|
158
|
+
};
|
|
159
|
+
} catch (_f) {}
|
|
160
|
+
}
|
|
130
161
|
var cell = {};
|
|
131
162
|
var rawText = (td.innerText || td.innerHTML || "").trim();
|
|
132
163
|
var isLineBreak = rawText.includes("<br />");
|
|
@@ -277,10 +308,17 @@ export function handlePastedTable(ctx, html, pasteHandler) {
|
|
|
277
308
|
cell = _a.cell,
|
|
278
309
|
rowspan = _a.rowspan,
|
|
279
310
|
colspan = _a.colspan,
|
|
280
|
-
hyperlink = _a.hyperlink
|
|
311
|
+
hyperlink = _a.hyperlink,
|
|
312
|
+
srcRow = _a.srcRow,
|
|
313
|
+
srcCol = _a.srcCol;
|
|
281
314
|
var anchorCol = ctx.luckysheet_select_save[0].column[0];
|
|
282
315
|
var absoluteRow = anchorRow + localRowIndex;
|
|
283
316
|
var absoluteCol = anchorCol + localColIndex;
|
|
317
|
+
if (cell.f && srcRow != null && srcCol != null) {
|
|
318
|
+
try {
|
|
319
|
+
cell.f = adjustFormulaForPaste(cell.f, srcCol, srcRow, absoluteCol, absoluteRow);
|
|
320
|
+
} catch (_b) {}
|
|
321
|
+
}
|
|
284
322
|
pastedMatrix[localRowIndex][localColIndex] = cell;
|
|
285
323
|
if (hyperlink) {
|
|
286
324
|
saveHyperlink(ctx, absoluteRow, absoluteCol, hyperlink.href, "webpage", hyperlink.display);
|
package/es/types.d.ts
CHANGED
|
@@ -328,6 +328,8 @@ export type GlobalCache = {
|
|
|
328
328
|
verticalScrollLock?: boolean;
|
|
329
329
|
horizontalScrollLock?: boolean;
|
|
330
330
|
overwriteCell?: boolean;
|
|
331
|
+
overwriteCellFirstChar?: string;
|
|
332
|
+
enteredEditByTyping?: boolean;
|
|
331
333
|
ignoreWriteCell?: boolean;
|
|
332
334
|
doNotFocus?: boolean;
|
|
333
335
|
doNotUpdateCell?: boolean;
|
package/lib/events/keyboard.js
CHANGED
|
@@ -179,63 +179,72 @@ function moveToEdge(sheetData, key, curr, rowDelta, colDelta, startR, endR, star
|
|
|
179
179
|
return colDelta === 0 ? r : c;
|
|
180
180
|
}
|
|
181
181
|
function handleControlPlusArrowKey(ctx, e, shiftPressed) {
|
|
182
|
-
|
|
182
|
+
var _a, _b, _c, _d;
|
|
183
183
|
var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
|
|
184
184
|
if (_lodash.default.isNil(idx)) return;
|
|
185
185
|
var file = ctx.luckysheetfile[idx];
|
|
186
|
-
if (!file || !file.row || !file.column) return;
|
|
187
186
|
var maxRow = file.row;
|
|
188
187
|
var maxCol = file.column;
|
|
189
|
-
|
|
190
|
-
|
|
188
|
+
if (_lodash.default.isNil(maxRow) || _lodash.default.isNil(maxCol)) return;
|
|
189
|
+
var last = ctx.luckysheet_select_save && ctx.luckysheet_select_save.length > 0 ? ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1] : undefined;
|
|
191
190
|
if (!last) return;
|
|
192
191
|
var currR = last.row_focus;
|
|
193
192
|
var currC = last.column_focus;
|
|
194
193
|
if (_lodash.default.isNil(currR) || _lodash.default.isNil(currC)) return;
|
|
195
|
-
var startR = last.row[0];
|
|
196
|
-
var endR = last.row[1];
|
|
197
|
-
var startC = last.column[0];
|
|
198
|
-
var endC = last.column[1];
|
|
194
|
+
var startR = (_a = last.row) === null || _a === void 0 ? void 0 : _a[0];
|
|
195
|
+
var endR = (_b = last.row) === null || _b === void 0 ? void 0 : _b[1];
|
|
196
|
+
var startC = (_c = last.column) === null || _c === void 0 ? void 0 : _c[0];
|
|
197
|
+
var endC = (_d = last.column) === null || _d === void 0 ? void 0 : _d[1];
|
|
198
|
+
if (_lodash.default.isNil(startR) || _lodash.default.isNil(endR) || _lodash.default.isNil(startC) || _lodash.default.isNil(endC)) {
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
199
201
|
var horizontalOffset = currC - endC !== 0 ? currC - endC : currC - startC;
|
|
200
202
|
var verticalOffset = currR - endR !== 0 ? currR - endR : currR - startR;
|
|
201
203
|
var sheetData = file.data;
|
|
202
204
|
if (!sheetData) return;
|
|
203
|
-
var selectedLimit;
|
|
204
205
|
switch (e.key) {
|
|
205
206
|
case "ArrowUp":
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
207
|
+
{
|
|
208
|
+
var selectedLimit = moveToEdge(sheetData, e.key, currC, -1, 0, startR, endR, startC, endC, maxRow, maxCol);
|
|
209
|
+
if (shiftPressed) {
|
|
210
|
+
(0, _selection.moveHighlightRange)(ctx, "down", verticalOffset, "rangeOfSelect");
|
|
211
|
+
(0, _selection.moveHighlightRange)(ctx, "down", selectedLimit - currR, "rangeOfSelect");
|
|
212
|
+
} else {
|
|
213
|
+
(0, _selection.moveHighlightCell)(ctx, "down", selectedLimit - currR, "rangeOfSelect");
|
|
214
|
+
}
|
|
212
215
|
}
|
|
213
216
|
break;
|
|
214
217
|
case "ArrowDown":
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
(
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
{
|
|
219
|
+
var selectedLimit = moveToEdge(sheetData, e.key, currC, 1, 0, startR, endR, startC, endC, maxRow, maxCol);
|
|
220
|
+
if (shiftPressed) {
|
|
221
|
+
(0, _selection.moveHighlightRange)(ctx, "down", verticalOffset, "rangeOfSelect");
|
|
222
|
+
(0, _selection.moveHighlightRange)(ctx, "down", selectedLimit - currR, "rangeOfSelect");
|
|
223
|
+
} else {
|
|
224
|
+
(0, _selection.moveHighlightCell)(ctx, "down", selectedLimit - currR, "rangeOfSelect");
|
|
225
|
+
}
|
|
221
226
|
}
|
|
222
227
|
break;
|
|
223
228
|
case "ArrowLeft":
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
(
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
229
|
+
{
|
|
230
|
+
var selectedLimit = moveToEdge(sheetData, e.key, currR, 0, -1, startR, endR, startC, endC, maxRow, maxCol);
|
|
231
|
+
if (shiftPressed) {
|
|
232
|
+
(0, _selection.moveHighlightRange)(ctx, "right", horizontalOffset, "rangeOfSelect");
|
|
233
|
+
(0, _selection.moveHighlightRange)(ctx, "right", selectedLimit - currC, "rangeOfSelect");
|
|
234
|
+
} else {
|
|
235
|
+
(0, _selection.moveHighlightCell)(ctx, "right", selectedLimit - currC, "rangeOfSelect");
|
|
236
|
+
}
|
|
230
237
|
}
|
|
231
238
|
break;
|
|
232
239
|
case "ArrowRight":
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
(
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
240
|
+
{
|
|
241
|
+
var selectedLimit = moveToEdge(sheetData, e.key, currR, 0, 1, startR, endR, startC, endC, maxRow, maxCol);
|
|
242
|
+
if (shiftPressed) {
|
|
243
|
+
(0, _selection.moveHighlightRange)(ctx, "right", horizontalOffset, "rangeOfSelect");
|
|
244
|
+
(0, _selection.moveHighlightRange)(ctx, "right", selectedLimit - currC, "rangeOfSelect");
|
|
245
|
+
} else {
|
|
246
|
+
(0, _selection.moveHighlightCell)(ctx, "right", selectedLimit - currC, "rangeOfSelect");
|
|
247
|
+
}
|
|
239
248
|
}
|
|
240
249
|
break;
|
|
241
250
|
default:
|
|
@@ -388,10 +397,10 @@ function handleArrowKey(ctx, e) {
|
|
|
388
397
|
}
|
|
389
398
|
}
|
|
390
399
|
function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, handleRedo, canvas) {
|
|
391
|
-
var _a, _b, _c;
|
|
400
|
+
var _a, _b, _c, _d;
|
|
392
401
|
return __awaiter(this, void 0, void 0, function () {
|
|
393
|
-
var handledFlvShortcut, kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, last, row_index, col_index;
|
|
394
|
-
return __generator(this, function (
|
|
402
|
+
var handledFlvShortcut, kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, isEditing, inputText, isFormulaEdit, enteredByTyping, last, row_index, col_index;
|
|
403
|
+
return __generator(this, function (_e) {
|
|
395
404
|
if (e.shiftKey && e.code === "Space") {
|
|
396
405
|
e.stopImmediatePropagation();
|
|
397
406
|
e.stopPropagation();
|
|
@@ -499,7 +508,18 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
|
|
|
499
508
|
(0, _refresh.jfrefreshgrid)(ctx, null, undefined);
|
|
500
509
|
e.preventDefault();
|
|
501
510
|
} else if (kstr === "ArrowUp" || kstr === "ArrowDown" || kstr === "ArrowLeft" || kstr === "ArrowRight") {
|
|
502
|
-
|
|
511
|
+
isEditing = ctx.luckysheetCellUpdate.length > 0;
|
|
512
|
+
inputText = (_d = cellInput === null || cellInput === void 0 ? void 0 : cellInput.innerText) !== null && _d !== void 0 ? _d : "";
|
|
513
|
+
isFormulaEdit = isEditing && inputText.trim().startsWith("=");
|
|
514
|
+
enteredByTyping = cache.enteredEditByTyping === true;
|
|
515
|
+
if (isEditing && !isFormulaEdit && enteredByTyping) {
|
|
516
|
+
(0, _cell.updateCell)(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput, undefined, canvas);
|
|
517
|
+
cache.enteredEditByTyping = false;
|
|
518
|
+
handleArrowKey(ctx, e);
|
|
519
|
+
e.preventDefault();
|
|
520
|
+
} else {
|
|
521
|
+
handleArrowKey(ctx, e);
|
|
522
|
+
}
|
|
503
523
|
} else if (!(kcode >= 112 && kcode <= 123 || kcode <= 46 || kcode === 144 || kcode === 108 || e.ctrlKey || e.altKey || e.shiftKey && (kcode === 37 || kcode === 38 || kcode === 39 || kcode === 40)) || kcode === 8 || kcode === 32 || kcode === 46 || kcode === 0 || e.ctrlKey && kcode === 86) {
|
|
504
524
|
if (!allowEdit) return [2];
|
|
505
525
|
if (String.fromCharCode(kcode) != null && !_lodash.default.isEmpty(ctx.luckysheet_select_save) && kstr !== "CapsLock" && kstr !== "Win" && kcode !== 18) {
|
|
@@ -508,7 +528,10 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
|
|
|
508
528
|
col_index = last.column_focus;
|
|
509
529
|
ctx.luckysheetCellUpdate = [row_index, col_index];
|
|
510
530
|
cache.overwriteCell = true;
|
|
531
|
+
cache.overwriteCellFirstChar = e.key;
|
|
532
|
+
cache.enteredEditByTyping = true;
|
|
511
533
|
(0, _formula.handleFormulaInput)(ctx, fxInput, cellInput, kcode);
|
|
534
|
+
e.preventDefault();
|
|
512
535
|
}
|
|
513
536
|
}
|
|
514
537
|
}
|
package/lib/events/mouse.js
CHANGED
|
@@ -508,6 +508,7 @@ function handleCellAreaDoubleClick(ctx, globalCache, settings, e, container) {
|
|
|
508
508
|
row_index = row_focus;
|
|
509
509
|
col_index = column_focus;
|
|
510
510
|
}
|
|
511
|
+
globalCache.enteredEditByTyping = false;
|
|
511
512
|
(0, _cell.luckysheetUpdateCell)(ctx, row_index, col_index);
|
|
512
513
|
}
|
|
513
514
|
function handleContextMenu(ctx, settings, e, workbookContainer, container, area) {
|
package/lib/events/paste.js
CHANGED
|
@@ -236,7 +236,7 @@ var handleFormulaOnPaste = function handleFormulaOnPaste(ctx, d) {
|
|
|
236
236
|
}
|
|
237
237
|
};
|
|
238
238
|
function pasteHandler(ctx, data, borderInfo) {
|
|
239
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
239
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
240
240
|
if (ctx.luckysheet_selection_range) {
|
|
241
241
|
ctx.luckysheet_selection_range = [];
|
|
242
242
|
}
|
|
@@ -420,25 +420,39 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
420
420
|
}
|
|
421
421
|
}
|
|
422
422
|
if (originCell) {
|
|
423
|
-
if (
|
|
424
|
-
var
|
|
425
|
-
if (
|
|
426
|
-
var
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
423
|
+
if (!isUrl) {
|
|
424
|
+
var generated = (0, _format.genarate)(originalValueStr);
|
|
425
|
+
if (generated) {
|
|
426
|
+
var genM = generated[0],
|
|
427
|
+
genCt = generated[1],
|
|
428
|
+
genV = generated[2];
|
|
429
|
+
if ((genCt === null || genCt === void 0 ? void 0 : genCt.t) === "d") {
|
|
430
|
+
originCell.v = genV;
|
|
431
|
+
originCell.m = genM !== null && genM !== void 0 ? genM : originalValueStr;
|
|
432
|
+
originCell.ct = genCt;
|
|
433
|
+
} else {
|
|
434
|
+
originCell.v = value;
|
|
435
|
+
if (originCell.ct != null && originCell.ct.fa != null) {
|
|
436
|
+
if (originCell.ct.t === "d" && typeof originCell.v !== "number") {
|
|
437
|
+
originCell.m = String(originCell.v);
|
|
438
|
+
} else {
|
|
439
|
+
originCell.m = (0, _format.update)(originCell.ct.fa, originCell.v);
|
|
440
|
+
}
|
|
441
|
+
} else {
|
|
442
|
+
originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
437
445
|
} else {
|
|
438
|
-
originCell.
|
|
446
|
+
originCell.v = value;
|
|
447
|
+
if (originCell.ct != null && originCell.ct.fa != null) {
|
|
448
|
+
originCell.m = (0, _format.update)(originCell.ct.fa, originCell.v);
|
|
449
|
+
} else {
|
|
450
|
+
originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
|
|
451
|
+
}
|
|
439
452
|
}
|
|
440
453
|
} else {
|
|
441
|
-
originCell.
|
|
454
|
+
originCell.v = originalValueStr;
|
|
455
|
+
originCell.m = originalValueStr;
|
|
442
456
|
}
|
|
443
457
|
if (originCell.f != null && originCell.f.length > 0) {
|
|
444
458
|
originCell.f = "";
|
|
@@ -465,19 +479,24 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
465
479
|
t: "s"
|
|
466
480
|
};
|
|
467
481
|
} else {
|
|
468
|
-
cell.v = originalValueStr;
|
|
469
|
-
cell.m = originalValueStr;
|
|
470
|
-
cell.ct = {
|
|
471
|
-
fa: "General",
|
|
472
|
-
t: "g"
|
|
473
|
-
};
|
|
474
482
|
if (/^0x?[a-fA-F0-9]+$/.test(value)) {
|
|
483
|
+
cell.v = value;
|
|
475
484
|
cell.m = value;
|
|
476
485
|
cell.ct = {
|
|
477
486
|
fa: "@",
|
|
478
487
|
t: "s"
|
|
479
488
|
};
|
|
480
|
-
|
|
489
|
+
} else {
|
|
490
|
+
var _m = (_j = (0, _format.genarate)(originalValueStr)) !== null && _j !== void 0 ? _j : [],
|
|
491
|
+
m = _m[0],
|
|
492
|
+
ct = _m[1],
|
|
493
|
+
v = _m[2];
|
|
494
|
+
cell.v = v !== null && v !== void 0 ? v : originalValueStr;
|
|
495
|
+
cell.m = m != null ? String(m) : originalValueStr;
|
|
496
|
+
cell.ct = ct !== null && ct !== void 0 ? ct : {
|
|
497
|
+
fa: "General",
|
|
498
|
+
t: "g"
|
|
499
|
+
};
|
|
481
500
|
}
|
|
482
501
|
}
|
|
483
502
|
if (isUrl && url) {
|
|
@@ -508,8 +527,8 @@ function pasteHandler(ctx, data, borderInfo) {
|
|
|
508
527
|
}
|
|
509
528
|
d[r + curR] = x;
|
|
510
529
|
}
|
|
511
|
-
if ((
|
|
512
|
-
(
|
|
530
|
+
if ((_k = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _k === void 0 ? void 0 : _k.updateCellYdoc) {
|
|
531
|
+
(_l = ctx.hooks) === null || _l === void 0 ? void 0 : _l.updateCellYdoc(changes);
|
|
513
532
|
}
|
|
514
533
|
last.row = [curR, curR + rlen - 1];
|
|
515
534
|
last.column = [curC, curC + clen - 1];
|
package/lib/locale/en.d.ts
CHANGED
|
@@ -530,6 +530,8 @@ declare const _default: {
|
|
|
530
530
|
conditionformat_equal_title: string;
|
|
531
531
|
conditionformat_textContains: string;
|
|
532
532
|
conditionformat_textContains_title: string;
|
|
533
|
+
conditionformat_empty: string;
|
|
534
|
+
conditionformat_empty_title: string;
|
|
533
535
|
conditionformat_occurrenceDate: string;
|
|
534
536
|
conditionformat_occurrenceDate_title: string;
|
|
535
537
|
conditionformat_duplicateValue: string;
|
|
@@ -633,6 +635,7 @@ declare const _default: {
|
|
|
633
635
|
between2: string;
|
|
634
636
|
contain: string;
|
|
635
637
|
textContains: string;
|
|
638
|
+
empty: string;
|
|
636
639
|
duplicateValue: string;
|
|
637
640
|
uniqueValue: string;
|
|
638
641
|
top: string;
|
package/lib/locale/en.js
CHANGED
|
@@ -9634,6 +9634,8 @@ var _default = exports.default = {
|
|
|
9634
9634
|
conditionformat_equal_title: "Format cells equal to",
|
|
9635
9635
|
conditionformat_textContains: "Conditional format - Text Contains",
|
|
9636
9636
|
conditionformat_textContains_title: "Format cells containing the following text",
|
|
9637
|
+
conditionformat_empty: "Conditional format - Empty",
|
|
9638
|
+
conditionformat_empty_title: "Format cells that are empty",
|
|
9637
9639
|
conditionformat_occurrenceDate: "Conditional format - Occurrence Date",
|
|
9638
9640
|
conditionformat_occurrenceDate_title: "Format cells containing the following dates",
|
|
9639
9641
|
conditionformat_duplicateValue: "Conditional format - Duplicate Value",
|
|
@@ -9737,6 +9739,7 @@ var _default = exports.default = {
|
|
|
9737
9739
|
between2: "",
|
|
9738
9740
|
contain: "Contain",
|
|
9739
9741
|
textContains: "Text contains",
|
|
9742
|
+
empty: "Empty",
|
|
9740
9743
|
duplicateValue: "Duplicate value",
|
|
9741
9744
|
uniqueValue: "Unique value",
|
|
9742
9745
|
top: "Top",
|
package/lib/locale/es.d.ts
CHANGED
|
@@ -688,6 +688,8 @@ declare const _default: {
|
|
|
688
688
|
conditionformat_equal_title: string;
|
|
689
689
|
conditionformat_textContains: string;
|
|
690
690
|
conditionformat_textContains_title: string;
|
|
691
|
+
conditionformat_empty: string;
|
|
692
|
+
conditionformat_empty_title: string;
|
|
691
693
|
conditionformat_occurrenceDate: string;
|
|
692
694
|
conditionformat_occurrenceDate_title: string;
|
|
693
695
|
conditionformat_duplicateValue: string;
|
|
@@ -789,6 +791,7 @@ declare const _default: {
|
|
|
789
791
|
between2: string;
|
|
790
792
|
contain: string;
|
|
791
793
|
textContains: string;
|
|
794
|
+
empty: string;
|
|
792
795
|
duplicateValue: string;
|
|
793
796
|
uniqueValue: string;
|
|
794
797
|
top: string;
|
package/lib/locale/es.js
CHANGED
|
@@ -9571,6 +9571,8 @@ var _default = exports.default = {
|
|
|
9571
9571
|
conditionformat_equal_title: "Dar formato a celdas iguales a",
|
|
9572
9572
|
conditionformat_textContains: "Conditionformat-TextContains",
|
|
9573
9573
|
conditionformat_textContains_title: "Dar formato a las celdas que contienen el siguiente texto",
|
|
9574
|
+
conditionformat_empty: "Conditional format - Empty",
|
|
9575
|
+
conditionformat_empty_title: "Dar formato a las celdas vacías",
|
|
9574
9576
|
conditionformat_occurrenceDate: "Conditionformat-OccurrenceDate",
|
|
9575
9577
|
conditionformat_occurrenceDate_title: "Dar formato a celdas que contienen las siguientes fechas",
|
|
9576
9578
|
conditionformat_duplicateValue: "Conditionformat-DuplicateValue",
|
|
@@ -9672,6 +9674,7 @@ var _default = exports.default = {
|
|
|
9672
9674
|
between2: "",
|
|
9673
9675
|
contain: "Contiene",
|
|
9674
9676
|
textContains: "Texto contiene",
|
|
9677
|
+
empty: "Vacío",
|
|
9675
9678
|
duplicateValue: "Valor duplicado",
|
|
9676
9679
|
uniqueValue: "Valor Unico",
|
|
9677
9680
|
top: "Mejor",
|
package/lib/locale/hi.d.ts
CHANGED
|
@@ -563,6 +563,8 @@ declare const _default: {
|
|
|
563
563
|
conditionformat_equal_title: string;
|
|
564
564
|
conditionformat_textContains: string;
|
|
565
565
|
conditionformat_textContains_title: string;
|
|
566
|
+
conditionformat_empty: string;
|
|
567
|
+
conditionformat_empty_title: string;
|
|
566
568
|
conditionformat_occurrenceDate: string;
|
|
567
569
|
conditionformat_occurrenceDate_title: string;
|
|
568
570
|
conditionformat_duplicateValue: string;
|
|
@@ -664,6 +666,7 @@ declare const _default: {
|
|
|
664
666
|
between2: string;
|
|
665
667
|
contain: string;
|
|
666
668
|
textContains: string;
|
|
669
|
+
empty: string;
|
|
667
670
|
duplicateValue: string;
|
|
668
671
|
uniqueValue: string;
|
|
669
672
|
top: string;
|
package/lib/locale/hi.js
CHANGED
|
@@ -10084,6 +10084,8 @@ var _default = exports.default = {
|
|
|
10084
10084
|
conditionformat_equal_title: "के बराबर कोशिकाओं को प्रारूपित करें",
|
|
10085
10085
|
conditionformat_textContains: "Conditionformat-TextContains",
|
|
10086
10086
|
conditionformat_textContains_title: "निम्नलिखित पाठ वाली कोशिकाओं को प्रारूपित करें",
|
|
10087
|
+
conditionformat_empty: "Conditional format - Empty",
|
|
10088
|
+
conditionformat_empty_title: "खाली कोशिकाओं को प्रारूपित करें",
|
|
10087
10089
|
conditionformat_occurrenceDate: "Conditionformat-OccurrenceDate",
|
|
10088
10090
|
conditionformat_occurrenceDate_title: "निम्नलिखित तिथियों वाली कोशिकाओं को प्रारूपित करें",
|
|
10089
10091
|
conditionformat_duplicateValue: "Conditionformat-DuplicateValue",
|
|
@@ -10185,6 +10187,7 @@ var _default = exports.default = {
|
|
|
10185
10187
|
between2: "",
|
|
10186
10188
|
contain: "शामिल",
|
|
10187
10189
|
textContains: "पाठ शामिल है",
|
|
10190
|
+
empty: "खाली",
|
|
10188
10191
|
duplicateValue: "डुप्लिकेट मान",
|
|
10189
10192
|
uniqueValue: "अद्वितीय मान",
|
|
10190
10193
|
top: "शीर्ष",
|
package/lib/locale/index.d.ts
CHANGED
|
@@ -583,6 +583,8 @@ declare function locale(ctx: Context): {
|
|
|
583
583
|
conditionformat_equal_title: string;
|
|
584
584
|
conditionformat_textContains: string;
|
|
585
585
|
conditionformat_textContains_title: string;
|
|
586
|
+
conditionformat_empty: string;
|
|
587
|
+
conditionformat_empty_title: string;
|
|
586
588
|
conditionformat_occurrenceDate: string;
|
|
587
589
|
conditionformat_occurrenceDate_title: string;
|
|
588
590
|
conditionformat_duplicateValue: string;
|
|
@@ -685,6 +687,7 @@ declare function locale(ctx: Context): {
|
|
|
685
687
|
between2: string;
|
|
686
688
|
contain: string;
|
|
687
689
|
textContains: string;
|
|
690
|
+
empty: string;
|
|
688
691
|
duplicateValue: string;
|
|
689
692
|
uniqueValue: string;
|
|
690
693
|
top: string;
|
package/lib/locale/zh.d.ts
CHANGED
|
@@ -582,6 +582,8 @@ declare const _default: {
|
|
|
582
582
|
conditionformat_equal_title: string;
|
|
583
583
|
conditionformat_textContains: string;
|
|
584
584
|
conditionformat_textContains_title: string;
|
|
585
|
+
conditionformat_empty: string;
|
|
586
|
+
conditionformat_empty_title: string;
|
|
585
587
|
conditionformat_occurrenceDate: string;
|
|
586
588
|
conditionformat_occurrenceDate_title: string;
|
|
587
589
|
conditionformat_duplicateValue: string;
|
|
@@ -684,6 +686,7 @@ declare const _default: {
|
|
|
684
686
|
between2: string;
|
|
685
687
|
contain: string;
|
|
686
688
|
textContains: string;
|
|
689
|
+
empty: string;
|
|
687
690
|
duplicateValue: string;
|
|
688
691
|
uniqueValue: string;
|
|
689
692
|
top: string;
|
package/lib/locale/zh.js
CHANGED
|
@@ -10103,6 +10103,8 @@ var _default = exports.default = {
|
|
|
10103
10103
|
conditionformat_equal_title: "为等于以下值的单元格设置格式",
|
|
10104
10104
|
conditionformat_textContains: "条件格式——文本包含",
|
|
10105
10105
|
conditionformat_textContains_title: "为包含以下文本的单元格设置格式",
|
|
10106
|
+
conditionformat_empty: "条件格式——空值",
|
|
10107
|
+
conditionformat_empty_title: "为空单元格设置格式",
|
|
10106
10108
|
conditionformat_occurrenceDate: "条件格式——发生日期",
|
|
10107
10109
|
conditionformat_occurrenceDate_title: "为包含以下日期的单元格设置格式",
|
|
10108
10110
|
conditionformat_duplicateValue: "条件格式——重复值",
|
|
@@ -10205,6 +10207,7 @@ var _default = exports.default = {
|
|
|
10205
10207
|
between2: "之间",
|
|
10206
10208
|
contain: "包含",
|
|
10207
10209
|
textContains: "文本包含",
|
|
10210
|
+
empty: "空值",
|
|
10208
10211
|
duplicateValue: "重复值",
|
|
10209
10212
|
uniqueValue: "唯一值",
|
|
10210
10213
|
top: "前",
|
package/lib/locale/zh_tw.d.ts
CHANGED
|
@@ -726,6 +726,8 @@ declare const _default: {
|
|
|
726
726
|
conditionformat_equal_title: string;
|
|
727
727
|
conditionformat_textContains: string;
|
|
728
728
|
conditionformat_textContains_title: string;
|
|
729
|
+
conditionformat_empty: string;
|
|
730
|
+
conditionformat_empty_title: string;
|
|
729
731
|
conditionformat_occurrenceDate: string;
|
|
730
732
|
conditionformat_occurrenceDate_title: string;
|
|
731
733
|
conditionformat_duplicateValue: string;
|
|
@@ -828,6 +830,7 @@ declare const _default: {
|
|
|
828
830
|
between2: string;
|
|
829
831
|
contain: string;
|
|
830
832
|
textContains: string;
|
|
833
|
+
empty: string;
|
|
831
834
|
duplicateValue: string;
|
|
832
835
|
uniqueValue: string;
|
|
833
836
|
top: string;
|
package/lib/locale/zh_tw.js
CHANGED
|
@@ -9618,6 +9618,8 @@ var _default = exports.default = {
|
|
|
9618
9618
|
conditionformat_equal_title: "為等於以下值的儲存格設定格式",
|
|
9619
9619
|
conditionformat_textContains: "條件格式——文字包含",
|
|
9620
9620
|
conditionformat_textContains_title: "為包含以下文字的儲存格設定格式",
|
|
9621
|
+
conditionformat_empty: "條件格式——空值",
|
|
9622
|
+
conditionformat_empty_title: "為空儲存格設定格式",
|
|
9621
9623
|
conditionformat_occurrenceDate: "條件格式——發生日期",
|
|
9622
9624
|
conditionformat_occurrenceDate_title: "為包含以下日期的儲存格設定格式",
|
|
9623
9625
|
conditionformat_duplicateValue: "條件格式——重複值",
|
|
@@ -9720,6 +9722,7 @@ var _default = exports.default = {
|
|
|
9720
9722
|
between2: "之間",
|
|
9721
9723
|
contain: "包含",
|
|
9722
9724
|
textContains: "文字包含",
|
|
9725
|
+
empty: "空值",
|
|
9723
9726
|
duplicateValue: "重複值",
|
|
9724
9727
|
uniqueValue: "唯一值",
|
|
9725
9728
|
top: "前",
|
|
@@ -706,6 +706,32 @@ function compute(ctx, ruleArr, d) {
|
|
|
706
706
|
}
|
|
707
707
|
}
|
|
708
708
|
}
|
|
709
|
+
} else if (conditionName === "empty") {
|
|
710
|
+
for (var r = cellrange[s].row[0]; r <= cellrange[s].row[1]; r += 1) {
|
|
711
|
+
for (var c = cellrange[s].column[0]; c <= cellrange[s].column[1]; c += 1) {
|
|
712
|
+
var cell = _lodash.default.isNil(d[r]) || _lodash.default.isNil(d[r][c]) ? null : d[r][c];
|
|
713
|
+
var isEmpty = _lodash.default.isNil(cell) || _lodash.default.isNil(cell.v) || (0, _validation.isRealNull)(cell.v);
|
|
714
|
+
if (isEmpty) {
|
|
715
|
+
if ("".concat(r, "_").concat(c) in computeMap) {
|
|
716
|
+
computeMap["".concat(r, "_").concat(c)].textColor = textColor_1;
|
|
717
|
+
computeMap["".concat(r, "_").concat(c)].cellColor = cellColor_1;
|
|
718
|
+
computeMap["".concat(r, "_").concat(c)].bold = bold_1;
|
|
719
|
+
computeMap["".concat(r, "_").concat(c)].italic = italic_1;
|
|
720
|
+
computeMap["".concat(r, "_").concat(c)].underline = underline_1;
|
|
721
|
+
computeMap["".concat(r, "_").concat(c)].strikethrough = strikethrough_1;
|
|
722
|
+
} else {
|
|
723
|
+
computeMap["".concat(r, "_").concat(c)] = {
|
|
724
|
+
textColor: textColor_1,
|
|
725
|
+
cellColor: cellColor_1,
|
|
726
|
+
bold: bold_1,
|
|
727
|
+
italic: italic_1,
|
|
728
|
+
underline: underline_1,
|
|
729
|
+
strikethrough: strikethrough_1
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
}
|
|
733
|
+
}
|
|
734
|
+
}
|
|
709
735
|
} else if (conditionName === "between") {
|
|
710
736
|
for (var r = cellrange[s].row[0]; r <= cellrange[s].row[1]; r += 1) {
|
|
711
737
|
for (var c = cellrange[s].column[0]; c <= cellrange[s].column[1]; c += 1) {
|
package/lib/modules/cell.js
CHANGED
|
@@ -1074,7 +1074,7 @@ function getFontStyleByCell(cell, checksAF, checksCF, isCheck) {
|
|
|
1074
1074
|
if (key === "it" && valueNum !== 0) {
|
|
1075
1075
|
style.fontStyle = "italic";
|
|
1076
1076
|
}
|
|
1077
|
-
if (key === "fs" &&
|
|
1077
|
+
if (key === "fs" && !_lodash.default.isNil(value)) {
|
|
1078
1078
|
style.fontSize = "".concat(valueNum, "pt");
|
|
1079
1079
|
}
|
|
1080
1080
|
if (key === "fc" && value !== "#000000" || ((_a = checksAF === null || checksAF === void 0 ? void 0 : checksAF.length) !== null && _a !== void 0 ? _a : 0) > 0 || (checksCF === null || checksCF === void 0 ? void 0 : checksCF.textColor)) {
|
package/lib/modules/format.js
CHANGED
|
@@ -251,20 +251,24 @@ function genarate(value) {
|
|
|
251
251
|
v = datenum_local(dateObj);
|
|
252
252
|
ct.t = "d";
|
|
253
253
|
var map = {
|
|
254
|
-
"yyyy-MM-dd": "dd
|
|
255
|
-
"yyyy-MM-dd HH:mm": "dd
|
|
256
|
-
"yyyy-MM-ddTHH:mm": "dd
|
|
257
|
-
"yyyy/MM/dd": "
|
|
258
|
-
"yyyy/MM/dd HH:mm": "
|
|
254
|
+
"yyyy-MM-dd": "yyyy-MM-dd",
|
|
255
|
+
"yyyy-MM-dd HH:mm": "yyyy-MM-dd HH:mm",
|
|
256
|
+
"yyyy-MM-ddTHH:mm": "yyyy-MM-dd HH:mm",
|
|
257
|
+
"yyyy/MM/dd": "yyyy/MM/dd",
|
|
258
|
+
"yyyy/MM/dd HH:mm": "yyyy/MM/dd HH:mm",
|
|
259
259
|
"yyyy.MM.dd": "yyyy.MM.dd",
|
|
260
260
|
"MM/dd/yyyy h:mm AM/PM": "MM/dd/yyyy h:mm AM/PM",
|
|
261
261
|
"MM/dd/yyyy": "MM/dd/yyyy",
|
|
262
262
|
"M/d/yyyy": "M/d/yyyy",
|
|
263
263
|
"MM/dd/yy": "MM/dd/yy",
|
|
264
264
|
"dd/MM/yyyy": "dd/MM/yyyy",
|
|
265
|
-
"dd-MM-yyyy": "dd
|
|
265
|
+
"dd-MM-yyyy": "dd-MM-yyyy",
|
|
266
266
|
"dd.MM.yyyy": "dd.MM.yyyy",
|
|
267
|
-
named: "
|
|
267
|
+
"named-mdy-full": "mmmm d, yyyy",
|
|
268
|
+
"named-mdy-abbr": "mmm d, yyyy",
|
|
269
|
+
"named-dmy-full": "d mmmm yyyy",
|
|
270
|
+
"named-dmy-abbr": "d mmm yyyy",
|
|
271
|
+
"named-abbr-dashes": "mmm-d-yyyy"
|
|
268
272
|
};
|
|
269
273
|
ct.fa = map[df.formatType] || "dd/MM/yyyy";
|
|
270
274
|
m = _ssf.default.format(ct.fa, v);
|
|
@@ -284,6 +288,7 @@ function update(fmt, v) {
|
|
|
284
288
|
return _ssf.default.format(fmt, v);
|
|
285
289
|
}
|
|
286
290
|
function is_date(fmt, v) {
|
|
291
|
+
console.log(_ssf.default.is_date(fmt, v), "is_date");
|
|
287
292
|
return _ssf.default.is_date(fmt, v);
|
|
288
293
|
}
|
|
289
294
|
function fuzzynum(s) {
|