@fileverse-dev/fortune-core 1.3.11-input-ref → 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.
@@ -1,6 +1,6 @@
1
1
  import _ from "lodash";
2
2
  import { getFlowdata } from "../context";
3
- import { cancelActiveImgItem, cancelPaintModel, functionHTMLGenerate, israngeseleciton, maybeRecoverDirtyRangeSelection, rangeHightlightselected, rangeSetValue, onCommentBoxMove, onCommentBoxMoveEnd, onCommentBoxResize, onCommentBoxResizeEnd, onImageMove, onImageMoveEnd, onImageResize, onImageResizeEnd, removeEditingComment, removeOverShowComment, rangeDrag, onFormulaRangeDragEnd, createFormulaRangeSelect, createRangeHightlight, onCellsMoveEnd, onCellsMove, cellFocus, editComment, onIframeMoveEnd, onIframeResizeEnd, overShowError } from "../modules";
3
+ import { cancelActiveImgItem, cancelPaintModel, functionHTMLGenerate, israngeseleciton, maybeRecoverDirtyRangeSelection, rangeHightlightselected, rangeSetValue, getFormulaEditorOwner, onCommentBoxMove, onCommentBoxMoveEnd, onCommentBoxResize, onCommentBoxResizeEnd, onImageMove, onImageMoveEnd, onImageResize, onImageResizeEnd, removeEditingComment, removeOverShowComment, rangeDrag, onFormulaRangeDragEnd, createFormulaRangeSelect, createRangeHightlight, onCellsMoveEnd, onCellsMove, cellFocus, editComment, onIframeMoveEnd, onIframeResizeEnd, overShowError } from "../modules";
4
4
  import { getFrozenHandleLeft, getFrozenHandleTop, scrollToFrozenRowCol } from "../modules/freeze";
5
5
  import { cancelFunctionrangeSelected, mergeBorder, mergeMoveMain, updateCell, luckysheetUpdateCell } from "../modules/cell";
6
6
  import { colLocation, colLocationByIndex, rowLocation, rowLocationByIndex } from "../modules/location";
@@ -950,7 +950,7 @@ export function handleOverlayMouseMove(ctx, globalCache, e, cellInput, scrollX,
950
950
  }
951
951
  }
952
952
  export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollbarY, container, cellInput, fxInput) {
953
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
953
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
954
954
  var rect = container.getBoundingClientRect();
955
955
  onImageMoveEnd(ctx, globalCache);
956
956
  onImageResizeEnd(ctx, globalCache);
@@ -963,11 +963,17 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
963
963
  onRangeSelectionModalMoveEnd(globalCache);
964
964
  onCellsMoveEnd(ctx, globalCache, e, scrollbarX, scrollbarY, container);
965
965
  if (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start) {
966
- if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
966
+ if (getFormulaEditorOwner(ctx) === "fx") {
967
967
  handleFormulaInput(ctx, cellInput, fxInput, 0, undefined, false);
968
968
  } else {
969
969
  handleFormulaInput(ctx, fxInput, cellInput, 0, undefined, false);
970
970
  }
971
+ ctx.luckysheet_select_status = false;
972
+ ctx.luckysheet_scroll_status = false;
973
+ ctx.luckysheet_rows_selected_status = false;
974
+ ctx.luckysheet_cols_selected_status = false;
975
+ e.preventDefault();
976
+ return;
971
977
  }
972
978
  if (ctx.luckysheet_select_status) {
973
979
  if (ctx.luckysheetPaintModelOn) {
@@ -1009,10 +1015,10 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1009
1015
  cfg_1.customHeight[ctx.luckysheet_rows_change_size_start[1]] = 1;
1010
1016
  var changeRowIndex_1 = ctx.luckysheet_rows_change_size_start[1];
1011
1017
  var changeRowSelected_1 = false;
1012
- if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
1013
- (_e = (_d = ctx.luckysheet_select_save) === null || _d === void 0 ? void 0 : _d.filter(function (select) {
1018
+ if (((_b = (_a = ctx.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0) > 0) {
1019
+ (_d = (_c = ctx.luckysheet_select_save) === null || _c === void 0 ? void 0 : _c.filter(function (select) {
1014
1020
  return select.row_select;
1015
- })) === null || _e === void 0 ? void 0 : _e.some(function (select) {
1021
+ })) === null || _d === void 0 ? void 0 : _d.some(function (select) {
1016
1022
  if (changeRowIndex_1 >= select.row[0] && changeRowIndex_1 <= select.row[1]) {
1017
1023
  changeRowSelected_1 = true;
1018
1024
  }
@@ -1021,9 +1027,9 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1021
1027
  }
1022
1028
  if (changeRowSelected_1) {
1023
1029
  cfg_1.rowlen || (cfg_1.rowlen = {});
1024
- (_g = (_f = ctx.luckysheet_select_save) === null || _f === void 0 ? void 0 : _f.filter(function (select) {
1030
+ (_f = (_e = ctx.luckysheet_select_save) === null || _e === void 0 ? void 0 : _e.filter(function (select) {
1025
1031
  return select.row_select;
1026
- })) === null || _g === void 0 ? void 0 : _g.forEach(function (select) {
1032
+ })) === null || _f === void 0 ? void 0 : _f.forEach(function (select) {
1027
1033
  for (var r = select.row[0]; r <= select.row[1]; r += 1) {
1028
1034
  cfg_1.rowlen[r] = Math.ceil(size_1 / ctx.zoomRatio);
1029
1035
  }
@@ -1067,10 +1073,10 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1067
1073
  cfg_2.customWidth[ctx.luckysheet_cols_change_size_start[1]] = 1;
1068
1074
  var changeColumnIndex_1 = ctx.luckysheet_cols_change_size_start[1];
1069
1075
  var changeColumnSelected_1 = false;
1070
- if (((_j = (_h = ctx.luckysheet_select_save) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) > 0) {
1071
- (_l = (_k = ctx.luckysheet_select_save) === null || _k === void 0 ? void 0 : _k.filter(function (select) {
1076
+ if (((_h = (_g = ctx.luckysheet_select_save) === null || _g === void 0 ? void 0 : _g.length) !== null && _h !== void 0 ? _h : 0) > 0) {
1077
+ (_k = (_j = ctx.luckysheet_select_save) === null || _j === void 0 ? void 0 : _j.filter(function (select) {
1072
1078
  return select.column_select;
1073
- })) === null || _l === void 0 ? void 0 : _l.some(function (select) {
1079
+ })) === null || _k === void 0 ? void 0 : _k.some(function (select) {
1074
1080
  if (changeColumnIndex_1 >= select.column[0] && changeColumnIndex_1 <= select.column[1]) {
1075
1081
  changeColumnSelected_1 = true;
1076
1082
  }
@@ -1079,9 +1085,9 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1079
1085
  }
1080
1086
  if (changeColumnSelected_1) {
1081
1087
  cfg_2.columnlen || (cfg_2.columnlen = {});
1082
- (_o = (_m = ctx.luckysheet_select_save) === null || _m === void 0 ? void 0 : _m.filter(function (select) {
1088
+ (_m = (_l = ctx.luckysheet_select_save) === null || _l === void 0 ? void 0 : _l.filter(function (select) {
1083
1089
  return select.column_select;
1084
- })) === null || _o === void 0 ? void 0 : _o.forEach(function (select) {
1090
+ })) === null || _m === void 0 ? void 0 : _m.forEach(function (select) {
1085
1091
  for (var r = select.column[0]; r <= select.column[1]; r += 1) {
1086
1092
  cfg_2.columnlen[r] = Math.ceil(size_2 / ctx.zoomRatio);
1087
1093
  }
@@ -1098,10 +1104,10 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1098
1104
  ctx.luckysheet_cols_freeze_drag = false;
1099
1105
  var scrollLeft = ctx.scrollLeft;
1100
1106
  var x = e.pageX - rect.left - ctx.rowHeaderWidth + scrollLeft - window.scrollX;
1101
- var _p = colLocation(x, ctx.visibledatacolumn),
1102
- col_pre = _p[0],
1103
- col_curr = _p[1],
1104
- col_index_curr = _p[2];
1107
+ var _o = colLocation(x, ctx.visibledatacolumn),
1108
+ col_pre = _o[0],
1109
+ col_curr = _o[1],
1110
+ col_index_curr = _o[2];
1105
1111
  var col_index = x > (col_curr + col_pre) / 2 ? col_index_curr : col_index_curr - 1;
1106
1112
  var idx = getSheetIndex(ctx, ctx.currentSheetId);
1107
1113
  if (idx == null) return;
@@ -1149,10 +1155,10 @@ export function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX,
1149
1155
  ctx.luckysheet_rows_freeze_drag = false;
1150
1156
  var scrollTop = ctx.scrollTop;
1151
1157
  var y = e.pageY - rect.top - ctx.columnHeaderHeight + scrollTop - window.scrollY;
1152
- var _q = rowLocation(y, ctx.visibledatarow),
1153
- row_pre = _q[0],
1154
- row_curr = _q[1],
1155
- row_index_curr = _q[2];
1158
+ var _p = rowLocation(y, ctx.visibledatarow),
1159
+ row_pre = _p[0],
1160
+ row_curr = _p[1],
1161
+ row_index_curr = _p[2];
1156
1162
  var row_index = y > (row_curr + row_pre) / 2 ? row_index_curr : row_index_curr - 1;
1157
1163
  var idx = getSheetIndex(ctx, ctx.currentSheetId);
1158
1164
  if (idx == null) return;
@@ -542,6 +542,7 @@ export function cancelNormalSelected(ctx) {
542
542
  ctx.formulaCache.rangedrag_column_start = false;
543
543
  ctx.formulaCache.rangedrag_row_start = false;
544
544
  ctx.formulaCache.rangeSelectionActive = null;
545
+ ctx.formulaCache.formulaEditorOwner = null;
545
546
  }
546
547
  export function updateCell(ctx, r, c, $input, value, canvas) {
547
548
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
@@ -21,6 +21,7 @@ export declare class FormulaCache {
21
21
  rangedrag_column_start?: boolean;
22
22
  rangedrag_row_start?: boolean;
23
23
  rangeSelectionActive?: boolean | null;
24
+ formulaEditorOwner?: "cell" | "fx" | null;
24
25
  functionRangeIndex?: number[];
25
26
  functionlistMap: any;
26
27
  execFunctionExist?: any[];
@@ -47,6 +48,9 @@ export declare function rangeHightlightselected(ctx: Context, $editor: HTMLDivEl
47
48
  export declare function functionHTMLGenerate(txt: string): string;
48
49
  export declare function getLastFormulaRangeIndex($editor: HTMLDivElement): number | null;
49
50
  export declare function getFormulaRangeIndexAtCaret($editor: HTMLDivElement): number | null;
51
+ export declare function setFormulaEditorOwner(ctx: Context, owner: "cell" | "fx" | null): void;
52
+ export declare function getFormulaEditorOwner(ctx: Context): "cell" | "fx" | null;
53
+ export declare function isCaretAtValidFormulaRangeInsertionPoint(editor: HTMLElement | null): boolean;
50
54
  export declare function markRangeSelectionDirty(ctx: Context): void;
51
55
  export declare function getFormulaRangeIndexForKeyboardSync($editor: HTMLDivElement): number | null;
52
56
  export declare function handleFormulaInput(ctx: Context, $copyTo: HTMLDivElement | null | undefined, $editor: HTMLDivElement, kcode: number, preText?: string, refreshRangeSelect?: boolean): void;
@@ -21,14 +21,13 @@ var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
21
21
  import { Parser, ERROR_REF } from "@fileverse-dev/formula-parser";
22
22
  import _ from "lodash";
23
23
  import { getFlowdata } from "../context";
24
- import { columnCharToIndex, escapeScriptTag, getSheetIndex, indexToColumnChar, getSheetIdByName, escapeHTMLTag } from "../utils";
24
+ import { columnCharToIndex, escapeScriptTag, getSheetIndex, indexToColumnChar, getSheetIdByName, escapeHTMLTag, isLetterNumberPattern, removeLastSpan } from "../utils";
25
25
  import { getcellFormula, getRangetxt, mergeMoveMain, setCellValue } from "./cell";
26
26
  import { error, detectErrorFromValue } from "./validation";
27
27
  import { locale } from "../locale";
28
28
  import { colors } from "./color";
29
29
  import { colLocation, mousePosition, rowLocation } from "./location";
30
30
  import { cancelFunctionrangeSelected, clearCellError, seletedHighlistByindex, setCellError, spillSortResult } from ".";
31
- import { isLetterNumberPattern, removeLastSpan } from "../utils/index";
32
31
  var functionHTMLIndex = 0;
33
32
  var rangeIndexes = [];
34
33
  var operatorPriority = {
@@ -56,6 +55,7 @@ var FormulaCache = function () {
56
55
  this.data_parm_index = 0;
57
56
  this.selectingRangeIndex = -1;
58
57
  this.rangeSelectionActive = null;
58
+ this.formulaEditorOwner = null;
59
59
  this.functionlistMap = {};
60
60
  this.execFunctionGlobalData = {};
61
61
  this.cellTextToIndexList = {};
@@ -1630,6 +1630,61 @@ export function getFormulaRangeIndexAtCaret($editor) {
1630
1630
  var n = parseInt(ri, 10);
1631
1631
  return Number.isNaN(n) ? null : n;
1632
1632
  }
1633
+ export function setFormulaEditorOwner(ctx, owner) {
1634
+ ctx.formulaCache.formulaEditorOwner = owner;
1635
+ }
1636
+ export function getFormulaEditorOwner(ctx) {
1637
+ var _a, _b;
1638
+ var cachedOwner = ctx.formulaCache.formulaEditorOwner;
1639
+ if (cachedOwner === "cell" || cachedOwner === "fx") {
1640
+ return cachedOwner;
1641
+ }
1642
+ if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
1643
+ return "fx";
1644
+ }
1645
+ if (((_b = document.activeElement) === null || _b === void 0 ? void 0 : _b.id) === "luckysheet-rich-text-editor") {
1646
+ return "cell";
1647
+ }
1648
+ return null;
1649
+ }
1650
+ function getCurrentFormulaSlotTextBeforeCaret(editor, caretOffset) {
1651
+ var textBefore = editor.innerText.slice(0, caretOffset);
1652
+ var parts = textBefore.split(/[=,(+\-*/&<>]/);
1653
+ return _.trim(parts[parts.length - 1] || "");
1654
+ }
1655
+ export function isCaretAtValidFormulaRangeInsertionPoint(editor) {
1656
+ var currSelection = window.getSelection();
1657
+ if (!editor || !currSelection || currSelection.rangeCount === 0) {
1658
+ return false;
1659
+ }
1660
+ var anchorNode = currSelection.anchorNode;
1661
+ if (anchorNode && !editor.contains(anchorNode)) {
1662
+ return false;
1663
+ }
1664
+ var inputText = editor.innerText.trim();
1665
+ if (!inputText.startsWith("=")) {
1666
+ return false;
1667
+ }
1668
+ if (/^=\s*[A-Za-z_][A-Za-z0-9_]*$/.test(inputText)) {
1669
+ return false;
1670
+ }
1671
+ var caretRange = currSelection.getRangeAt(0).cloneRange();
1672
+ var preCaretRange = document.createRange();
1673
+ preCaretRange.selectNodeContents(editor);
1674
+ preCaretRange.setEnd(caretRange.endContainer, caretRange.endOffset);
1675
+ var caretOffset = preCaretRange.toString().length;
1676
+ var slotTextBeforeCaret = getCurrentFormulaSlotTextBeforeCaret(editor, caretOffset);
1677
+ if (slotTextBeforeCaret.length > 0 && !iscelldata(slotTextBeforeCaret)) {
1678
+ return false;
1679
+ }
1680
+ var textAfter = editor.innerText.slice(caretOffset);
1681
+ var remaining = textAfter.replace(/^\s+/, "");
1682
+ if (remaining.length === 0) {
1683
+ return true;
1684
+ }
1685
+ var first = remaining[0];
1686
+ return first === "," || first === ")" || first === "&" || first in operatorjson;
1687
+ }
1633
1688
  function hasCommaOrAnotherRefAfterRangeCell(cell) {
1634
1689
  var _a, _b;
1635
1690
  var n = cell.nextSibling;
@@ -2024,31 +2079,7 @@ export function israngeseleciton(ctx, istooltip) {
2024
2079
  return true;
2025
2080
  }
2026
2081
  var editor = ((_a = anchorElement.closest) === null || _a === void 0 ? void 0 : _a.call(anchorElement, "#luckysheet-rich-text-editor, #luckysheet-functionbox-cell")) || ((_b = parentElement.closest) === null || _b === void 0 ? void 0 : _b.call(parentElement, "#luckysheet-rich-text-editor, #luckysheet-functionbox-cell")) || document.getElementById("luckysheet-rich-text-editor");
2027
- if (!editor || currSelection.rangeCount === 0) {
2028
- return true;
2029
- }
2030
- var inputText = editor.innerText.trim();
2031
- if (!inputText.startsWith("=")) {
2032
- return false;
2033
- }
2034
- if (/^=\s*[A-Za-z_][A-Za-z0-9_]*$/.test(inputText)) {
2035
- return false;
2036
- }
2037
- var caretRange = currSelection.getRangeAt(0).cloneRange();
2038
- var preCaretRange = document.createRange();
2039
- preCaretRange.selectNodeContents(editor);
2040
- preCaretRange.setEnd(caretRange.endContainer, caretRange.endOffset);
2041
- var caretOffset = preCaretRange.toString().length;
2042
- var textAfter = editor.innerText.slice(caretOffset);
2043
- var remaining = textAfter.replace(/^\s+/, "");
2044
- if (remaining.length === 0) {
2045
- return true;
2046
- }
2047
- var first = remaining[0];
2048
- if (first === "," || first === ")" || first === "&" || first in operatorjson) {
2049
- return true;
2050
- }
2051
- return false;
2082
+ return isCaretAtValidFormulaRangeInsertionPoint(editor);
2052
2083
  };
2053
2084
  if (((_a = anchor === null || anchor === void 0 ? void 0 : anchor.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === "span" && anchorOffset !== 0) {
2054
2085
  var txt = _.trim((_b = anchor.textContent) !== null && _b !== void 0 ? _b : "");
@@ -2132,7 +2163,8 @@ export function maybeRecoverDirtyRangeSelection(ctx) {
2132
2163
  return false;
2133
2164
  }
2134
2165
  var inputText = (editor.innerText || "").trim();
2135
- if (inputText.startsWith("=") && israngeseleciton(ctx)) {
2166
+ var atCaretRangeIndex = getFormulaRangeIndexAtCaret(editor);
2167
+ if (inputText.startsWith("=") && atCaretRangeIndex === null && israngeseleciton(ctx)) {
2136
2168
  ctx.formulaCache.rangeSelectionActive = null;
2137
2169
  return true;
2138
2170
  }
@@ -2233,7 +2265,7 @@ export function functionStrChange(txt, type, rc, orient, stindex, step) {
2233
2265
  return function_str;
2234
2266
  }
2235
2267
  export function rangeSetValue(ctx, cellInput, selected, fxInput) {
2236
- var _a, _b, _c, _d, _e, _f, _g;
2268
+ var _a, _b, _c, _d, _e, _f;
2237
2269
  var parser = new DOMParser();
2238
2270
  var doc = parser.parseFromString("<div>".concat(cellInput.innerHTML, "</div>"), "text/html");
2239
2271
  var spans = doc.querySelectorAll("span");
@@ -2248,7 +2280,7 @@ export function rangeSetValue(ctx, cellInput, selected, fxInput) {
2248
2280
  }
2249
2281
  var $editor = cellInput;
2250
2282
  var $copyTo = fxInput;
2251
- if (((_c = document.activeElement) === null || _c === void 0 ? void 0 : _c.id) === "luckysheet-functionbox-cell") {
2283
+ if (getFormulaEditorOwner(ctx) === "fx") {
2252
2284
  $editor = fxInput;
2253
2285
  $copyTo = cellInput;
2254
2286
  }
@@ -2277,9 +2309,9 @@ export function rangeSetValue(ctx, cellInput, selected, fxInput) {
2277
2309
  refEle = ctx.formulaCache.rangeSetValueTo;
2278
2310
  }
2279
2311
  if (refEle && refEle.parentNode) {
2280
- var leftPar = (_d = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _d === void 0 ? void 0 : _d[0];
2281
- if ((_e = leftPar === null || leftPar === void 0 ? void 0 : leftPar.parentElement) === null || _e === void 0 ? void 0 : _e.classList.contains("luckysheet-formula-text-color")) {
2282
- (_g = (_f = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _f === void 0 ? void 0 : _f[0].parentNode) === null || _g === void 0 ? void 0 : _g.appendChild(newEle);
2312
+ var leftPar = (_c = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _c === void 0 ? void 0 : _c[0];
2313
+ if ((_d = leftPar === null || leftPar === void 0 ? void 0 : leftPar.parentElement) === null || _d === void 0 ? void 0 : _d.classList.contains("luckysheet-formula-text-color")) {
2314
+ (_f = (_e = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _e === void 0 ? void 0 : _e[0].parentNode) === null || _f === void 0 ? void 0 : _f.appendChild(newEle);
2283
2315
  } else {
2284
2316
  refEle.parentNode.insertBefore(newEle, refEle.nextSibling);
2285
2317
  }
@@ -971,7 +971,7 @@ function handleOverlayMouseMove(ctx, globalCache, e, cellInput, scrollX, scrollY
971
971
  }
972
972
  }
973
973
  function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollbarY, container, cellInput, fxInput) {
974
- 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;
975
975
  var rect = container.getBoundingClientRect();
976
976
  (0, _modules.onImageMoveEnd)(ctx, globalCache);
977
977
  (0, _modules.onImageResizeEnd)(ctx, globalCache);
@@ -984,11 +984,17 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
984
984
  (0, _hyperlink.onRangeSelectionModalMoveEnd)(globalCache);
985
985
  (0, _modules.onCellsMoveEnd)(ctx, globalCache, e, scrollbarX, scrollbarY, container);
986
986
  if (ctx.formulaCache.rangestart || ctx.formulaCache.rangedrag_column_start || ctx.formulaCache.rangedrag_row_start) {
987
- if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
987
+ if ((0, _modules.getFormulaEditorOwner)(ctx) === "fx") {
988
988
  (0, _formula.handleFormulaInput)(ctx, cellInput, fxInput, 0, undefined, false);
989
989
  } else {
990
990
  (0, _formula.handleFormulaInput)(ctx, fxInput, cellInput, 0, undefined, false);
991
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;
992
998
  }
993
999
  if (ctx.luckysheet_select_status) {
994
1000
  if (ctx.luckysheetPaintModelOn) {
@@ -1030,10 +1036,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1030
1036
  cfg_1.customHeight[ctx.luckysheet_rows_change_size_start[1]] = 1;
1031
1037
  var changeRowIndex_1 = ctx.luckysheet_rows_change_size_start[1];
1032
1038
  var changeRowSelected_1 = false;
1033
- if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
1034
- (_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) {
1035
1041
  return select.row_select;
1036
- })) === null || _e === void 0 ? void 0 : _e.some(function (select) {
1042
+ })) === null || _d === void 0 ? void 0 : _d.some(function (select) {
1037
1043
  if (changeRowIndex_1 >= select.row[0] && changeRowIndex_1 <= select.row[1]) {
1038
1044
  changeRowSelected_1 = true;
1039
1045
  }
@@ -1042,9 +1048,9 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1042
1048
  }
1043
1049
  if (changeRowSelected_1) {
1044
1050
  cfg_1.rowlen || (cfg_1.rowlen = {});
1045
- (_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) {
1046
1052
  return select.row_select;
1047
- })) === null || _g === void 0 ? void 0 : _g.forEach(function (select) {
1053
+ })) === null || _f === void 0 ? void 0 : _f.forEach(function (select) {
1048
1054
  for (var r = select.row[0]; r <= select.row[1]; r += 1) {
1049
1055
  cfg_1.rowlen[r] = Math.ceil(size_1 / ctx.zoomRatio);
1050
1056
  }
@@ -1088,10 +1094,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1088
1094
  cfg_2.customWidth[ctx.luckysheet_cols_change_size_start[1]] = 1;
1089
1095
  var changeColumnIndex_1 = ctx.luckysheet_cols_change_size_start[1];
1090
1096
  var changeColumnSelected_1 = false;
1091
- if (((_j = (_h = ctx.luckysheet_select_save) === null || _h === void 0 ? void 0 : _h.length) !== null && _j !== void 0 ? _j : 0) > 0) {
1092
- (_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) {
1093
1099
  return select.column_select;
1094
- })) === null || _l === void 0 ? void 0 : _l.some(function (select) {
1100
+ })) === null || _k === void 0 ? void 0 : _k.some(function (select) {
1095
1101
  if (changeColumnIndex_1 >= select.column[0] && changeColumnIndex_1 <= select.column[1]) {
1096
1102
  changeColumnSelected_1 = true;
1097
1103
  }
@@ -1100,9 +1106,9 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1100
1106
  }
1101
1107
  if (changeColumnSelected_1) {
1102
1108
  cfg_2.columnlen || (cfg_2.columnlen = {});
1103
- (_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) {
1104
1110
  return select.column_select;
1105
- })) === null || _o === void 0 ? void 0 : _o.forEach(function (select) {
1111
+ })) === null || _m === void 0 ? void 0 : _m.forEach(function (select) {
1106
1112
  for (var r = select.column[0]; r <= select.column[1]; r += 1) {
1107
1113
  cfg_2.columnlen[r] = Math.ceil(size_2 / ctx.zoomRatio);
1108
1114
  }
@@ -1119,10 +1125,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1119
1125
  ctx.luckysheet_cols_freeze_drag = false;
1120
1126
  var scrollLeft = ctx.scrollLeft;
1121
1127
  var x = e.pageX - rect.left - ctx.rowHeaderWidth + scrollLeft - window.scrollX;
1122
- var _p = (0, _location.colLocation)(x, ctx.visibledatacolumn),
1123
- col_pre = _p[0],
1124
- col_curr = _p[1],
1125
- 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];
1126
1132
  var col_index = x > (col_curr + col_pre) / 2 ? col_index_curr : col_index_curr - 1;
1127
1133
  var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1128
1134
  if (idx == null) return;
@@ -1170,10 +1176,10 @@ function handleOverlayMouseUp(ctx, globalCache, settings, e, scrollbarX, scrollb
1170
1176
  ctx.luckysheet_rows_freeze_drag = false;
1171
1177
  var scrollTop = ctx.scrollTop;
1172
1178
  var y = e.pageY - rect.top - ctx.columnHeaderHeight + scrollTop - window.scrollY;
1173
- var _q = (0, _location.rowLocation)(y, ctx.visibledatarow),
1174
- row_pre = _q[0],
1175
- row_curr = _q[1],
1176
- 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];
1177
1183
  var row_index = y > (row_curr + row_pre) / 2 ? row_index_curr : row_index_curr - 1;
1178
1184
  var idx = (0, _utils.getSheetIndex)(ctx, ctx.currentSheetId);
1179
1185
  if (idx == null) return;
@@ -575,6 +575,7 @@ function cancelNormalSelected(ctx) {
575
575
  ctx.formulaCache.rangedrag_column_start = false;
576
576
  ctx.formulaCache.rangedrag_row_start = false;
577
577
  ctx.formulaCache.rangeSelectionActive = null;
578
+ ctx.formulaCache.formulaEditorOwner = null;
578
579
  }
579
580
  function updateCell(ctx, r, c, $input, value, canvas) {
580
581
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
@@ -21,6 +21,7 @@ export declare class FormulaCache {
21
21
  rangedrag_column_start?: boolean;
22
22
  rangedrag_row_start?: boolean;
23
23
  rangeSelectionActive?: boolean | null;
24
+ formulaEditorOwner?: "cell" | "fx" | null;
24
25
  functionRangeIndex?: number[];
25
26
  functionlistMap: any;
26
27
  execFunctionExist?: any[];
@@ -47,6 +48,9 @@ export declare function rangeHightlightselected(ctx: Context, $editor: HTMLDivEl
47
48
  export declare function functionHTMLGenerate(txt: string): string;
48
49
  export declare function getLastFormulaRangeIndex($editor: HTMLDivElement): number | null;
49
50
  export declare function getFormulaRangeIndexAtCaret($editor: HTMLDivElement): number | null;
51
+ export declare function setFormulaEditorOwner(ctx: Context, owner: "cell" | "fx" | null): void;
52
+ export declare function getFormulaEditorOwner(ctx: Context): "cell" | "fx" | null;
53
+ export declare function isCaretAtValidFormulaRangeInsertionPoint(editor: HTMLElement | null): boolean;
50
54
  export declare function markRangeSelectionDirty(ctx: Context): void;
51
55
  export declare function getFormulaRangeIndexForKeyboardSync($editor: HTMLDivElement): number | null;
52
56
  export declare function handleFormulaInput(ctx: Context, $copyTo: HTMLDivElement | null | undefined, $editor: HTMLDivElement, kcode: number, preText?: string, refreshRangeSelect?: boolean): void;
@@ -13,6 +13,7 @@ exports.functionCopy = functionCopy;
13
13
  exports.functionHTMLGenerate = functionHTMLGenerate;
14
14
  exports.functionStrChange = functionStrChange;
15
15
  exports.getAllFunctionGroup = getAllFunctionGroup;
16
+ exports.getFormulaEditorOwner = getFormulaEditorOwner;
16
17
  exports.getFormulaRangeIndexAtCaret = getFormulaRangeIndexAtCaret;
17
18
  exports.getFormulaRangeIndexForKeyboardSync = getFormulaRangeIndexForKeyboardSync;
18
19
  exports.getLastFormulaRangeIndex = getLastFormulaRangeIndex;
@@ -21,6 +22,7 @@ exports.getrangeseleciton = getrangeseleciton;
21
22
  exports.groupValuesRefresh = groupValuesRefresh;
22
23
  exports.handleFormulaInput = handleFormulaInput;
23
24
  exports.insertUpdateFunctionGroup = insertUpdateFunctionGroup;
25
+ exports.isCaretAtValidFormulaRangeInsertionPoint = isCaretAtValidFormulaRangeInsertionPoint;
24
26
  exports.isFormulaReferenceInputMode = isFormulaReferenceInputMode;
25
27
  exports.iscelldata = iscelldata;
26
28
  exports.israngeseleciton = israngeseleciton;
@@ -34,6 +36,7 @@ exports.rangeDragRow = rangeDragRow;
34
36
  exports.rangeHightlightselected = rangeHightlightselected;
35
37
  exports.rangeSetValue = rangeSetValue;
36
38
  exports.setCaretPosition = setCaretPosition;
39
+ exports.setFormulaEditorOwner = setFormulaEditorOwner;
37
40
  var _formulaParser = require("@fileverse-dev/formula-parser");
38
41
  var _lodash = _interopRequireDefault(require("lodash"));
39
42
  var _context = require("../context");
@@ -44,7 +47,6 @@ var _locale = require("../locale");
44
47
  var _color = require("./color");
45
48
  var _location = require("./location");
46
49
  var _2 = require(".");
47
- var _index = require("../utils/index");
48
50
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
49
51
  function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
50
52
  var __assign = void 0 && (void 0).__assign || function () {
@@ -93,6 +95,7 @@ var FormulaCache = exports.FormulaCache = function () {
93
95
  this.data_parm_index = 0;
94
96
  this.selectingRangeIndex = -1;
95
97
  this.rangeSelectionActive = null;
98
+ this.formulaEditorOwner = null;
96
99
  this.functionlistMap = {};
97
100
  this.execFunctionGlobalData = {};
98
101
  this.cellTextToIndexList = {};
@@ -1666,6 +1669,61 @@ function getFormulaRangeIndexAtCaret($editor) {
1666
1669
  var n = parseInt(ri, 10);
1667
1670
  return Number.isNaN(n) ? null : n;
1668
1671
  }
1672
+ function setFormulaEditorOwner(ctx, owner) {
1673
+ ctx.formulaCache.formulaEditorOwner = owner;
1674
+ }
1675
+ function getFormulaEditorOwner(ctx) {
1676
+ var _a, _b;
1677
+ var cachedOwner = ctx.formulaCache.formulaEditorOwner;
1678
+ if (cachedOwner === "cell" || cachedOwner === "fx") {
1679
+ return cachedOwner;
1680
+ }
1681
+ if (((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.id) === "luckysheet-functionbox-cell") {
1682
+ return "fx";
1683
+ }
1684
+ if (((_b = document.activeElement) === null || _b === void 0 ? void 0 : _b.id) === "luckysheet-rich-text-editor") {
1685
+ return "cell";
1686
+ }
1687
+ return null;
1688
+ }
1689
+ function getCurrentFormulaSlotTextBeforeCaret(editor, caretOffset) {
1690
+ var textBefore = editor.innerText.slice(0, caretOffset);
1691
+ var parts = textBefore.split(/[=,(+\-*/&<>]/);
1692
+ return _lodash.default.trim(parts[parts.length - 1] || "");
1693
+ }
1694
+ function isCaretAtValidFormulaRangeInsertionPoint(editor) {
1695
+ var currSelection = window.getSelection();
1696
+ if (!editor || !currSelection || currSelection.rangeCount === 0) {
1697
+ return false;
1698
+ }
1699
+ var anchorNode = currSelection.anchorNode;
1700
+ if (anchorNode && !editor.contains(anchorNode)) {
1701
+ return false;
1702
+ }
1703
+ var inputText = editor.innerText.trim();
1704
+ if (!inputText.startsWith("=")) {
1705
+ return false;
1706
+ }
1707
+ if (/^=\s*[A-Za-z_][A-Za-z0-9_]*$/.test(inputText)) {
1708
+ return false;
1709
+ }
1710
+ var caretRange = currSelection.getRangeAt(0).cloneRange();
1711
+ var preCaretRange = document.createRange();
1712
+ preCaretRange.selectNodeContents(editor);
1713
+ preCaretRange.setEnd(caretRange.endContainer, caretRange.endOffset);
1714
+ var caretOffset = preCaretRange.toString().length;
1715
+ var slotTextBeforeCaret = getCurrentFormulaSlotTextBeforeCaret(editor, caretOffset);
1716
+ if (slotTextBeforeCaret.length > 0 && !iscelldata(slotTextBeforeCaret)) {
1717
+ return false;
1718
+ }
1719
+ var textAfter = editor.innerText.slice(caretOffset);
1720
+ var remaining = textAfter.replace(/^\s+/, "");
1721
+ if (remaining.length === 0) {
1722
+ return true;
1723
+ }
1724
+ var first = remaining[0];
1725
+ return first === "," || first === ")" || first === "&" || first in operatorjson;
1726
+ }
1669
1727
  function hasCommaOrAnotherRefAfterRangeCell(cell) {
1670
1728
  var _a, _b;
1671
1729
  var n = cell.nextSibling;
@@ -2060,31 +2118,7 @@ function israngeseleciton(ctx, istooltip) {
2060
2118
  return true;
2061
2119
  }
2062
2120
  var editor = ((_a = anchorElement.closest) === null || _a === void 0 ? void 0 : _a.call(anchorElement, "#luckysheet-rich-text-editor, #luckysheet-functionbox-cell")) || ((_b = parentElement.closest) === null || _b === void 0 ? void 0 : _b.call(parentElement, "#luckysheet-rich-text-editor, #luckysheet-functionbox-cell")) || document.getElementById("luckysheet-rich-text-editor");
2063
- if (!editor || currSelection.rangeCount === 0) {
2064
- return true;
2065
- }
2066
- var inputText = editor.innerText.trim();
2067
- if (!inputText.startsWith("=")) {
2068
- return false;
2069
- }
2070
- if (/^=\s*[A-Za-z_][A-Za-z0-9_]*$/.test(inputText)) {
2071
- return false;
2072
- }
2073
- var caretRange = currSelection.getRangeAt(0).cloneRange();
2074
- var preCaretRange = document.createRange();
2075
- preCaretRange.selectNodeContents(editor);
2076
- preCaretRange.setEnd(caretRange.endContainer, caretRange.endOffset);
2077
- var caretOffset = preCaretRange.toString().length;
2078
- var textAfter = editor.innerText.slice(caretOffset);
2079
- var remaining = textAfter.replace(/^\s+/, "");
2080
- if (remaining.length === 0) {
2081
- return true;
2082
- }
2083
- var first = remaining[0];
2084
- if (first === "," || first === ")" || first === "&" || first in operatorjson) {
2085
- return true;
2086
- }
2087
- return false;
2121
+ return isCaretAtValidFormulaRangeInsertionPoint(editor);
2088
2122
  };
2089
2123
  if (((_a = anchor === null || anchor === void 0 ? void 0 : anchor.parentNode) === null || _a === void 0 ? void 0 : _a.nodeName.toLowerCase()) === "span" && anchorOffset !== 0) {
2090
2124
  var txt = _lodash.default.trim((_b = anchor.textContent) !== null && _b !== void 0 ? _b : "");
@@ -2168,7 +2202,8 @@ function maybeRecoverDirtyRangeSelection(ctx) {
2168
2202
  return false;
2169
2203
  }
2170
2204
  var inputText = (editor.innerText || "").trim();
2171
- if (inputText.startsWith("=") && israngeseleciton(ctx)) {
2205
+ var atCaretRangeIndex = getFormulaRangeIndexAtCaret(editor);
2206
+ if (inputText.startsWith("=") && atCaretRangeIndex === null && israngeseleciton(ctx)) {
2172
2207
  ctx.formulaCache.rangeSelectionActive = null;
2173
2208
  return true;
2174
2209
  }
@@ -2269,14 +2304,14 @@ function functionStrChange(txt, type, rc, orient, stindex, step) {
2269
2304
  return function_str;
2270
2305
  }
2271
2306
  function rangeSetValue(ctx, cellInput, selected, fxInput) {
2272
- var _a, _b, _c, _d, _e, _f, _g;
2307
+ var _a, _b, _c, _d, _e, _f;
2273
2308
  var parser = new DOMParser();
2274
2309
  var doc = parser.parseFromString("<div>".concat(cellInput.innerHTML, "</div>"), "text/html");
2275
2310
  var spans = doc.querySelectorAll("span");
2276
2311
  var lastSpan = spans[spans.length - 1];
2277
2312
  var isManagedRangeSpan = (_b = (_a = lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.classList) === null || _a === void 0 ? void 0 : _a.contains("fortune-formula-functionrange-cell")) !== null && _b !== void 0 ? _b : false;
2278
- if (lastSpan && (0, _index.isLetterNumberPattern)(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) && !isManagedRangeSpan) {
2279
- var htmlR = (0, _index.removeLastSpan)(cellInput.innerHTML);
2313
+ if (lastSpan && (0, _utils.isLetterNumberPattern)(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) && !isManagedRangeSpan) {
2314
+ var htmlR = (0, _utils.removeLastSpan)(cellInput.innerHTML);
2280
2315
  cellInput.innerHTML = "".concat(htmlR);
2281
2316
  cellInput.focus();
2282
2317
  var kids = cellInput.childNodes;
@@ -2284,7 +2319,7 @@ function rangeSetValue(ctx, cellInput, selected, fxInput) {
2284
2319
  }
2285
2320
  var $editor = cellInput;
2286
2321
  var $copyTo = fxInput;
2287
- if (((_c = document.activeElement) === null || _c === void 0 ? void 0 : _c.id) === "luckysheet-functionbox-cell") {
2322
+ if (getFormulaEditorOwner(ctx) === "fx") {
2288
2323
  $editor = fxInput;
2289
2324
  $copyTo = cellInput;
2290
2325
  }
@@ -2313,9 +2348,9 @@ function rangeSetValue(ctx, cellInput, selected, fxInput) {
2313
2348
  refEle = ctx.formulaCache.rangeSetValueTo;
2314
2349
  }
2315
2350
  if (refEle && refEle.parentNode) {
2316
- var leftPar = (_d = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _d === void 0 ? void 0 : _d[0];
2317
- if ((_e = leftPar === null || leftPar === void 0 ? void 0 : leftPar.parentElement) === null || _e === void 0 ? void 0 : _e.classList.contains("luckysheet-formula-text-color")) {
2318
- (_g = (_f = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _f === void 0 ? void 0 : _f[0].parentNode) === null || _g === void 0 ? void 0 : _g.appendChild(newEle);
2351
+ var leftPar = (_c = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _c === void 0 ? void 0 : _c[0];
2352
+ if ((_d = leftPar === null || leftPar === void 0 ? void 0 : leftPar.parentElement) === null || _d === void 0 ? void 0 : _d.classList.contains("luckysheet-formula-text-color")) {
2353
+ (_f = (_e = document.getElementsByClassName("luckysheet-formula-text-lpar")) === null || _e === void 0 ? void 0 : _e[0].parentNode) === null || _f === void 0 ? void 0 : _f.appendChild(newEle);
2319
2354
  } else {
2320
2355
  refEle.parentNode.insertBefore(newEle, refEle.nextSibling);
2321
2356
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse-dev/fortune-core",
3
- "version": "1.3.11-input-ref",
3
+ "version": "1.3.11-input-ref-1",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.js",
6
6
  "typings": "lib/index.d.ts",