@fileverse-dev/fortune-core 1.3.10 → 1.3.11-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.
Files changed (71) hide show
  1. package/es/api/range.js +20 -0
  2. package/es/api/sheet.js +30 -2
  3. package/es/events/keyboard.js +74 -37
  4. package/es/events/mouse.js +1 -0
  5. package/es/events/paste.js +124 -56
  6. package/es/locale/en.d.ts +3 -0
  7. package/es/locale/en.js +3 -0
  8. package/es/locale/es.d.ts +3 -0
  9. package/es/locale/es.js +3 -0
  10. package/es/locale/hi.d.ts +3 -0
  11. package/es/locale/hi.js +3 -0
  12. package/es/locale/index.d.ts +3 -0
  13. package/es/locale/zh.d.ts +3 -0
  14. package/es/locale/zh.js +3 -0
  15. package/es/locale/zh_tw.d.ts +3 -0
  16. package/es/locale/zh_tw.js +3 -0
  17. package/es/modules/ConditionFormat.js +26 -0
  18. package/es/modules/cell.js +58 -2
  19. package/es/modules/comment.js +129 -24
  20. package/es/modules/dataVerification.js +34 -1
  21. package/es/modules/dropCell.js +65 -1
  22. package/es/modules/format.js +12 -7
  23. package/es/modules/formula.js +14 -0
  24. package/es/modules/hyperlink.js +52 -5
  25. package/es/modules/merge.js +93 -1
  26. package/es/modules/moveCells.js +35 -9
  27. package/es/modules/rowcol.js +75 -2
  28. package/es/modules/searchReplace.js +58 -2
  29. package/es/modules/selection.js +152 -42
  30. package/es/modules/sort.js +74 -9
  31. package/es/modules/splitColumn.js +21 -0
  32. package/es/modules/toolbar.js +46 -3
  33. package/es/modules/validation.js +6 -3
  34. package/es/settings.d.ts +5 -0
  35. package/es/types.d.ts +2 -0
  36. package/lib/api/range.js +20 -0
  37. package/lib/api/sheet.js +29 -1
  38. package/lib/events/keyboard.js +74 -37
  39. package/lib/events/mouse.js +1 -0
  40. package/lib/events/paste.js +122 -54
  41. package/lib/locale/en.d.ts +3 -0
  42. package/lib/locale/en.js +3 -0
  43. package/lib/locale/es.d.ts +3 -0
  44. package/lib/locale/es.js +3 -0
  45. package/lib/locale/hi.d.ts +3 -0
  46. package/lib/locale/hi.js +3 -0
  47. package/lib/locale/index.d.ts +3 -0
  48. package/lib/locale/zh.d.ts +3 -0
  49. package/lib/locale/zh.js +3 -0
  50. package/lib/locale/zh_tw.d.ts +3 -0
  51. package/lib/locale/zh_tw.js +3 -0
  52. package/lib/modules/ConditionFormat.js +26 -0
  53. package/lib/modules/cell.js +58 -2
  54. package/lib/modules/comment.js +129 -24
  55. package/lib/modules/dataVerification.js +34 -1
  56. package/lib/modules/dropCell.js +65 -1
  57. package/lib/modules/format.js +12 -7
  58. package/lib/modules/formula.js +14 -0
  59. package/lib/modules/hyperlink.js +52 -5
  60. package/lib/modules/merge.js +93 -1
  61. package/lib/modules/moveCells.js +35 -9
  62. package/lib/modules/rowcol.js +75 -2
  63. package/lib/modules/searchReplace.js +58 -2
  64. package/lib/modules/selection.js +152 -42
  65. package/lib/modules/sort.js +74 -9
  66. package/lib/modules/splitColumn.js +21 -0
  67. package/lib/modules/toolbar.js +46 -3
  68. package/lib/modules/validation.js +6 -3
  69. package/lib/settings.d.ts +5 -0
  70. package/lib/types.d.ts +2 -0
  71. package/package.json +1 -1
package/es/api/range.js CHANGED
@@ -78,6 +78,7 @@ export function setSelection(ctx, range, options) {
78
78
  }
79
79
  }
80
80
  export function setCellValuesByRange(ctx, data, range, cellInput, options, callAfterUpdate) {
81
+ var _a, _b, _c, _d, _e;
81
82
  if (options === void 0) {
82
83
  options = {};
83
84
  }
@@ -95,13 +96,32 @@ export function setCellValuesByRange(ctx, data, range, cellInput, options, callA
95
96
  if (data.length !== rowCount || data[0].length !== columnCount) {
96
97
  throw new Error("data size does not match range");
97
98
  }
99
+ var sheet = getSheet(ctx, options);
100
+ var sheetId = sheet.id || ctx.currentSheetId;
101
+ var cellChanges = [];
98
102
  for (var i = 0; i < rowCount; i += 1) {
99
103
  for (var j = 0; j < columnCount; j += 1) {
100
104
  var row = range.row[0] + i;
101
105
  var column = range.column[0] + j;
102
106
  setCellValue(ctx, row, column, data[i][j], cellInput, options, callAfterUpdate);
107
+ if (((_a = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _a === void 0 ? void 0 : _a.updateCellYdoc) && sheet.data) {
108
+ cellChanges.push({
109
+ sheetId: sheetId,
110
+ path: ["celldata"],
111
+ value: {
112
+ r: row,
113
+ c: column,
114
+ v: (_d = (_c = (_b = sheet.data) === null || _b === void 0 ? void 0 : _b[row]) === null || _c === void 0 ? void 0 : _c[column]) !== null && _d !== void 0 ? _d : null
115
+ },
116
+ key: "".concat(row, "_").concat(column),
117
+ type: "update"
118
+ });
119
+ }
103
120
  }
104
121
  }
122
+ if (cellChanges.length > 0 && ((_e = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _e === void 0 ? void 0 : _e.updateCellYdoc)) {
123
+ ctx.hooks.updateCellYdoc(cellChanges);
124
+ }
105
125
  }
106
126
  export function setCellFormatByRange(ctx, attr, value, range, options) {
107
127
  if (options === void 0) {
package/es/api/sheet.js CHANGED
@@ -13,7 +13,7 @@ import _ from "lodash";
13
13
  import { v4 as uuidv4 } from "uuid";
14
14
  import { dataToCelldata, getSheet } from "./common";
15
15
  import { getSheetIndex } from "../utils";
16
- import { api, execfunction, getFlowdata, insertUpdateFunctionGroup, locale, spillSortResult } from "..";
16
+ import { api, changeSheet, execfunction, getFlowdata, insertUpdateFunctionGroup, locale, spillSortResult } from "..";
17
17
  function isCellReferenced(formulaString, cell) {
18
18
  function colToNumber(col) {
19
19
  var num = 0;
@@ -146,7 +146,7 @@ function generateCopySheetName(ctx, sheetId) {
146
146
  return sheetCopyName;
147
147
  }
148
148
  export function copySheet(ctx, sheetId) {
149
- var _a, _b, _c;
149
+ var _a, _b, _c, _d, _e;
150
150
  var index = getSheetIndex(ctx, sheetId);
151
151
  var order = ctx.luckysheetfile[index].order + 1;
152
152
  var sheetName = generateCopySheetName(ctx, sheetId);
@@ -183,6 +183,34 @@ export function copySheet(ctx, sheetId) {
183
183
  var sheetOrderList = {};
184
184
  sheetOrderList[newSheetId] = order;
185
185
  api.setSheetOrder(ctx, sheetOrderList);
186
+ changeSheet(ctx, newSheetId, undefined, true, true);
187
+ if ((_d = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _d === void 0 ? void 0 : _d.updateAllCell) {
188
+ ctx.hooks.updateAllCell(newSheetId);
189
+ } else if ((_e = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _e === void 0 ? void 0 : _e.updateCellYdoc) {
190
+ var changes_1 = [];
191
+ var celldata = newSheet.celldata || dataToCelldata(newSheet.data);
192
+ if (Array.isArray(celldata)) {
193
+ celldata.forEach(function (d) {
194
+ var _a;
195
+ if (d == null) return;
196
+ var r = d.r;
197
+ var c = d.c;
198
+ if (!_.isNumber(r) || !_.isNumber(c)) return;
199
+ changes_1.push({
200
+ sheetId: newSheetId,
201
+ path: ["celldata"],
202
+ key: "".concat(r, "_").concat(c),
203
+ value: {
204
+ r: r,
205
+ c: c,
206
+ v: (_a = d.v) !== null && _a !== void 0 ? _a : null
207
+ },
208
+ type: d.v == null ? "delete" : "update"
209
+ });
210
+ });
211
+ }
212
+ if (changes_1.length > 0) ctx.hooks.updateCellYdoc(changes_1);
213
+ }
186
214
  }
187
215
  export function calculateSheetFromula(ctx, id) {
188
216
  var _a, _b, _c;
@@ -169,63 +169,72 @@ function moveToEdge(sheetData, key, curr, rowDelta, colDelta, startR, endR, star
169
169
  return colDelta === 0 ? r : c;
170
170
  }
171
171
  function handleControlPlusArrowKey(ctx, e, shiftPressed) {
172
- if (ctx.luckysheetCellUpdate.length > 0) return;
172
+ var _a, _b, _c, _d;
173
173
  var idx = getSheetIndex(ctx, ctx.currentSheetId);
174
174
  if (_.isNil(idx)) return;
175
175
  var file = ctx.luckysheetfile[idx];
176
- if (!file || !file.row || !file.column) return;
177
176
  var maxRow = file.row;
178
177
  var maxCol = file.column;
179
- var last;
180
- if (ctx.luckysheet_select_save && ctx.luckysheet_select_save.length > 0) last = ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1];
178
+ if (_.isNil(maxRow) || _.isNil(maxCol)) return;
179
+ var last = ctx.luckysheet_select_save && ctx.luckysheet_select_save.length > 0 ? ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1] : undefined;
181
180
  if (!last) return;
182
181
  var currR = last.row_focus;
183
182
  var currC = last.column_focus;
184
183
  if (_.isNil(currR) || _.isNil(currC)) return;
185
- var startR = last.row[0];
186
- var endR = last.row[1];
187
- var startC = last.column[0];
188
- var endC = last.column[1];
184
+ var startR = (_a = last.row) === null || _a === void 0 ? void 0 : _a[0];
185
+ var endR = (_b = last.row) === null || _b === void 0 ? void 0 : _b[1];
186
+ var startC = (_c = last.column) === null || _c === void 0 ? void 0 : _c[0];
187
+ var endC = (_d = last.column) === null || _d === void 0 ? void 0 : _d[1];
188
+ if (_.isNil(startR) || _.isNil(endR) || _.isNil(startC) || _.isNil(endC)) {
189
+ return;
190
+ }
189
191
  var horizontalOffset = currC - endC !== 0 ? currC - endC : currC - startC;
190
192
  var verticalOffset = currR - endR !== 0 ? currR - endR : currR - startR;
191
193
  var sheetData = file.data;
192
194
  if (!sheetData) return;
193
- var selectedLimit;
194
195
  switch (e.key) {
195
196
  case "ArrowUp":
196
- selectedLimit = moveToEdge(sheetData, e.key, currC, -1, 0, startR, endR, startC, endC, maxRow, maxCol);
197
- if (shiftPressed) {
198
- moveHighlightRange(ctx, "down", verticalOffset, "rangeOfSelect");
199
- moveHighlightRange(ctx, "down", selectedLimit - currR, "rangeOfSelect");
200
- } else {
201
- moveHighlightCell(ctx, "down", selectedLimit - currR, "rangeOfSelect");
197
+ {
198
+ var selectedLimit = moveToEdge(sheetData, e.key, currC, -1, 0, startR, endR, startC, endC, maxRow, maxCol);
199
+ if (shiftPressed) {
200
+ moveHighlightRange(ctx, "down", verticalOffset, "rangeOfSelect");
201
+ moveHighlightRange(ctx, "down", selectedLimit - currR, "rangeOfSelect");
202
+ } else {
203
+ moveHighlightCell(ctx, "down", selectedLimit - currR, "rangeOfSelect");
204
+ }
202
205
  }
203
206
  break;
204
207
  case "ArrowDown":
205
- selectedLimit = moveToEdge(sheetData, e.key, currC, 1, 0, startR, endR, startC, endC, maxRow, maxCol);
206
- if (shiftPressed) {
207
- moveHighlightRange(ctx, "down", verticalOffset, "rangeOfSelect");
208
- moveHighlightRange(ctx, "down", selectedLimit - currR, "rangeOfSelect");
209
- } else {
210
- moveHighlightCell(ctx, "down", selectedLimit - currR, "rangeOfSelect");
208
+ {
209
+ var selectedLimit = moveToEdge(sheetData, e.key, currC, 1, 0, startR, endR, startC, endC, maxRow, maxCol);
210
+ if (shiftPressed) {
211
+ moveHighlightRange(ctx, "down", verticalOffset, "rangeOfSelect");
212
+ moveHighlightRange(ctx, "down", selectedLimit - currR, "rangeOfSelect");
213
+ } else {
214
+ moveHighlightCell(ctx, "down", selectedLimit - currR, "rangeOfSelect");
215
+ }
211
216
  }
212
217
  break;
213
218
  case "ArrowLeft":
214
- selectedLimit = moveToEdge(sheetData, e.key, currR, 0, -1, startR, endR, startC, endC, maxRow, maxCol);
215
- if (shiftPressed) {
216
- moveHighlightRange(ctx, "right", horizontalOffset, "rangeOfSelect");
217
- moveHighlightRange(ctx, "right", selectedLimit - currC, "rangeOfSelect");
218
- } else {
219
- moveHighlightCell(ctx, "right", selectedLimit - currC, "rangeOfSelect");
219
+ {
220
+ var selectedLimit = moveToEdge(sheetData, e.key, currR, 0, -1, startR, endR, startC, endC, maxRow, maxCol);
221
+ if (shiftPressed) {
222
+ moveHighlightRange(ctx, "right", horizontalOffset, "rangeOfSelect");
223
+ moveHighlightRange(ctx, "right", selectedLimit - currC, "rangeOfSelect");
224
+ } else {
225
+ moveHighlightCell(ctx, "right", selectedLimit - currC, "rangeOfSelect");
226
+ }
220
227
  }
221
228
  break;
222
229
  case "ArrowRight":
223
- selectedLimit = moveToEdge(sheetData, e.key, currR, 0, 1, startR, endR, startC, endC, maxRow, maxCol);
224
- if (shiftPressed) {
225
- moveHighlightRange(ctx, "right", horizontalOffset, "rangeOfSelect");
226
- moveHighlightRange(ctx, "right", selectedLimit - currC, "rangeOfSelect");
227
- } else {
228
- moveHighlightCell(ctx, "right", selectedLimit - currC, "rangeOfSelect");
230
+ {
231
+ var selectedLimit = moveToEdge(sheetData, e.key, currR, 0, 1, startR, endR, startC, endC, maxRow, maxCol);
232
+ if (shiftPressed) {
233
+ moveHighlightRange(ctx, "right", horizontalOffset, "rangeOfSelect");
234
+ moveHighlightRange(ctx, "right", selectedLimit - currC, "rangeOfSelect");
235
+ } else {
236
+ moveHighlightCell(ctx, "right", selectedLimit - currC, "rangeOfSelect");
237
+ }
229
238
  }
230
239
  break;
231
240
  default:
@@ -378,37 +387,51 @@ export function handleArrowKey(ctx, e) {
378
387
  }
379
388
  }
380
389
  export function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, handleRedo, canvas) {
381
- var _a, _b, _c;
390
+ var _a, _b, _c, _d;
382
391
  return __awaiter(this, void 0, void 0, function () {
383
- var kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, last, row_index, col_index;
384
- return __generator(this, function (_d) {
392
+ var handledFlvShortcut, kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, isEditing, inputText, isFormulaEdit, enteredByTyping, last, row_index, col_index;
393
+ return __generator(this, function (_e) {
385
394
  if (e.shiftKey && e.code === "Space") {
386
395
  e.stopImmediatePropagation();
387
396
  e.stopPropagation();
388
397
  e.preventDefault();
389
398
  return [2];
390
399
  }
400
+ handledFlvShortcut = false;
391
401
  if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyE") {
392
402
  textFormat(ctx, "center");
403
+ handledFlvShortcut = true;
393
404
  } else if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyL") {
394
405
  textFormat(ctx, "left");
406
+ handledFlvShortcut = true;
395
407
  } else if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyR") {
396
408
  textFormat(ctx, "right");
409
+ handledFlvShortcut = true;
397
410
  }
398
411
  if ((e.metaKey || e.ctrlKey) && e.code === "KeyK") {
399
412
  handleLink(ctx, cellInput);
400
413
  }
401
414
  if ((e.metaKey || e.ctrlKey) && !e.shiftKey && e.code === "Semicolon") {
402
415
  fillDate(ctx);
416
+ handledFlvShortcut = true;
403
417
  }
404
418
  if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.code === "Semicolon") {
405
419
  fillTime(ctx);
420
+ handledFlvShortcut = true;
406
421
  }
407
422
  if ((e.metaKey || e.ctrlKey) && !e.shiftKey && e.code === "KeyR") {
408
423
  fillRightData(ctx);
424
+ handledFlvShortcut = true;
409
425
  }
410
426
  if ((e.metaKey || e.ctrlKey) && e.code === "KeyD") {
411
427
  fillDownData(ctx);
428
+ handledFlvShortcut = true;
429
+ }
430
+ if (handledFlvShortcut) {
431
+ jfrefreshgrid(ctx, null, undefined);
432
+ e.stopPropagation();
433
+ e.preventDefault();
434
+ return [2];
412
435
  }
413
436
  ctx.luckysheet_select_status = false;
414
437
  kcode = e.keyCode;
@@ -475,7 +498,18 @@ export function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUnd
475
498
  jfrefreshgrid(ctx, null, undefined);
476
499
  e.preventDefault();
477
500
  } else if (kstr === "ArrowUp" || kstr === "ArrowDown" || kstr === "ArrowLeft" || kstr === "ArrowRight") {
478
- handleArrowKey(ctx, e);
501
+ isEditing = ctx.luckysheetCellUpdate.length > 0;
502
+ inputText = (_d = cellInput === null || cellInput === void 0 ? void 0 : cellInput.innerText) !== null && _d !== void 0 ? _d : "";
503
+ isFormulaEdit = isEditing && inputText.trim().startsWith("=");
504
+ enteredByTyping = cache.enteredEditByTyping === true;
505
+ if (isEditing && !isFormulaEdit && enteredByTyping) {
506
+ updateCell(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput, undefined, canvas);
507
+ cache.enteredEditByTyping = false;
508
+ handleArrowKey(ctx, e);
509
+ e.preventDefault();
510
+ } else {
511
+ handleArrowKey(ctx, e);
512
+ }
479
513
  } 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) {
480
514
  if (!allowEdit) return [2];
481
515
  if (String.fromCharCode(kcode) != null && !_.isEmpty(ctx.luckysheet_select_save) && kstr !== "CapsLock" && kstr !== "Win" && kcode !== 18) {
@@ -484,7 +518,10 @@ export function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUnd
484
518
  col_index = last.column_focus;
485
519
  ctx.luckysheetCellUpdate = [row_index, col_index];
486
520
  cache.overwriteCell = true;
521
+ cache.overwriteCellFirstChar = e.key;
522
+ cache.enteredEditByTyping = true;
487
523
  handleFormulaInput(ctx, fxInput, cellInput, kcode);
524
+ e.preventDefault();
488
525
  }
489
526
  }
490
527
  }
@@ -487,6 +487,7 @@ export function handleCellAreaDoubleClick(ctx, globalCache, settings, e, contain
487
487
  row_index = row_focus;
488
488
  col_index = column_focus;
489
489
  }
490
+ globalCache.enteredEditByTyping = false;
490
491
  luckysheetUpdateCell(ctx, row_index, col_index);
491
492
  }
492
493
  export function handleContextMenu(ctx, settings, e, workbookContainer, container, area) {
@@ -34,10 +34,10 @@ import { handlePastedTable } from "../paste-table-helpers";
34
34
  import { getFlowdata } from "../context";
35
35
  import { execfunction } from "../modules/formula";
36
36
  import { getdatabyselection } from "../modules/cell";
37
- import { update, datenum_local } from "../modules/format";
37
+ import { update, genarate } from "../modules/format";
38
38
  import { normalizeSelection, selectionCache } from "../modules/selection";
39
39
  import { getSheetIndex, isAllowEdit } from "../utils";
40
- import { hasPartMC, isRealNum, detectDateFormat } from "../modules/validation";
40
+ import { hasPartMC, isRealNum } from "../modules/validation";
41
41
  import { getBorderInfoCompute } from "../modules/border";
42
42
  import { expandRowsAndColumns, storeSheetParamALL } from "../modules/sheet";
43
43
  import { jfrefreshgrid } from "../modules/refresh";
@@ -203,19 +203,19 @@ var handleFormulaOnPaste = function handleFormulaOnPaste(ctx, d) {
203
203
  cell.f = f;
204
204
  cell.m = v.toString();
205
205
  x[c] = cell;
206
+ changes.push({
207
+ sheetId: ctx.currentSheetId,
208
+ path: ["celldata"],
209
+ value: {
210
+ r: r,
211
+ c: c,
212
+ v: d[r][c]
213
+ },
214
+ key: "".concat(r, "_").concat(c),
215
+ type: "update"
216
+ });
206
217
  }
207
218
  d[r] = x;
208
- changes.push({
209
- sheetId: ctx.currentSheetId,
210
- path: ["celldata"],
211
- value: {
212
- r: r,
213
- c: c,
214
- v: d[r][c]
215
- },
216
- key: "".concat(r, "_").concat(c),
217
- type: "update"
218
- });
219
219
  }
220
220
  }
221
221
  if ((_b = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _b === void 0 ? void 0 : _b.updateCellYdoc) {
@@ -223,7 +223,7 @@ var handleFormulaOnPaste = function handleFormulaOnPaste(ctx, d) {
223
223
  }
224
224
  };
225
225
  function pasteHandler(ctx, data, borderInfo) {
226
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
226
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
227
227
  if (ctx.luckysheet_selection_range) {
228
228
  ctx.luckysheet_selection_range = [];
229
229
  }
@@ -349,7 +349,9 @@ function pasteHandler(ctx, data, borderInfo) {
349
349
  ctx.luckysheetfile[getSheetIndex(ctx, ctx.currentSheetId)].config = cfg;
350
350
  }
351
351
  jfrefreshgrid(ctx, null, undefined);
352
- handleFormulaOnPaste(ctx, d);
352
+ if (data.includes("=")) {
353
+ handleFormulaOnPaste(ctx, d);
354
+ }
353
355
  } else {
354
356
  data = data.replace(/\r/g, "");
355
357
  var dataChe = [];
@@ -405,25 +407,39 @@ function pasteHandler(ctx, data, borderInfo) {
405
407
  }
406
408
  }
407
409
  if (originCell) {
408
- if (originCell.ct && originCell.ct.t === "d" && !isUrl) {
409
- var df = detectDateFormat(originalValueStr);
410
- if (df) {
411
- var dateObj = new Date(df.year, df.month - 1, df.day, df.hours, df.minutes, df.seconds);
412
- originCell.v = datenum_local(dateObj);
413
- } else {
414
- originCell.v = originalValueStr;
415
- }
416
- } else {
417
- originCell.v = isUrl ? originalValueStr : value;
418
- }
419
- if (originCell.ct != null && originCell.ct.fa != null) {
420
- if (originCell.ct.t === "d" && typeof originCell.v !== "number") {
421
- originCell.m = String(originCell.v);
410
+ if (!isUrl) {
411
+ var generated = genarate(originalValueStr);
412
+ if (generated) {
413
+ var genM = generated[0],
414
+ genCt = generated[1],
415
+ genV = generated[2];
416
+ if ((genCt === null || genCt === void 0 ? void 0 : genCt.t) === "d") {
417
+ originCell.v = genV;
418
+ originCell.m = genM !== null && genM !== void 0 ? genM : originalValueStr;
419
+ originCell.ct = genCt;
420
+ } else {
421
+ originCell.v = value;
422
+ if (originCell.ct != null && originCell.ct.fa != null) {
423
+ if (originCell.ct.t === "d" && typeof originCell.v !== "number") {
424
+ originCell.m = String(originCell.v);
425
+ } else {
426
+ originCell.m = update(originCell.ct.fa, originCell.v);
427
+ }
428
+ } else {
429
+ originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
430
+ }
431
+ }
422
432
  } else {
423
- originCell.m = update(originCell.ct.fa, originCell.v);
433
+ originCell.v = value;
434
+ if (originCell.ct != null && originCell.ct.fa != null) {
435
+ originCell.m = update(originCell.ct.fa, originCell.v);
436
+ } else {
437
+ originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
438
+ }
424
439
  }
425
440
  } else {
426
- originCell.m = typeof originCell.v === "boolean" ? String(originCell.v) : originCell.v;
441
+ originCell.v = originalValueStr;
442
+ originCell.m = originalValueStr;
427
443
  }
428
444
  if (originCell.f != null && originCell.f.length > 0) {
429
445
  originCell.f = "";
@@ -450,19 +466,24 @@ function pasteHandler(ctx, data, borderInfo) {
450
466
  t: "s"
451
467
  };
452
468
  } else {
453
- cell.v = originalValueStr;
454
- cell.m = originalValueStr;
455
- cell.ct = {
456
- fa: "General",
457
- t: "g"
458
- };
459
469
  if (/^0x?[a-fA-F0-9]+$/.test(value)) {
470
+ cell.v = value;
460
471
  cell.m = value;
461
472
  cell.ct = {
462
473
  fa: "@",
463
474
  t: "s"
464
475
  };
465
- cell.v = value;
476
+ } else {
477
+ var _m = (_j = genarate(originalValueStr)) !== null && _j !== void 0 ? _j : [],
478
+ m = _m[0],
479
+ ct = _m[1],
480
+ v = _m[2];
481
+ cell.v = v !== null && v !== void 0 ? v : originalValueStr;
482
+ cell.m = m != null ? String(m) : originalValueStr;
483
+ cell.ct = ct !== null && ct !== void 0 ? ct : {
484
+ fa: "General",
485
+ t: "g"
486
+ };
466
487
  }
467
488
  }
468
489
  if (isUrl && url) {
@@ -479,27 +500,29 @@ function pasteHandler(ctx, data, borderInfo) {
479
500
  }
480
501
  x[c + curC] = cell;
481
502
  }
482
- changes.push(changes.push({
503
+ changes.push({
483
504
  sheetId: ctx.currentSheetId,
484
505
  path: ["celldata"],
485
506
  value: {
486
- r: r,
487
- c: c,
488
- v: d[r][c]
507
+ r: r + curR,
508
+ c: c + curC,
509
+ v: d[r + curR][c + curC]
489
510
  },
490
- key: "".concat(r, "_").concat(c),
511
+ key: "".concat(r + curR, "_").concat(c + curC),
491
512
  type: "update"
492
- }));
513
+ });
493
514
  }
494
515
  d[r + curR] = x;
495
516
  }
496
- if ((_j = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _j === void 0 ? void 0 : _j.updateCellYdoc) {
497
- (_k = ctx.hooks) === null || _k === void 0 ? void 0 : _k.updateCellYdoc(changes);
517
+ if ((_k = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _k === void 0 ? void 0 : _k.updateCellYdoc) {
518
+ (_l = ctx.hooks) === null || _l === void 0 ? void 0 : _l.updateCellYdoc(changes);
498
519
  }
499
520
  last.row = [curR, curR + rlen - 1];
500
521
  last.column = [curC, curC + clen - 1];
501
522
  jfrefreshgrid(ctx, null, undefined);
502
- handleFormulaOnPaste(ctx, d);
523
+ if (data.includes("=")) {
524
+ handleFormulaOnPaste(ctx, d);
525
+ }
503
526
  }
504
527
  }
505
528
  function setCellHyperlink(ctx, id, r, c, link) {
@@ -510,7 +533,7 @@ function setCellHyperlink(ctx, id, r, c, link) {
510
533
  ctx.luckysheetfile[index].hyperlink["".concat(r, "_").concat(c)] = link;
511
534
  }
512
535
  function pasteHandlerOfCutPaste(ctx, copyRange) {
513
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
536
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
514
537
  var allowEdit = isAllowEdit(ctx);
515
538
  if (!allowEdit || ctx.isFlvReadOnly) return;
516
539
  if (!copyRange) return;
@@ -553,6 +576,7 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
553
576
  if (addr > 0 || addc > 0) {
554
577
  expandRowsAndColumns(d, addr, addc);
555
578
  }
579
+ var changes = [];
556
580
  var borderInfoCompute = getBorderInfoCompute(ctx, copySheetId);
557
581
  var c_dataVerification = _.cloneDeep(ctx.luckysheetfile[getSheetIndex(ctx, copySheetId)].dataVerification) || {};
558
582
  var dataVerification = _.cloneDeep(ctx.luckysheetfile[getSheetIndex(ctx, ctx.currentSheetId)].dataVerification) || {};
@@ -584,6 +608,17 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
584
608
  delete cell.mc;
585
609
  }
586
610
  d[i][j] = null;
611
+ changes.push({
612
+ sheetId: ctx.currentSheetId,
613
+ path: ["celldata"],
614
+ value: {
615
+ r: i,
616
+ c: j,
617
+ v: null
618
+ },
619
+ key: "".concat(i, "_").concat(j),
620
+ type: "update"
621
+ });
587
622
  delete dataVerification["".concat(i, "_").concat(j)];
588
623
  (_f = ctx.luckysheetfile[getSheetIndex(ctx, ctx.currentSheetId)].hyperlink) === null || _f === void 0 ? true : delete _f["".concat(i, "_").concat(j)];
589
624
  }
@@ -683,6 +718,17 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
683
718
  value = copyData[h - minh][c - minc];
684
719
  }
685
720
  x[c] = _.cloneDeep(value);
721
+ changes.push({
722
+ sheetId: ctx.currentSheetId,
723
+ path: ["celldata"],
724
+ value: {
725
+ r: h,
726
+ c: c,
727
+ v: d[h][c]
728
+ },
729
+ key: "".concat(h, "_").concat(c),
730
+ type: "update"
731
+ });
686
732
  if (value != null && copyHasMC && ((_k = x[c]) === null || _k === void 0 ? void 0 : _k.mc)) {
687
733
  if (x[c].mc.rs != null) {
688
734
  x[c].mc.r = h;
@@ -703,6 +749,9 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
703
749
  }
704
750
  last.row = [minh, maxh];
705
751
  last.column = [minc, maxc];
752
+ if (changes.length > 0 && ((_l = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _l === void 0 ? void 0 : _l.updateCellYdoc)) {
753
+ ctx.hooks.updateCellYdoc(changes);
754
+ }
706
755
  if (copyRowlChange) {}
707
756
  var source;
708
757
  var target;
@@ -785,7 +834,7 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
785
834
  }
786
835
  source_curCdformat[i].cellrange = emptyRange;
787
836
  if (emptyRange2.length > 0) {
788
- var ruleObj = (_l = source_curCdformat[i]) !== null && _l !== void 0 ? _l : {};
837
+ var ruleObj = (_m = source_curCdformat[i]) !== null && _m !== void 0 ? _m : {};
789
838
  ruleObj.cellrange = emptyRange2;
790
839
  ruleArr.push(ruleObj);
791
840
  }
@@ -889,7 +938,7 @@ function pasteHandlerOfCutPaste(ctx, copyRange) {
889
938
  }
890
939
  }
891
940
  function pasteHandlerOfCopyPaste(ctx, copyRange) {
892
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
941
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
893
942
  var allowEdit = isAllowEdit(ctx);
894
943
  if (!allowEdit || ctx.isFlvReadOnly) return;
895
944
  if (!copyRange) return;
@@ -980,6 +1029,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
980
1029
  if (addr > 0 || addc > 0) {
981
1030
  expandRowsAndColumns(d, addr, addc);
982
1031
  }
1032
+ var changes = [];
983
1033
  var borderInfoCompute = getBorderInfoCompute(ctx, copySheetIndex);
984
1034
  var c_dataVerification = _.cloneDeep(ctx.luckysheetfile[getSheetIndex(ctx, copySheetIndex)].dataVerification) || {};
985
1035
  var dataVerification = null;
@@ -1069,6 +1119,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1069
1119
  value.m = "Loading...";
1070
1120
  }
1071
1121
  }
1122
+ var afterHookCalled = false;
1072
1123
  if (!_.isNil(value) && !_.isNil(value.f)) {
1073
1124
  var adjustedFormula = value.f;
1074
1125
  var isError = false;
@@ -1121,6 +1172,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1121
1172
  v: arr.length === 1 ? funcV[1] : value.v,
1122
1173
  m: funcV[1] instanceof Promise ? "[object Promise]" : funcV[1]
1123
1174
  }));
1175
+ afterHookCalled = true;
1124
1176
  }
1125
1177
  }
1126
1178
  if (!_.isNil(value.spl)) {}
@@ -1141,6 +1193,19 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1141
1193
  };
1142
1194
  }
1143
1195
  }
1196
+ if (!(((_k = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _k === void 0 ? void 0 : _k.afterUpdateCell) && afterHookCalled)) {
1197
+ changes.push({
1198
+ sheetId: ctx.currentSheetId,
1199
+ path: ["celldata"],
1200
+ value: {
1201
+ r: h,
1202
+ c: c,
1203
+ v: d[h][c]
1204
+ },
1205
+ key: "".concat(h, "_").concat(c),
1206
+ type: "update"
1207
+ });
1208
+ }
1144
1209
  }
1145
1210
  d[h] = x;
1146
1211
  }
@@ -1152,7 +1217,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1152
1217
  var a_file = ctx.luckysheetfile[getSheetIndex(ctx, ctx.currentSheetId)];
1153
1218
  var ruleArr_cf = _.cloneDeep(c_file.luckysheet_conditionformat_save);
1154
1219
  if (!_.isNil(ruleArr_cf) && ruleArr_cf.length > 0) {
1155
- cdformat = (_k = _.cloneDeep(a_file.luckysheet_conditionformat_save)) !== null && _k !== void 0 ? _k : [];
1220
+ cdformat = (_l = _.cloneDeep(a_file.luckysheet_conditionformat_save)) !== null && _l !== void 0 ? _l : [];
1156
1221
  for (var i = 0; i < ruleArr_cf.length; i += 1) {
1157
1222
  var cf_range = ruleArr_cf[i].cellrange;
1158
1223
  var emptyRange = [];
@@ -1188,8 +1253,8 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1188
1253
  file.config = cfg;
1189
1254
  file.luckysheet_conditionformat_save = cdformat;
1190
1255
  file.dataVerification = __assign(__assign({}, file.dataVerification), dataVerification);
1191
- if (((_l = ctx.luckysheet_select_save) === null || _l === void 0 ? void 0 : _l.length) === 1 && ((_m = ctx.luckysheet_copy_save) === null || _m === void 0 ? void 0 : _m.copyRange.length) === 1) {
1192
- var srcIndex = getSheetIndex(ctx, (_o = ctx.luckysheet_copy_save) === null || _o === void 0 ? void 0 : _o.dataSheetId);
1256
+ if (((_m = ctx.luckysheet_select_save) === null || _m === void 0 ? void 0 : _m.length) === 1 && ((_o = ctx.luckysheet_copy_save) === null || _o === void 0 ? void 0 : _o.copyRange.length) === 1) {
1257
+ var srcIndex = getSheetIndex(ctx, (_p = ctx.luckysheet_copy_save) === null || _p === void 0 ? void 0 : _p.dataSheetId);
1193
1258
  var targetSheetIndex = getSheetIndex(ctx, ctx.currentSheetId);
1194
1259
  var srcHyperlinks = ctx.luckysheetfile[srcIndex].hyperlink;
1195
1260
  var srcData = ctx.luckysheetfile[srcIndex].data;
@@ -1200,7 +1265,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1200
1265
  var isSingleCell = copyh === 1 && copyc === 1;
1201
1266
  var cachedSrcLinkKey = isSingleCell ? "".concat(c_r1, "_").concat(c_c1) : null;
1202
1267
  var cachedSrcLink = isSingleCell && srcHyperlinks ? srcHyperlinks[cachedSrcLinkKey] : null;
1203
- var cachedSrcCell = isSingleCell && srcData ? (_p = srcData[c_r1]) === null || _p === void 0 ? void 0 : _p[c_c1] : null;
1268
+ var cachedSrcCell = isSingleCell && srcData ? (_q = srcData[c_r1]) === null || _q === void 0 ? void 0 : _q[c_c1] : null;
1204
1269
  for (var th = 1; th <= timesH; th += 1) {
1205
1270
  for (var tc = 1; tc <= timesC; tc += 1) {
1206
1271
  var linkMth = minh + (th - 1) * copyh;
@@ -1220,7 +1285,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1220
1285
  if (!srcLink) continue;
1221
1286
  var targetKey = "".concat(h, "_").concat(c);
1222
1287
  targetHyperlinks[targetKey] = srcLink;
1223
- var cell = (_q = d[h]) === null || _q === void 0 ? void 0 : _q[c];
1288
+ var cell = (_r = d[h]) === null || _r === void 0 ? void 0 : _r[c];
1224
1289
  if (cell) {
1225
1290
  var srcCell = void 0;
1226
1291
  if (isSingleCell && cachedSrcCell) {
@@ -1228,7 +1293,7 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1228
1293
  } else {
1229
1294
  var srcRow = c_r1 + (h - linkMth);
1230
1295
  var srcCol = c_c1 + (c - linkMtc);
1231
- srcCell = (_r = srcData === null || srcData === void 0 ? void 0 : srcData[srcRow]) === null || _r === void 0 ? void 0 : _r[srcCol];
1296
+ srcCell = (_s = srcData === null || srcData === void 0 ? void 0 : srcData[srcRow]) === null || _s === void 0 ? void 0 : _s[srcCol];
1232
1297
  }
1233
1298
  cell.hl = {
1234
1299
  r: h,
@@ -1248,6 +1313,9 @@ function pasteHandlerOfCopyPaste(ctx, copyRange) {
1248
1313
  }
1249
1314
  }
1250
1315
  }
1316
+ if (changes.length > 0 && ((_t = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _t === void 0 ? void 0 : _t.updateCellYdoc)) {
1317
+ ctx.hooks.updateCellYdoc(changes);
1318
+ }
1251
1319
  if (copyRowlChange || addr > 0 || addc > 0) {
1252
1320
  jfrefreshgrid(ctx, d, ctx.luckysheet_select_save);
1253
1321
  } else {