@fileverse-dev/fortune-core 1.3.10 → 1.3.11-input-ref-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/es/api/range.js +20 -0
  2. package/es/api/sheet.js +30 -2
  3. package/es/events/keyboard.js +50 -15
  4. package/es/events/mouse.js +62 -40
  5. package/es/events/paste.js +77 -28
  6. package/es/modules/cell.js +60 -2
  7. package/es/modules/comment.js +129 -24
  8. package/es/modules/dataVerification.js +34 -1
  9. package/es/modules/dropCell.js +65 -1
  10. package/es/modules/formula.d.ts +11 -0
  11. package/es/modules/formula.js +390 -47
  12. package/es/modules/hyperlink.js +52 -5
  13. package/es/modules/merge.js +93 -1
  14. package/es/modules/moveCells.js +35 -9
  15. package/es/modules/rowcol.js +75 -2
  16. package/es/modules/searchReplace.js +58 -2
  17. package/es/modules/selection.js +152 -42
  18. package/es/modules/sort.js +74 -9
  19. package/es/modules/splitColumn.js +21 -0
  20. package/es/modules/toolbar.js +46 -3
  21. package/es/settings.d.ts +5 -0
  22. package/lib/api/range.js +20 -0
  23. package/lib/api/sheet.js +29 -1
  24. package/lib/events/keyboard.js +49 -14
  25. package/lib/events/mouse.js +61 -39
  26. package/lib/events/paste.js +77 -28
  27. package/lib/modules/cell.js +60 -2
  28. package/lib/modules/comment.js +129 -24
  29. package/lib/modules/dataVerification.js +34 -1
  30. package/lib/modules/dropCell.js +65 -1
  31. package/lib/modules/formula.d.ts +11 -0
  32. package/lib/modules/formula.js +399 -47
  33. package/lib/modules/hyperlink.js +52 -5
  34. package/lib/modules/merge.js +93 -1
  35. package/lib/modules/moveCells.js +35 -9
  36. package/lib/modules/rowcol.js +75 -2
  37. package/lib/modules/searchReplace.js +58 -2
  38. package/lib/modules/selection.js +152 -42
  39. package/lib/modules/sort.js +74 -9
  40. package/lib/modules/splitColumn.js +21 -0
  41. package/lib/modules/toolbar.js +46 -3
  42. package/lib/settings.d.ts +5 -0
  43. package/package.json +1 -1
package/lib/api/range.js CHANGED
@@ -93,6 +93,7 @@ function setSelection(ctx, range, options) {
93
93
  }
94
94
  }
95
95
  function setCellValuesByRange(ctx, data, range, cellInput, options, callAfterUpdate) {
96
+ var _a, _b, _c, _d, _e;
96
97
  if (options === void 0) {
97
98
  options = {};
98
99
  }
@@ -110,13 +111,32 @@ function setCellValuesByRange(ctx, data, range, cellInput, options, callAfterUpd
110
111
  if (data.length !== rowCount || data[0].length !== columnCount) {
111
112
  throw new Error("data size does not match range");
112
113
  }
114
+ var sheet = (0, _common.getSheet)(ctx, options);
115
+ var sheetId = sheet.id || ctx.currentSheetId;
116
+ var cellChanges = [];
113
117
  for (var i = 0; i < rowCount; i += 1) {
114
118
  for (var j = 0; j < columnCount; j += 1) {
115
119
  var row = range.row[0] + i;
116
120
  var column = range.column[0] + j;
117
121
  (0, _cell.setCellValue)(ctx, row, column, data[i][j], cellInput, options, callAfterUpdate);
122
+ if (((_a = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _a === void 0 ? void 0 : _a.updateCellYdoc) && sheet.data) {
123
+ cellChanges.push({
124
+ sheetId: sheetId,
125
+ path: ["celldata"],
126
+ value: {
127
+ r: row,
128
+ c: column,
129
+ 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
130
+ },
131
+ key: "".concat(row, "_").concat(column),
132
+ type: "update"
133
+ });
134
+ }
118
135
  }
119
136
  }
137
+ if (cellChanges.length > 0 && ((_e = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _e === void 0 ? void 0 : _e.updateCellYdoc)) {
138
+ ctx.hooks.updateCellYdoc(cellChanges);
139
+ }
120
140
  }
121
141
  function setCellFormatByRange(ctx, attr, value, range, options) {
122
142
  if (options === void 0) {
package/lib/api/sheet.js CHANGED
@@ -164,7 +164,7 @@ function generateCopySheetName(ctx, sheetId) {
164
164
  return sheetCopyName;
165
165
  }
166
166
  function copySheet(ctx, sheetId) {
167
- var _a, _b, _c;
167
+ var _a, _b, _c, _d, _e;
168
168
  var index = (0, _utils.getSheetIndex)(ctx, sheetId);
169
169
  var order = ctx.luckysheetfile[index].order + 1;
170
170
  var sheetName = generateCopySheetName(ctx, sheetId);
@@ -201,6 +201,34 @@ function copySheet(ctx, sheetId) {
201
201
  var sheetOrderList = {};
202
202
  sheetOrderList[newSheetId] = order;
203
203
  _2.api.setSheetOrder(ctx, sheetOrderList);
204
+ (0, _2.changeSheet)(ctx, newSheetId, undefined, true, true);
205
+ if ((_d = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _d === void 0 ? void 0 : _d.updateAllCell) {
206
+ ctx.hooks.updateAllCell(newSheetId);
207
+ } else if ((_e = ctx === null || ctx === void 0 ? void 0 : ctx.hooks) === null || _e === void 0 ? void 0 : _e.updateCellYdoc) {
208
+ var changes_1 = [];
209
+ var celldata = newSheet.celldata || (0, _common.dataToCelldata)(newSheet.data);
210
+ if (Array.isArray(celldata)) {
211
+ celldata.forEach(function (d) {
212
+ var _a;
213
+ if (d == null) return;
214
+ var r = d.r;
215
+ var c = d.c;
216
+ if (!_lodash.default.isNumber(r) || !_lodash.default.isNumber(c)) return;
217
+ changes_1.push({
218
+ sheetId: newSheetId,
219
+ path: ["celldata"],
220
+ key: "".concat(r, "_").concat(c),
221
+ value: {
222
+ r: r,
223
+ c: c,
224
+ v: (_a = d.v) !== null && _a !== void 0 ? _a : null
225
+ },
226
+ type: d.v == null ? "delete" : "update"
227
+ });
228
+ });
229
+ }
230
+ if (changes_1.length > 0) ctx.hooks.updateCellYdoc(changes_1);
231
+ }
204
232
  }
205
233
  function calculateSheetFromula(ctx, id) {
206
234
  var _a, _b, _c;
@@ -134,6 +134,9 @@ var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
134
134
  };
135
135
  }
136
136
  };
137
+ function isLegacyFormulaRangeMode(ctx) {
138
+ return !!ctx.formulaCache.rangestart || !!ctx.formulaCache.rangedrag_column_start || !!ctx.formulaCache.rangedrag_row_start || ctx.formulaCache.rangeSelectionActive === true || (0, _formula.israngeseleciton)(ctx);
139
+ }
137
140
  function handleGlobalEnter(ctx, cellInput, e, canvas) {
138
141
  var _a, _b, _c;
139
142
  if ((e.altKey || e.metaKey) && ctx.luckysheetCellUpdate.length > 0) {
@@ -179,11 +182,20 @@ function moveToEdge(sheetData, key, curr, rowDelta, colDelta, startR, endR, star
179
182
  return colDelta === 0 ? r : c;
180
183
  }
181
184
  function handleControlPlusArrowKey(ctx, e, shiftPressed) {
182
- if (ctx.luckysheetCellUpdate.length > 0) return;
185
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _formula.maybeRecoverDirtyRangeSelection)(ctx)) {
186
+ return;
187
+ }
188
+ var isFormulaRefMode = isLegacyFormulaRangeMode(ctx);
189
+ if (isFormulaRefMode) {
190
+ ctx.formulaCache.rangeSelectionActive = true;
191
+ }
192
+ if (ctx.luckysheetCellUpdate.length > 0 && !isFormulaRefMode) {
193
+ return;
194
+ }
183
195
  var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
184
196
  if (_lodash.default.isNil(idx)) return;
185
197
  var file = ctx.luckysheetfile[idx];
186
- if (!file || !file.row || !file.column) return;
198
+ if (!file || _lodash.default.isNil(file.row) || _lodash.default.isNil(file.column)) return;
187
199
  var maxRow = file.row;
188
200
  var maxCol = file.column;
189
201
  var last;
@@ -334,7 +346,14 @@ function handleWithCtrlOrMetaKey(ctx, cache, e, cellInput, fxInput, handleUndo,
334
346
  }
335
347
  function handleShiftWithArrowKey(ctx, e) {
336
348
  var _a;
337
- if (ctx.luckysheetCellUpdate.length > 0) {
349
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _formula.maybeRecoverDirtyRangeSelection)(ctx)) {
350
+ return;
351
+ }
352
+ var isFormulaMode = isLegacyFormulaRangeMode(ctx);
353
+ if (isFormulaMode) {
354
+ ctx.formulaCache.rangeSelectionActive = true;
355
+ }
356
+ if (ctx.luckysheetCellUpdate.length > 0 && !isFormulaMode) {
338
357
  return;
339
358
  }
340
359
  ctx.luckysheet_shiftpositon = _lodash.default.cloneDeep((_a = ctx.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a[ctx.luckysheet_select_save.length - 1]);
@@ -358,17 +377,15 @@ function handleShiftWithArrowKey(ctx, e) {
358
377
  e.preventDefault();
359
378
  }
360
379
  function handleArrowKey(ctx, e) {
361
- var _a, _b;
362
- if (ctx.luckysheetCellUpdate.length > 0 || ctx.luckysheet_cell_selected_move || ctx.luckysheet_cell_selected_extend) {
363
- var parser = new DOMParser();
364
- var doc = parser.parseFromString("<div>".concat((_a = document.getElementById("luckysheet-rich-text-editor")) === null || _a === void 0 ? void 0 : _a.innerHTML, "</div>"), "text/html");
365
- var spans = doc.querySelectorAll("span");
366
- var lastSpan = spans[spans.length - 1];
367
- var notFunctionInit = !((_b = document.getElementById("luckysheet-rich-text-editor")) === null || _b === void 0 ? void 0 : _b.innerText.includes("("));
368
- if ((lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(")")) || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes('"')) || notFunctionInit && /^[a-zA-Z]+$/.test(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) && !_lodash.default.includes(["="], lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) || /^[a-zA-Z]+$/.test(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
369
- return;
370
- }
380
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _formula.maybeRecoverDirtyRangeSelection)(ctx)) {
381
+ return;
371
382
  }
383
+ var isFormulaRefMode = isLegacyFormulaRangeMode(ctx);
384
+ if (isFormulaRefMode) ctx.formulaCache.rangeSelectionActive = true;
385
+ if (ctx.luckysheetCellUpdate.length > 0 && !isFormulaRefMode) {
386
+ return;
387
+ }
388
+ if (ctx.luckysheetCellUpdate.length > 0 || ctx.luckysheet_cell_selected_move || ctx.luckysheet_cell_selected_extend) {}
372
389
  var moveCount = (0, _2.hideCRCount)(ctx, e.key);
373
390
  switch (e.key) {
374
391
  case "ArrowUp":
@@ -386,11 +403,12 @@ function handleArrowKey(ctx, e) {
386
403
  default:
387
404
  break;
388
405
  }
406
+ e.preventDefault();
389
407
  }
390
408
  function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, handleRedo, canvas) {
391
409
  var _a, _b, _c;
392
410
  return __awaiter(this, void 0, void 0, function () {
393
- var kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, last, row_index, col_index;
411
+ var handledFlvShortcut, kcode, kstr, allowEdit, isFxInput, ignoredKeys, restCod, last, row_index, col_index, last, row_index, col_index;
394
412
  return __generator(this, function (_d) {
395
413
  if (e.shiftKey && e.code === "Space") {
396
414
  e.stopImmediatePropagation();
@@ -398,27 +416,41 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
398
416
  e.preventDefault();
399
417
  return [2];
400
418
  }
419
+ handledFlvShortcut = false;
401
420
  if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyE") {
402
421
  (0, _selection.textFormat)(ctx, "center");
422
+ handledFlvShortcut = true;
403
423
  } else if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyL") {
404
424
  (0, _selection.textFormat)(ctx, "left");
425
+ handledFlvShortcut = true;
405
426
  } else if ((e.ctrlKey || e.metaKey && e.shiftKey) && e.code === "KeyR") {
406
427
  (0, _selection.textFormat)(ctx, "right");
428
+ handledFlvShortcut = true;
407
429
  }
408
430
  if ((e.metaKey || e.ctrlKey) && e.code === "KeyK") {
409
431
  (0, _toolbar.handleLink)(ctx, cellInput);
410
432
  }
411
433
  if ((e.metaKey || e.ctrlKey) && !e.shiftKey && e.code === "Semicolon") {
412
434
  (0, _selection.fillDate)(ctx);
435
+ handledFlvShortcut = true;
413
436
  }
414
437
  if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.code === "Semicolon") {
415
438
  (0, _selection.fillTime)(ctx);
439
+ handledFlvShortcut = true;
416
440
  }
417
441
  if ((e.metaKey || e.ctrlKey) && !e.shiftKey && e.code === "KeyR") {
418
442
  (0, _selection.fillRightData)(ctx);
443
+ handledFlvShortcut = true;
419
444
  }
420
445
  if ((e.metaKey || e.ctrlKey) && e.code === "KeyD") {
421
446
  (0, _selection.fillDownData)(ctx);
447
+ handledFlvShortcut = true;
448
+ }
449
+ if (handledFlvShortcut) {
450
+ (0, _refresh.jfrefreshgrid)(ctx, null, undefined);
451
+ e.stopPropagation();
452
+ e.preventDefault();
453
+ return [2];
422
454
  }
423
455
  ctx.luckysheet_select_status = false;
424
456
  kcode = e.keyCode;
@@ -480,6 +512,9 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
480
512
  if (ctx.activeImg != null) {
481
513
  (0, _2.removeActiveImage)(ctx);
482
514
  } else {
515
+ if (ctx.formulaCache.rangeSelectionActive === true) {
516
+ (0, _formula.markRangeSelectionDirty)(ctx);
517
+ }
483
518
  (0, _selection.deleteSelectedCellText)(ctx);
484
519
  }
485
520
  (0, _refresh.jfrefreshgrid)(ctx, null, undefined);
@@ -127,7 +127,7 @@ function fixPositionOnFrozenCells(freeze, x, y, mouseX, mouseY) {
127
127
  }
128
128
  function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxInput, canvas) {
129
129
  var _a, _b;
130
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
130
+ var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
131
131
  if (!(fxInput === null || fxInput === void 0 ? void 0 : fxInput.innerHTML) && ctx) {
132
132
  ctx.defaultCandidates = [];
133
133
  }
@@ -146,11 +146,11 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
146
146
  return;
147
147
  }
148
148
  var freeze = (_c = globalCache.freezen) === null || _c === void 0 ? void 0 : _c[ctx.currentSheetId];
149
- var _q = fixPositionOnFrozenCells(freeze, _x, _y, mouseX, mouseY),
150
- x = _q.x,
151
- y = _q.y,
152
- inHorizontalFreeze = _q.inHorizontalFreeze,
153
- inVerticalFreeze = _q.inVerticalFreeze;
149
+ var _p = fixPositionOnFrozenCells(freeze, _x, _y, mouseX, mouseY),
150
+ x = _p.x,
151
+ y = _p.y,
152
+ inHorizontalFreeze = _p.inHorizontalFreeze,
153
+ inVerticalFreeze = _p.inVerticalFreeze;
154
154
  var row_location = (0, _location.rowLocation)(y, ctx.visibledatarow);
155
155
  var row = row_location[1];
156
156
  var row_pre = row_location[0];
@@ -195,12 +195,7 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
195
195
  }
196
196
  ctx.luckysheet_scroll_status = true;
197
197
  if (ctx.luckysheetCellUpdate.length > 0) {
198
- var parser = new DOMParser();
199
- var doc = parser.parseFromString("<div>".concat((_g = document.getElementById("luckysheet-rich-text-editor")) === null || _g === void 0 ? void 0 : _g.innerHTML, "</div>"), "text/html");
200
- var spans = doc.querySelectorAll("span");
201
- var firstSpan = spans[0];
202
- var lastSpan = spans[spans.length - 1];
203
- if ((ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start || (0, _modules.israngeseleciton)(ctx) || (firstSpan === null || firstSpan === void 0 ? void 0 : firstSpan.innerText.includes("=")) && !(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(")"))) && lastSpan && ctx.luckysheetCellUpdate.length === 2) {
198
+ if (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start || (0, _modules.israngeseleciton)(ctx)) {
204
199
  var rowseleted = [row_index, row_index_ed];
205
200
  var columnseleted = [col_index, col_index_ed];
206
201
  var left = col_pre;
@@ -267,7 +262,7 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
267
262
  last.top_move = top_1;
268
263
  last.height_move = height;
269
264
  ctx.formulaCache.func_selectedrange = last;
270
- } else if (e.ctrlKey && ((_h = _lodash.default.last(cellInput.querySelectorAll("span"))) === null || _h === void 0 ? void 0 : _h.innerText) !== ",") {
265
+ } else if (e.ctrlKey && ((_g = _lodash.default.last(cellInput.querySelectorAll("span"))) === null || _g === void 0 ? void 0 : _g.innerText) !== ",") {
271
266
  var vText = cellInput.innerText;
272
267
  if (vText[vText.length - 1] === ")") {
273
268
  vText = vText.substring(0, vText.length - 1);
@@ -283,7 +278,7 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
283
278
  if (window.getSelection) {
284
279
  var currSelection = window.getSelection();
285
280
  if (currSelection == null) return;
286
- ctx.formulaCache.functionRangeIndex = [_lodash.default.indexOf((_l = (_k = (_j = currSelection.anchorNode) === null || _j === void 0 ? void 0 : _j.parentNode) === null || _k === void 0 ? void 0 : _k.parentNode) === null || _l === void 0 ? void 0 : _l.childNodes, (_m = currSelection.anchorNode) === null || _m === void 0 ? void 0 : _m.parentNode), currSelection.anchorOffset];
281
+ ctx.formulaCache.functionRangeIndex = [_lodash.default.indexOf((_k = (_j = (_h = currSelection.anchorNode) === null || _h === void 0 ? void 0 : _h.parentNode) === null || _j === void 0 ? void 0 : _j.parentNode) === null || _k === void 0 ? void 0 : _k.childNodes, (_l = currSelection.anchorNode) === null || _l === void 0 ? void 0 : _l.parentNode), currSelection.anchorOffset];
287
282
  } else {
288
283
  var textRange = document.selection.createRange();
289
284
  ctx.formulaCache.functionRangeIndex = textRange;
@@ -328,13 +323,14 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
328
323
  column_focus: col_index
329
324
  };
330
325
  }
326
+ ctx.formulaCache.rangestart = true;
327
+ ctx.formulaCache.rangedrag_column_start = false;
328
+ ctx.formulaCache.rangedrag_row_start = false;
331
329
  (0, _modules.rangeSetValue)(ctx, cellInput, {
332
330
  row: rowseleted,
333
331
  column: columnseleted
334
332
  }, fxInput);
335
- ctx.formulaCache.rangestart = true;
336
- ctx.formulaCache.rangedrag_column_start = false;
337
- ctx.formulaCache.rangedrag_row_start = false;
333
+ (0, _modules.rangeHightlightselected)(ctx, cellInput);
338
334
  ctx.formulaCache.selectingRangeIndex = ctx.formulaCache.rangechangeindex;
339
335
  if (ctx.formulaCache.rangechangeindex > ctx.formulaRangeHighlight.length) {
340
336
  (0, _modules.createRangeHightlight)(ctx, cellInput.innerHTML, ctx.formulaCache.rangechangeindex);
@@ -357,7 +353,7 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
357
353
  }
358
354
  if (ctx.luckysheet_select_status) {
359
355
  if (e.shiftKey) {
360
- var last = (_o = ctx.luckysheet_select_save) === null || _o === void 0 ? void 0 : _o[ctx.luckysheet_select_save.length - 1];
356
+ var last = (_m = ctx.luckysheet_select_save) === null || _m === void 0 ? void 0 : _m[ctx.luckysheet_select_save.length - 1];
361
357
  if (last && last.top != null && last.left != null && last.height != null && last.width != null && last.row_focus != null && last.column_focus != null) {
362
358
  var top_2 = 0;
363
359
  var height = 0;
@@ -416,7 +412,7 @@ function handleCellAreaMouseDown(ctx, globalCache, e, cellInput, container, fxIn
416
412
  ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1] = last;
417
413
  }
418
414
  } else if (e.ctrlKey || e.metaKey) {
419
- (_p = ctx.luckysheet_select_save) === null || _p === void 0 ? void 0 : _p.push({
415
+ (_o = ctx.luckysheet_select_save) === null || _o === void 0 ? void 0 : _o.push({
420
416
  left: col_pre,
421
417
  width: col - col_pre - 1,
422
418
  top: row_pre,
@@ -848,10 +844,28 @@ function mouseRender(ctx, globalCache, e, cellInput, scrollX, scrollY, container
848
844
  ctx.luckysheet_select_save[ctx.luckysheet_select_save.length - 1] = last;
849
845
  (0, _freeze.scrollToFrozenRowCol)(ctx, (_d = globalCache.freezen) === null || _d === void 0 ? void 0 : _d[ctx.currentSheetId]);
850
846
  } else if (ctx.formulaCache.rangestart) {
847
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _modules.maybeRecoverDirtyRangeSelection)(ctx)) {
848
+ if (ctx.luckysheetCellUpdate.length > 0) {
849
+ (0, _cell.updateCell)(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput);
850
+ }
851
+ return;
852
+ }
851
853
  (0, _modules.rangeDrag)(ctx, e, cellInput, scrollX.scrollLeft, scrollY.scrollTop, container, fxInput);
852
854
  } else if (ctx.formulaCache.rangedrag_row_start) {
855
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _modules.maybeRecoverDirtyRangeSelection)(ctx)) {
856
+ if (ctx.luckysheetCellUpdate.length > 0) {
857
+ (0, _cell.updateCell)(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput);
858
+ }
859
+ return;
860
+ }
853
861
  (0, _formula.rangeDragRow)(ctx, e, cellInput, scrollX.scrollLeft, scrollY.scrollTop, container, fxInput);
854
862
  } else if (ctx.formulaCache.rangedrag_column_start) {
863
+ if (ctx.formulaCache.rangeSelectionActive === false && !(0, _modules.maybeRecoverDirtyRangeSelection)(ctx)) {
864
+ if (ctx.luckysheetCellUpdate.length > 0) {
865
+ (0, _cell.updateCell)(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput);
866
+ }
867
+ return;
868
+ }
855
869
  (0, _formula.rangeDragColumn)(ctx, e, cellInput, scrollX.scrollLeft, scrollY.scrollTop, container, fxInput);
856
870
  } else if (ctx.luckysheet_rows_selected_status) {} else if (ctx.luckysheet_cols_selected_status) {} else if (ctx.luckysheet_cell_selected_move) {} else if (ctx.luckysheet_cell_selected_extend) {
857
871
  (0, _dropCell.onDropCellSelect)(ctx, e, scrollX, scrollY, container);
@@ -957,7 +971,7 @@ function handleOverlayMouseMove(ctx, globalCache, e, cellInput, scrollX, scrollY
957
971
  }
958
972
  }
959
973
  function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollbarY, container, cellInput, fxInput) {
960
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
974
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
961
975
  var rect = container.getBoundingClientRect();
962
976
  (0, _modules.onImageMoveEnd)(ctx, globalCache);
963
977
  (0, _modules.onImageResizeEnd)(ctx, globalCache);
@@ -970,11 +984,17 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
970
984
  (0, _hyperlink.onRangeSelectionModalMoveEnd)(globalCache);
971
985
  (0, _modules.onCellsMoveEnd)(ctx, globalCache, e, scrollbarX, scrollbarY, container);
972
986
  if (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start) {
973
- if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
987
+ if ((0, _modules.getFormulaEditorOwner)(ctx) === "fx") {
974
988
  (0, _formula.handleFormulaInput)(ctx, cellInput, fxInput, 0, undefined, false);
975
989
  } else {
976
990
  (0, _formula.handleFormulaInput)(ctx, fxInput, cellInput, 0, undefined, false);
977
991
  }
992
+ ctx.luckysheet_select_status = false;
993
+ ctx.luckysheet_scroll_status = false;
994
+ ctx.luckysheet_rows_selected_status = false;
995
+ ctx.luckysheet_cols_selected_status = false;
996
+ e.preventDefault();
997
+ return;
978
998
  }
979
999
  if (ctx.luckysheet_select_status) {
980
1000
  if (ctx.luckysheetPaintModelOn) {
@@ -1016,10 +1036,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1016
1036
  cfg_1.customHeight[ctx.luckysheet_rows_change_size_start[1]] = 1;
1017
1037
  var changeRowIndex_1 = ctx.luckysheet_rows_change_size_start[1];
1018
1038
  var changeRowSelected_1 = false;
1019
- if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
1020
- (_e = (_d = ctx.luckysheet_select_save) === null || _d === void 0 ? void 0 : _d.filter(function (select) {
1039
+ if (((_b = (_a = ctx.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0) {
1040
+ (_d = (_c = ctx.luckysheet_select_save) === null || _c === void 0 ? void 0 : _c.filter(function (select) {
1021
1041
  return select.row_select;
1022
- })) === null || _e === void 0 ? void 0 : _e.some(function (select) {
1042
+ })) === null || _d === void 0 ? void 0 : _d.some(function (select) {
1023
1043
  if (changeRowIndex_1 >= select.row[0] && changeRowIndex_1 <= select.row[1]) {
1024
1044
  changeRowSelected_1 = true;
1025
1045
  }
@@ -1028,9 +1048,9 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1028
1048
  }
1029
1049
  if (changeRowSelected_1) {
1030
1050
  cfg_1.rowlen || (cfg_1.rowlen = {});
1031
- (_g = (_f = ctx.luckysheet_select_save) === null || _f === void 0 ? void 0 : _f.filter(function (select) {
1051
+ (_f = (_e = ctx.luckysheet_select_save) === null || _e === void 0 ? void 0 : _e.filter(function (select) {
1032
1052
  return select.row_select;
1033
- })) === null || _g === void 0 ? void 0 : _g.forEach(function (select) {
1053
+ })) === null || _f === void 0 ? void 0 : _f.forEach(function (select) {
1034
1054
  for (var r = select.row[0]; r <= select.row[1]; r += 1) {
1035
1055
  cfg_1.rowlen[r] = Math.ceil(size_1 / ctx.zoomRatio);
1036
1056
  }
@@ -1074,10 +1094,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1074
1094
  cfg_2.customWidth[ctx.luckysheet_cols_change_size_start[1]] = 1;
1075
1095
  var changeColumnIndex_1 = ctx.luckysheet_cols_change_size_start[1];
1076
1096
  var changeColumnSelected_1 = false;
1077
- if (((_j = (_h = ctx.luckysheet_select_save) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) > 0) {
1078
- (_l = (_k = ctx.luckysheet_select_save) === null || _k === void 0 ? void 0 : _k.filter(function (select) {
1097
+ if (((_h = (_g = ctx.luckysheet_select_save) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0) > 0) {
1098
+ (_k = (_j = ctx.luckysheet_select_save) === null || _j === void 0 ? void 0 : _j.filter(function (select) {
1079
1099
  return select.column_select;
1080
- })) === null || _l === void 0 ? void 0 : _l.some(function (select) {
1100
+ })) === null || _k === void 0 ? void 0 : _k.some(function (select) {
1081
1101
  if (changeColumnIndex_1 >= select.column[0] && changeColumnIndex_1 <= select.column[1]) {
1082
1102
  changeColumnSelected_1 = true;
1083
1103
  }
@@ -1086,9 +1106,9 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1086
1106
  }
1087
1107
  if (changeColumnSelected_1) {
1088
1108
  cfg_2.columnlen || (cfg_2.columnlen = {});
1089
- (_o = (_m = ctx.luckysheet_select_save) === null || _m === void 0 ? void 0 : _m.filter(function (select) {
1109
+ (_m = (_l = ctx.luckysheet_select_save) === null || _l === void 0 ? void 0 : _l.filter(function (select) {
1090
1110
  return select.column_select;
1091
- })) === null || _o === void 0 ? void 0 : _o.forEach(function (select) {
1111
+ })) === null || _m === void 0 ? void 0 : _m.forEach(function (select) {
1092
1112
  for (var r = select.column[0]; r <= select.column[1]; r += 1) {
1093
1113
  cfg_2.columnlen[r] = Math.ceil(size_2 / ctx.zoomRatio);
1094
1114
  }
@@ -1105,10 +1125,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1105
1125
  ctx.luckysheet_cols_freeze_drag = false;
1106
1126
  var scrollLeft = ctx.scrollLeft;
1107
1127
  var x = e.pageX - rect.left - ctx.rowHeaderWidth + scrollLeft - window.scrollX;
1108
- var _p = (0, _location.colLocation)(x, ctx.visibledatacolumn),
1109
- col_pre = _p[0],
1110
- col_curr = _p[1],
1111
- col_index_curr = _p[2];
1128
+ var _o = (0, _location.colLocation)(x, ctx.visibledatacolumn),
1129
+ col_pre = _o[0],
1130
+ col_curr = _o[1],
1131
+ col_index_curr = _o[2];
1112
1132
  var col_index = x > (col_curr + col_pre) / 2 ? col_index_curr : col_index_curr - 1;
1113
1133
  var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1114
1134
  if (idx == null) return;
@@ -1156,10 +1176,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1156
1176
  ctx.luckysheet_rows_freeze_drag = false;
1157
1177
  var scrollTop = ctx.scrollTop;
1158
1178
  var y = e.pageY - rect.top - ctx.columnHeaderHeight + scrollTop - window.scrollY;
1159
- var _q = (0, _location.rowLocation)(y, ctx.visibledatarow),
1160
- row_pre = _q[0],
1161
- row_curr = _q[1],
1162
- row_index_curr = _q[2];
1179
+ var _p = (0, _location.rowLocation)(y, ctx.visibledatarow),
1180
+ row_pre = _p[0],
1181
+ row_curr = _p[1],
1182
+ row_index_curr = _p[2];
1163
1183
  var row_index = y > (row_curr + row_pre) / 2 ? row_index_curr : row_index_curr - 1;
1164
1184
  var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1165
1185
  if (idx == null) return;
@@ -1338,6 +1358,7 @@ function handleRowHeaderMouseDown(ctx, globalCache, e, container, cellInput, fxI
1338
1358
  row: rowseleted,
1339
1359
  column: [null, null]
1340
1360
  }, fxInput);
1361
+ (0, _modules.rangeHightlightselected)(ctx, cellInput);
1341
1362
  }
1342
1363
  ctx.formulaCache.rangedrag_row_start = true;
1343
1364
  ctx.formulaCache.rangestart = false;
@@ -1569,6 +1590,7 @@ function handleColumnHeaderMouseDown(ctx, globalCache, e, container, cellInput,
1569
1590
  row: [null, null],
1570
1591
  column: columnseleted
1571
1592
  }, fxInput);
1593
+ (0, _modules.rangeHightlightselected)(ctx, cellInput);
1572
1594
  }
1573
1595
  ctx.formulaCache.rangedrag_column_start = true;
1574
1596
  ctx.formulaCache.rangestart = false;