@fileverse-dev/fortune-core 1.3.11 → 1.3.12-mixed
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/format.js +12 -7
- package/es/modules/inline-string.js +52 -24
- package/es/modules/validation.js +6 -3
- 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/format.js +12 -7
- package/lib/modules/inline-string.js +52 -24
- package/lib/modules/validation.js +6 -3
- package/lib/types.d.ts +2 -0
- package/package.json +1 -1
|
@@ -291,6 +291,9 @@ function extendCssText(origin, cover, isLimit) {
|
|
|
291
291
|
}
|
|
292
292
|
return newCss;
|
|
293
293
|
}
|
|
294
|
+
function escapeHtmlAttr(s) {
|
|
295
|
+
return s.replace(/&/g, "&").replace(/"/g, """).replace(/'/g, "'").replace(/</g, "<").replace(/>/g, ">");
|
|
296
|
+
}
|
|
294
297
|
export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
295
298
|
var _a, _b, _c;
|
|
296
299
|
var w = window.getSelection();
|
|
@@ -298,6 +301,34 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
298
301
|
if (w.rangeCount === 0) return;
|
|
299
302
|
var range = w.getRangeAt(0);
|
|
300
303
|
var $textEditor = cellInput;
|
|
304
|
+
if (range.startContainer === $textEditor && range.endContainer === $textEditor && range.collapsed === false) {
|
|
305
|
+
var start = range.startOffset;
|
|
306
|
+
var end = range.endOffset;
|
|
307
|
+
var children = Array.from($textEditor.childNodes).slice(start, end);
|
|
308
|
+
children.forEach(function (node) {
|
|
309
|
+
var _a, _b;
|
|
310
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
311
|
+
var el = node;
|
|
312
|
+
if (el.tagName === "SPAN") {
|
|
313
|
+
var cssText = getCssText(el.style.cssText, attr, value);
|
|
314
|
+
el.setAttribute("style", cssText);
|
|
315
|
+
}
|
|
316
|
+
} else if (node.nodeType === Node.TEXT_NODE) {
|
|
317
|
+
var text = (_a = node.textContent) !== null && _a !== void 0 ? _a : "";
|
|
318
|
+
if (text.length === 0) return;
|
|
319
|
+
var wrapper = document.createElement("span");
|
|
320
|
+
var cssText = getCssText("", attr, value);
|
|
321
|
+
wrapper.setAttribute("style", cssText);
|
|
322
|
+
wrapper.textContent = text;
|
|
323
|
+
(_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
var newRange = document.createRange();
|
|
327
|
+
newRange.selectNodeContents($textEditor);
|
|
328
|
+
w.removeAllRanges();
|
|
329
|
+
w.addRange(newRange);
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
301
332
|
if (range.collapsed === true) {
|
|
302
333
|
return;
|
|
303
334
|
}
|
|
@@ -335,7 +366,7 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
335
366
|
cssText = extendCssText(box.style.cssText, cssText);
|
|
336
367
|
}
|
|
337
368
|
}
|
|
338
|
-
cont += "<span style
|
|
369
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\">").concat(left, "</span>");
|
|
339
370
|
}
|
|
340
371
|
if (mid !== "") {
|
|
341
372
|
var cssText = getCssText(span.style.cssText, attr, value);
|
|
@@ -345,7 +376,7 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
345
376
|
cssText = extendCssText(box.style.cssText, cssText);
|
|
346
377
|
}
|
|
347
378
|
}
|
|
348
|
-
cont += "<span style
|
|
379
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\">").concat(mid, "</span>");
|
|
349
380
|
}
|
|
350
381
|
if (right !== "") {
|
|
351
382
|
var cssText = span.style.cssText;
|
|
@@ -355,7 +386,7 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
355
386
|
cssText = extendCssText(box.style.cssText, cssText);
|
|
356
387
|
}
|
|
357
388
|
}
|
|
358
|
-
cont += "<span style
|
|
389
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\">").concat(right, "</span>");
|
|
359
390
|
}
|
|
360
391
|
if (((_a = startContainer.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === "SPAN") {
|
|
361
392
|
spanIndex = _.indexOf($textEditor.querySelectorAll("span"), span);
|
|
@@ -398,33 +429,33 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
398
429
|
for (var i = 0; i < startSpanIndex; i += 1) {
|
|
399
430
|
var span = spans[i];
|
|
400
431
|
var content = span.innerHTML;
|
|
401
|
-
cont += "<span style
|
|
432
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(span.style.cssText), "\">").concat(content, "</span>");
|
|
402
433
|
}
|
|
403
434
|
if (sleft !== "") {
|
|
404
|
-
cont += "<span style
|
|
435
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(startSpan.style.cssText), "\">").concat(sleft, "</span>");
|
|
405
436
|
}
|
|
406
437
|
if (sright !== "") {
|
|
407
438
|
var cssText = getCssText(startSpan.style.cssText, attr, value);
|
|
408
|
-
cont += "<span style
|
|
439
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\">").concat(sright, "</span>");
|
|
409
440
|
}
|
|
410
441
|
if (startSpanIndex < endSpanIndex) {
|
|
411
442
|
for (var i = startSpanIndex + 1; i < endSpanIndex; i += 1) {
|
|
412
443
|
var span = spans[i];
|
|
413
444
|
var content = span.innerHTML;
|
|
414
|
-
cont += "<span style
|
|
445
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(span.style.cssText), "\">").concat(content, "</span>");
|
|
415
446
|
}
|
|
416
447
|
}
|
|
417
448
|
if (eleft !== "") {
|
|
418
449
|
var cssText = getCssText(endSpan.style.cssText, attr, value);
|
|
419
|
-
cont += "<span style
|
|
450
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\">").concat(eleft, "</span>");
|
|
420
451
|
}
|
|
421
452
|
if (eright !== "") {
|
|
422
|
-
cont += "<span style
|
|
453
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(endSpan.style.cssText), "\">").concat(eright, "</span>");
|
|
423
454
|
}
|
|
424
455
|
for (var i = endSpanIndex + 1; i < spans.length; i += 1) {
|
|
425
456
|
var span = spans[i];
|
|
426
457
|
var content = span.innerHTML;
|
|
427
|
-
cont += "<span style
|
|
458
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(span.style.cssText), "\">").concat(content, "</span>");
|
|
428
459
|
}
|
|
429
460
|
$textEditor.innerHTML = cont;
|
|
430
461
|
var startSeletedNodeIndex = void 0;
|
|
@@ -442,13 +473,10 @@ export function updateInlineStringFormat(ctx, attr, value, cellInput) {
|
|
|
442
473
|
}
|
|
443
474
|
}
|
|
444
475
|
}
|
|
445
|
-
function escapeHtmlAttr(s) {
|
|
446
|
-
return s.replace(/&/g, "&").replace(/"/g, """).replace(/</g, "<").replace(/>/g, ">");
|
|
447
|
-
}
|
|
448
476
|
function getLinkDataAttrs(span) {
|
|
449
477
|
var _a, _b;
|
|
450
478
|
if (((_a = span.dataset) === null || _a === void 0 ? void 0 : _a.linkType) && ((_b = span.dataset) === null || _b === void 0 ? void 0 : _b.linkAddress)) {
|
|
451
|
-
return " data-link-type
|
|
479
|
+
return " data-link-type=\"".concat(escapeHtmlAttr(span.dataset.linkType), "\" data-link-address=\"").concat(escapeHtmlAttr(span.dataset.linkAddress), "\"");
|
|
452
480
|
}
|
|
453
481
|
return "";
|
|
454
482
|
}
|
|
@@ -486,7 +514,7 @@ export function applyLinkToSelection(cellInput, linkType, linkAddress) {
|
|
|
486
514
|
var box = span.closest("#luckysheet-input-box");
|
|
487
515
|
if (box != null) cssText = extendCssText(box.style.cssText, cssText);
|
|
488
516
|
}
|
|
489
|
-
cont += "<span style
|
|
517
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\"").concat(dataAttrs, ">").concat(left, "</span>");
|
|
490
518
|
}
|
|
491
519
|
if (mid !== "") {
|
|
492
520
|
var cssText = getLinkStyleCssText(span.style.cssText);
|
|
@@ -494,7 +522,7 @@ export function applyLinkToSelection(cellInput, linkType, linkAddress) {
|
|
|
494
522
|
var box = span.closest("#luckysheet-input-box");
|
|
495
523
|
if (box != null) cssText = extendCssText(box.style.cssText, cssText);
|
|
496
524
|
}
|
|
497
|
-
cont += "<span style
|
|
525
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\" data-link-type=\"").concat(escapeHtmlAttr(linkType), "\" data-link-address=\"").concat(escapeHtmlAttr(linkAddress), "\">").concat(mid, "</span>");
|
|
498
526
|
}
|
|
499
527
|
if (right !== "") {
|
|
500
528
|
var cssText = span.style.cssText;
|
|
@@ -502,7 +530,7 @@ export function applyLinkToSelection(cellInput, linkType, linkAddress) {
|
|
|
502
530
|
var box = span.closest("#luckysheet-input-box");
|
|
503
531
|
if (box != null) cssText = extendCssText(box.style.cssText, cssText);
|
|
504
532
|
}
|
|
505
|
-
cont += "<span style
|
|
533
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\"").concat(dataAttrs, ">").concat(right, "</span>");
|
|
506
534
|
}
|
|
507
535
|
if (((_a = startContainer.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) === "SPAN") {
|
|
508
536
|
span.outerHTML = cont;
|
|
@@ -532,32 +560,32 @@ export function applyLinkToSelection(cellInput, linkType, linkAddress) {
|
|
|
532
560
|
var cont = "";
|
|
533
561
|
for (var i = 0; i < startSpanIndex; i += 1) {
|
|
534
562
|
var sp = spans[i];
|
|
535
|
-
cont += "<span style
|
|
563
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(sp.style.cssText), "\"").concat(getLinkDataAttrs(sp), ">").concat(sp.innerHTML, "</span>");
|
|
536
564
|
}
|
|
537
565
|
if (sleft !== "") {
|
|
538
|
-
cont += "<span style
|
|
566
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(startSpan.style.cssText), "\"").concat(getLinkDataAttrs(startSpan), ">").concat(sleft, "</span>");
|
|
539
567
|
}
|
|
540
568
|
if (sright !== "") {
|
|
541
569
|
var cssText = getLinkStyleCssText(startSpan.style.cssText);
|
|
542
|
-
cont += "<span style
|
|
570
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\" data-link-type=\"").concat(escapeHtmlAttr(linkType), "\" data-link-address=\"").concat(escapeHtmlAttr(linkAddress), "\">").concat(sright, "</span>");
|
|
543
571
|
}
|
|
544
572
|
if (startSpanIndex < endSpanIndex) {
|
|
545
573
|
for (var i = startSpanIndex + 1; i < endSpanIndex; i += 1) {
|
|
546
574
|
var sp = spans[i];
|
|
547
575
|
var cssText = getLinkStyleCssText(sp.style.cssText);
|
|
548
|
-
cont += "<span style
|
|
576
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\" data-link-type=\"").concat(escapeHtmlAttr(linkType), "\" data-link-address=\"").concat(escapeHtmlAttr(linkAddress), "\">").concat(sp.innerHTML, "</span>");
|
|
549
577
|
}
|
|
550
578
|
}
|
|
551
579
|
if (eleft !== "") {
|
|
552
580
|
var cssText = getLinkStyleCssText(endSpan.style.cssText);
|
|
553
|
-
cont += "<span style
|
|
581
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(cssText), "\" data-link-type=\"").concat(escapeHtmlAttr(linkType), "\" data-link-address=\"").concat(escapeHtmlAttr(linkAddress), "\">").concat(eleft, "</span>");
|
|
554
582
|
}
|
|
555
583
|
if (eright !== "") {
|
|
556
|
-
cont += "<span style
|
|
584
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(endSpan.style.cssText), "\"").concat(getLinkDataAttrs(endSpan), ">").concat(eright, "</span>");
|
|
557
585
|
}
|
|
558
586
|
for (var i = endSpanIndex + 1; i < spans.length; i += 1) {
|
|
559
587
|
var sp = spans[i];
|
|
560
|
-
cont += "<span style
|
|
588
|
+
cont += "<span style=\"".concat(escapeHtmlAttr(sp.style.cssText), "\"").concat(getLinkDataAttrs(sp), ">").concat(sp.innerHTML, "</span>");
|
|
561
589
|
}
|
|
562
590
|
$textEditor.innerHTML = cont;
|
|
563
591
|
spans = $textEditor.querySelectorAll("span");
|
package/es/modules/validation.js
CHANGED
|
@@ -66,6 +66,7 @@ var MONTH_NAME_MAP = {
|
|
|
66
66
|
};
|
|
67
67
|
var MONTH_NAMES_RE = "january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|jun|jul|aug|sep|oct|nov|dec";
|
|
68
68
|
var MONTH_ABBR_RE = "jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec";
|
|
69
|
+
var MONTH_ABBR_SET = new Set(MONTH_ABBR_RE.split("|"));
|
|
69
70
|
function isValidDateParts(year, month, day) {
|
|
70
71
|
if (year < 1900) return false;
|
|
71
72
|
if (month < 1 || month > 12) return false;
|
|
@@ -280,6 +281,7 @@ export function detectDateFormat(str) {
|
|
|
280
281
|
var d = +m[2];
|
|
281
282
|
var y = +m[3];
|
|
282
283
|
if (mo && isValidDateParts(y, mo, d)) {
|
|
284
|
+
var isAbbr = MONTH_ABBR_SET.has(m[1].toLowerCase());
|
|
283
285
|
return {
|
|
284
286
|
year: y,
|
|
285
287
|
month: mo,
|
|
@@ -287,7 +289,7 @@ export function detectDateFormat(str) {
|
|
|
287
289
|
hours: 0,
|
|
288
290
|
minutes: 0,
|
|
289
291
|
seconds: 0,
|
|
290
|
-
formatType: "named"
|
|
292
|
+
formatType: isAbbr ? "named-mdy-abbr" : "named-mdy-full"
|
|
291
293
|
};
|
|
292
294
|
}
|
|
293
295
|
}
|
|
@@ -297,6 +299,7 @@ export function detectDateFormat(str) {
|
|
|
297
299
|
var mo = MONTH_NAME_MAP[m[2].toLowerCase()];
|
|
298
300
|
var y = +m[3];
|
|
299
301
|
if (mo && isValidDateParts(y, mo, d)) {
|
|
302
|
+
var isAbbr = MONTH_ABBR_SET.has(m[2].toLowerCase());
|
|
300
303
|
return {
|
|
301
304
|
year: y,
|
|
302
305
|
month: mo,
|
|
@@ -304,7 +307,7 @@ export function detectDateFormat(str) {
|
|
|
304
307
|
hours: 0,
|
|
305
308
|
minutes: 0,
|
|
306
309
|
seconds: 0,
|
|
307
|
-
formatType: "named"
|
|
310
|
+
formatType: isAbbr ? "named-dmy-abbr" : "named-dmy-full"
|
|
308
311
|
};
|
|
309
312
|
}
|
|
310
313
|
}
|
|
@@ -321,7 +324,7 @@ export function detectDateFormat(str) {
|
|
|
321
324
|
hours: 0,
|
|
322
325
|
minutes: 0,
|
|
323
326
|
seconds: 0,
|
|
324
|
-
formatType: "named"
|
|
327
|
+
formatType: "named-abbr-dashes"
|
|
325
328
|
};
|
|
326
329
|
}
|
|
327
330
|
}
|
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: "शीर्ष",
|