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

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.
@@ -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,6 +403,7 @@ 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;
@@ -494,6 +512,9 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
494
512
  if (ctx.activeImg != null) {
495
513
  (0, _2.removeActiveImage)(ctx);
496
514
  } else {
515
+ if (ctx.formulaCache.rangeSelectionActive === true) {
516
+ (0, _formula.markRangeSelectionDirty)(ctx);
517
+ }
497
518
  (0, _selection.deleteSelectedCellText)(ctx);
498
519
  }
499
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);
@@ -1338,6 +1352,7 @@ function handleRowHeaderMouseDown(ctx, globalCache, e, container, cellInput, fxI
1338
1352
  row: rowseleted,
1339
1353
  column: [null, null]
1340
1354
  }, fxInput);
1355
+ (0, _modules.rangeHightlightselected)(ctx, cellInput);
1341
1356
  }
1342
1357
  ctx.formulaCache.rangedrag_row_start = true;
1343
1358
  ctx.formulaCache.rangestart = false;
@@ -1569,6 +1584,7 @@ function handleColumnHeaderMouseDown(ctx, globalCache, e, container, cellInput,
1569
1584
  row: [null, null],
1570
1585
  column: columnseleted
1571
1586
  }, fxInput);
1587
+ (0, _modules.rangeHightlightselected)(ctx, cellInput);
1572
1588
  }
1573
1589
  ctx.formulaCache.rangedrag_column_start = true;
1574
1590
  ctx.formulaCache.rangestart = false;
@@ -574,6 +574,7 @@ function cancelNormalSelected(ctx) {
574
574
  ctx.formulaCache.rangestart = false;
575
575
  ctx.formulaCache.rangedrag_column_start = false;
576
576
  ctx.formulaCache.rangedrag_row_start = false;
577
+ ctx.formulaCache.rangeSelectionActive = null;
577
578
  }
578
579
  function updateCell(ctx, r, c, $input, value, canvas) {
579
580
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
@@ -1796,7 +1796,6 @@ function getApplyData(copyD, csLen, asLen) {
1796
1796
  function updateDropCell(ctx) {
1797
1797
  var _a, _b, _c, _d;
1798
1798
  var _e, _f, _g, _h;
1799
- console.log("updateDropCell");
1800
1799
  var d = (0, _context.getFlowdata)(ctx);
1801
1800
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
1802
1801
  var isReadOnly = (0, _utils.isAllowEditReadOnly)(ctx);
@@ -20,6 +20,7 @@ export declare class FormulaCache {
20
20
  rangetosheet?: string;
21
21
  rangedrag_column_start?: boolean;
22
22
  rangedrag_row_start?: boolean;
23
+ rangeSelectionActive?: boolean | null;
23
24
  functionRangeIndex?: number[];
24
25
  functionlistMap: any;
25
26
  execFunctionExist?: any[];
@@ -44,8 +45,14 @@ export declare function setCaretPosition(ctx: Context, textDom: HTMLElement, chi
44
45
  export declare function getrangeseleciton(): ParentNode | ChildNode | null | undefined;
45
46
  export declare function rangeHightlightselected(ctx: Context, $editor: HTMLDivElement): void;
46
47
  export declare function functionHTMLGenerate(txt: string): string;
48
+ export declare function getLastFormulaRangeIndex($editor: HTMLDivElement): number | null;
49
+ export declare function getFormulaRangeIndexAtCaret($editor: HTMLDivElement): number | null;
50
+ export declare function markRangeSelectionDirty(ctx: Context): void;
51
+ export declare function getFormulaRangeIndexForKeyboardSync($editor: HTMLDivElement): number | null;
47
52
  export declare function handleFormulaInput(ctx: Context, $copyTo: HTMLDivElement | null | undefined, $editor: HTMLDivElement, kcode: number, preText?: string, refreshRangeSelect?: boolean): void;
48
53
  export declare function israngeseleciton(ctx: Context, istooltip?: boolean): boolean;
54
+ export declare function isFormulaReferenceInputMode(ctx: Context): boolean;
55
+ export declare function maybeRecoverDirtyRangeSelection(ctx: Context): boolean;
49
56
  export declare function functionStrChange(txt: string, type: string, rc: "row" | "col", orient: string | null, stindex: number, step: number): string;
50
57
  export declare function rangeSetValue(ctx: Context, cellInput: HTMLDivElement, selected: any, fxInput?: HTMLDivElement | null): void;
51
58
  export declare function onFormulaRangeDragEnd(ctx: Context): void;