@fileverse-dev/fortune-react 1.1.39 → 1.1.40

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.
@@ -16,7 +16,6 @@ import ContentEditable from "./ContentEditable";
16
16
  import FormulaSearch from "./FormulaSearch";
17
17
  import FormulaHint from "./FormulaHint";
18
18
  import usePrevious from "../../hooks/usePrevious";
19
- import { moveCursorToEnd, isLetterNumberPattern, removeLastSpan, incrementColumn, decrementColumn, incrementRow, decrementRow } from "./helper";
20
19
  var InputBox = function InputBox() {
21
20
  var _a, _b, _c, _d, _e, _f;
22
21
  var _g = useContext(WorkbookContext),
@@ -33,28 +32,16 @@ var InputBox = function InputBox() {
33
32
  var _j = useState(false),
34
33
  isInputBoxActive = _j[0],
35
34
  setIsInputBoxActive = _j[1];
36
- var _k = useState(""),
37
- activeCell = _k[0],
38
- setActiveCell = _k[1];
39
- var _l = useState(""),
40
- activeRefCell = _l[0],
41
- setActiveRefCell = _l[1];
42
- var _m = useState({
35
+ var _k = useState({
43
36
  left: 0,
44
37
  top: 0
45
38
  }),
46
- frozenPosition = _m[0],
47
- setFrozenPosition = _m[1];
39
+ frozenPosition = _k[0],
40
+ setFrozenPosition = _k[1];
48
41
  var firstSelection = (_a = context.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a[0];
49
42
  var row_index = firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.row_focus;
50
43
  var col_index = firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.column_focus;
51
44
  var preText = useRef("");
52
- var placeRef = useRef("");
53
- useEffect(function () {
54
- if (isInputBoxActive) {
55
- setActiveCell(getCellAddress());
56
- }
57
- }, [isInputBoxActive]);
58
45
  var inputBoxStyle = useMemo(function () {
59
46
  if (firstSelection && context.luckysheetCellUpdate.length > 0) {
60
47
  var flowdata = getFlowdata(context);
@@ -200,53 +187,8 @@ var InputBox = function InputBox() {
200
187
  }
201
188
  }, [getActiveFormula, insertSelectedFormula]);
202
189
  var onKeyDown = useCallback(function (e) {
203
- var _a, _b;
204
190
  lastKeyDownEventRef.current = new KeyboardEvent(e.type, e.nativeEvent);
205
191
  preText.current = inputRef.current.innerText;
206
- if (e.key === "Delete" || e.key === "Backspace") {
207
- setTimeout(function () {
208
- moveCursorToEnd(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current);
209
- }, 5);
210
- }
211
- var refCell = placeRef.current;
212
- if (e.key === "ArrowUp") {
213
- refCell = decrementRow(placeRef.current);
214
- } else if (e.key === "ArrowDown") {
215
- refCell = incrementRow(placeRef.current);
216
- } else if (e.key === "ArrowLeft") {
217
- refCell = decrementColumn(placeRef.current);
218
- } else if (e.key === "ArrowRight") {
219
- refCell = incrementColumn(placeRef.current);
220
- }
221
- if (e.key === "ArrowUp" || e.key === "ArrowDown" || e.key === "ArrowLeft" || e.key === "ArrowRight") {
222
- var parser = new DOMParser();
223
- var doc = parser.parseFromString("<div>".concat((_a = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) === null || _a === void 0 ? void 0 : _a.innerHTML, "</div>"), "text/html");
224
- var spans = doc.querySelectorAll("span");
225
- var lastSpan = spans[spans.length - 1];
226
- var notFunctionInit = !((_b = document.getElementById("luckysheet-rich-text-editor")) === null || _b === void 0 ? void 0 : _b.innerText.includes("("));
227
- if ((lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(")")) || notFunctionInit && (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) >= 1 && !_.includes(["="], lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
228
- return;
229
- }
230
- if (((lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) === "(" || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) === "," || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(":")) || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) !== ")") && !isLetterNumberPattern(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
231
- if (!(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current.innerText.includes("(")) && (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) > 2 || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) === 2 && !isLetterNumberPattern(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
232
- return;
233
- }
234
- inputRef.current.innerHTML = "".concat(inputRef.current.innerHTML, "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"0\" dir=\"auto\" style=\"color:#c1232b;\">").concat(refCell, "</span>");
235
- setTimeout(function () {
236
- moveCursorToEnd(inputRef.current);
237
- }, 1);
238
- return;
239
- }
240
- if (isLetterNumberPattern(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
241
- var htmlR = removeLastSpan(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current.innerHTML);
242
- inputRef.current.innerHTML = "".concat(htmlR, "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"0\" dir=\"auto\" style=\"color:#c1232b;\">").concat(refCell, "</span>");
243
- moveCursorToEnd(inputRef.current);
244
- setTimeout(function () {
245
- moveCursorToEnd(inputRef.current);
246
- }, 1);
247
- return;
248
- }
249
- }
250
192
  if (e.key === "Escape" && context.luckysheetCellUpdate.length > 0) {
251
193
  setContext(function (draftCtx) {
252
194
  cancelNormalSelected(draftCtx);
@@ -398,14 +340,6 @@ var InputBox = function InputBox() {
398
340
  var rowNumber = rowIndex + 1;
399
341
  return "".concat(columnChar).concat(rowNumber);
400
342
  }, [firstSelection]);
401
- var wraperGetCell = function wraperGetCell() {
402
- var cell = getCellAddress();
403
- placeRef.current = cell;
404
- if (activeRefCell !== cell) {
405
- setActiveRefCell(cell);
406
- }
407
- return activeCell || cell;
408
- };
409
343
  return /*#__PURE__*/React.createElement("div", {
410
344
  className: "luckysheet-input-box",
411
345
  style: getInputBoxPosition(),
@@ -418,7 +352,7 @@ var InputBox = function InputBox() {
418
352
  }, firstSelection && !((_f = context.rangeDialog) === null || _f === void 0 ? void 0 : _f.show) && (/*#__PURE__*/React.createElement("div", {
419
353
  className: "luckysheet-cell-address-indicator",
420
354
  style: getAddressIndicatorPosition()
421
- }, wraperGetCell())), /*#__PURE__*/React.createElement("div", {
355
+ }, getCellAddress())), /*#__PURE__*/React.createElement("div", {
422
356
  className: "luckysheet-input-box-inner",
423
357
  style: firstSelection ? __assign({
424
358
  minWidth: firstSelection.width,
@@ -13,7 +13,6 @@ var _ContentEditable = _interopRequireDefault(require("./ContentEditable"));
13
13
  var _FormulaSearch = _interopRequireDefault(require("./FormulaSearch"));
14
14
  var _FormulaHint = _interopRequireDefault(require("./FormulaHint"));
15
15
  var _usePrevious = _interopRequireDefault(require("../../hooks/usePrevious"));
16
- var _helper = require("./helper");
17
16
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
17
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
19
18
  var __assign = void 0 && (void 0).__assign || function () {
@@ -42,28 +41,16 @@ var InputBox = function InputBox() {
42
41
  var _j = (0, _react.useState)(false),
43
42
  isInputBoxActive = _j[0],
44
43
  setIsInputBoxActive = _j[1];
45
- var _k = (0, _react.useState)(""),
46
- activeCell = _k[0],
47
- setActiveCell = _k[1];
48
- var _l = (0, _react.useState)(""),
49
- activeRefCell = _l[0],
50
- setActiveRefCell = _l[1];
51
- var _m = (0, _react.useState)({
44
+ var _k = (0, _react.useState)({
52
45
  left: 0,
53
46
  top: 0
54
47
  }),
55
- frozenPosition = _m[0],
56
- setFrozenPosition = _m[1];
48
+ frozenPosition = _k[0],
49
+ setFrozenPosition = _k[1];
57
50
  var firstSelection = (_a = context.luckysheet_select_save) === null || _a === void 0 ? void 0 : _a[0];
58
51
  var row_index = firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.row_focus;
59
52
  var col_index = firstSelection === null || firstSelection === void 0 ? void 0 : firstSelection.column_focus;
60
53
  var preText = (0, _react.useRef)("");
61
- var placeRef = (0, _react.useRef)("");
62
- (0, _react.useEffect)(function () {
63
- if (isInputBoxActive) {
64
- setActiveCell(getCellAddress());
65
- }
66
- }, [isInputBoxActive]);
67
54
  var inputBoxStyle = (0, _react.useMemo)(function () {
68
55
  if (firstSelection && context.luckysheetCellUpdate.length > 0) {
69
56
  var flowdata = (0, _fortuneCore.getFlowdata)(context);
@@ -209,53 +196,8 @@ var InputBox = function InputBox() {
209
196
  }
210
197
  }, [getActiveFormula, insertSelectedFormula]);
211
198
  var onKeyDown = (0, _react.useCallback)(function (e) {
212
- var _a, _b;
213
199
  lastKeyDownEventRef.current = new KeyboardEvent(e.type, e.nativeEvent);
214
200
  preText.current = inputRef.current.innerText;
215
- if (e.key === "Delete" || e.key === "Backspace") {
216
- setTimeout(function () {
217
- (0, _helper.moveCursorToEnd)(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current);
218
- }, 5);
219
- }
220
- var refCell = placeRef.current;
221
- if (e.key === "ArrowUp") {
222
- refCell = (0, _helper.decrementRow)(placeRef.current);
223
- } else if (e.key === "ArrowDown") {
224
- refCell = (0, _helper.incrementRow)(placeRef.current);
225
- } else if (e.key === "ArrowLeft") {
226
- refCell = (0, _helper.decrementColumn)(placeRef.current);
227
- } else if (e.key === "ArrowRight") {
228
- refCell = (0, _helper.incrementColumn)(placeRef.current);
229
- }
230
- if (e.key === "ArrowUp" || e.key === "ArrowDown" || e.key === "ArrowLeft" || e.key === "ArrowRight") {
231
- var parser = new DOMParser();
232
- var doc = parser.parseFromString("<div>".concat((_a = inputRef === null || inputRef === void 0 ? void 0 : inputRef.current) === null || _a === void 0 ? void 0 : _a.innerHTML, "</div>"), "text/html");
233
- var spans = doc.querySelectorAll("span");
234
- var lastSpan = spans[spans.length - 1];
235
- var notFunctionInit = !((_b = document.getElementById("luckysheet-rich-text-editor")) === null || _b === void 0 ? void 0 : _b.innerText.includes("("));
236
- if ((lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(")")) || notFunctionInit && (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) >= 1 && !_lodash.default.includes(["="], lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
237
- return;
238
- }
239
- if (((lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) === "(" || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) === "," || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.includes(":")) || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText) !== ")") && !(0, _helper.isLetterNumberPattern)(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
240
- if (!(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current.innerText.includes("(")) && (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) > 2 || (lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText.length) === 2 && !(0, _helper.isLetterNumberPattern)(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
241
- return;
242
- }
243
- inputRef.current.innerHTML = "".concat(inputRef.current.innerHTML, "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"0\" dir=\"auto\" style=\"color:#c1232b;\">").concat(refCell, "</span>");
244
- setTimeout(function () {
245
- (0, _helper.moveCursorToEnd)(inputRef.current);
246
- }, 1);
247
- return;
248
- }
249
- if ((0, _helper.isLetterNumberPattern)(lastSpan === null || lastSpan === void 0 ? void 0 : lastSpan.innerText)) {
250
- var htmlR = (0, _helper.removeLastSpan)(inputRef === null || inputRef === void 0 ? void 0 : inputRef.current.innerHTML);
251
- inputRef.current.innerHTML = "".concat(htmlR, "<span class=\"fortune-formula-functionrange-cell\" rangeindex=\"0\" dir=\"auto\" style=\"color:#c1232b;\">").concat(refCell, "</span>");
252
- (0, _helper.moveCursorToEnd)(inputRef.current);
253
- setTimeout(function () {
254
- (0, _helper.moveCursorToEnd)(inputRef.current);
255
- }, 1);
256
- return;
257
- }
258
- }
259
201
  if (e.key === "Escape" && context.luckysheetCellUpdate.length > 0) {
260
202
  setContext(function (draftCtx) {
261
203
  (0, _fortuneCore.cancelNormalSelected)(draftCtx);
@@ -407,14 +349,6 @@ var InputBox = function InputBox() {
407
349
  var rowNumber = rowIndex + 1;
408
350
  return "".concat(columnChar).concat(rowNumber);
409
351
  }, [firstSelection]);
410
- var wraperGetCell = function wraperGetCell() {
411
- var cell = getCellAddress();
412
- placeRef.current = cell;
413
- if (activeRefCell !== cell) {
414
- setActiveRefCell(cell);
415
- }
416
- return activeCell || cell;
417
- };
418
352
  return /*#__PURE__*/_react.default.createElement("div", {
419
353
  className: "luckysheet-input-box",
420
354
  style: getInputBoxPosition(),
@@ -427,7 +361,7 @@ var InputBox = function InputBox() {
427
361
  }, firstSelection && !((_f = context.rangeDialog) === null || _f === void 0 ? void 0 : _f.show) && (/*#__PURE__*/_react.default.createElement("div", {
428
362
  className: "luckysheet-cell-address-indicator",
429
363
  style: getAddressIndicatorPosition()
430
- }, wraperGetCell())), /*#__PURE__*/_react.default.createElement("div", {
364
+ }, getCellAddress())), /*#__PURE__*/_react.default.createElement("div", {
431
365
  className: "luckysheet-input-box-inner",
432
366
  style: firstSelection ? __assign({
433
367
  minWidth: firstSelection.width,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse-dev/fortune-react",
3
- "version": "1.1.39",
3
+ "version": "1.1.40",
4
4
  "main": "lib/index.js",
5
5
  "types": "lib/index.d.ts",
6
6
  "module": "es/index.js",
@@ -16,7 +16,7 @@
16
16
  "tsc": "tsc"
17
17
  },
18
18
  "dependencies": {
19
- "@fileverse-dev/fortune-core": "1.1.39",
19
+ "@fileverse-dev/fortune-core": "1.1.40",
20
20
  "@fileverse/ui": "^4.1.7-patch-21",
21
21
  "@tippyjs/react": "^4.2.6",
22
22
  "@types/regenerator-runtime": "^0.13.6",
@@ -1,7 +0,0 @@
1
- export declare function moveCursorToEnd(editableDiv: HTMLDivElement): void;
2
- export declare function isLetterNumberPattern(str: string): boolean;
3
- export declare function removeLastSpan(htmlString: string): string;
4
- export declare function incrementColumn(cell: string): string;
5
- export declare function decrementColumn(cell: string): string;
6
- export declare function incrementRow(cell: string): string;
7
- export declare function decrementRow(cell: string): string;
@@ -1,77 +0,0 @@
1
- export function moveCursorToEnd(editableDiv) {
2
- editableDiv.focus();
3
- var range = document.createRange();
4
- var selection = window.getSelection();
5
- range.selectNodeContents(editableDiv);
6
- range.collapse(false);
7
- if (selection) {
8
- selection.removeAllRanges();
9
- selection.addRange(range);
10
- }
11
- }
12
- export function isLetterNumberPattern(str) {
13
- var regex = /^[a-zA-Z]\d+$/;
14
- return regex.test(str);
15
- }
16
- export function removeLastSpan(htmlString) {
17
- var container = document.createElement("div");
18
- container.innerHTML = htmlString;
19
- var spans = container.querySelectorAll("span");
20
- if (spans.length > 0) {
21
- var lastSpan = spans[spans.length - 1];
22
- lastSpan.remove();
23
- }
24
- return container.innerHTML;
25
- }
26
- function parseCell(input) {
27
- var match = input.match(/^([A-Z]+)(\d+)$/i);
28
- if (!match) return null;
29
- return {
30
- colPart: match[1].toUpperCase(),
31
- rowPart: parseInt(match[2], 10)
32
- };
33
- }
34
- function columnToNumber(colPart) {
35
- var colNumber = 0;
36
- for (var i = 0; i < colPart.length; i++) {
37
- colNumber = colNumber * 26 + (colPart.charCodeAt(i) - 64);
38
- }
39
- return colNumber;
40
- }
41
- function numberToColumn(colNumber) {
42
- var colPart = "";
43
- while (colNumber > 0) {
44
- colNumber--;
45
- colPart = String.fromCharCode(65 + colNumber % 26) + colPart;
46
- colNumber = Math.floor(colNumber / 26);
47
- }
48
- return colPart;
49
- }
50
- export function incrementColumn(cell) {
51
- var parsed = parseCell(cell);
52
- if (!parsed) return "";
53
- var colNumber = columnToNumber(parsed.colPart);
54
- colNumber += 1;
55
- var newColPart = numberToColumn(colNumber);
56
- return newColPart + parsed.rowPart;
57
- }
58
- export function decrementColumn(cell) {
59
- var parsed = parseCell(cell);
60
- if (!parsed) return "";
61
- var colNumber = columnToNumber(parsed.colPart);
62
- colNumber = Math.max(1, colNumber - 1);
63
- var newColPart = numberToColumn(colNumber);
64
- return newColPart + parsed.rowPart;
65
- }
66
- export function incrementRow(cell) {
67
- var parsed = parseCell(cell);
68
- if (!parsed) return "";
69
- var newRowPart = parsed.rowPart + 1;
70
- return parsed.colPart + newRowPart;
71
- }
72
- export function decrementRow(cell) {
73
- var parsed = parseCell(cell);
74
- if (!parsed) return "";
75
- var newRowPart = Math.max(1, parsed.rowPart - 1);
76
- return parsed.colPart + newRowPart;
77
- }
@@ -1,7 +0,0 @@
1
- export declare function moveCursorToEnd(editableDiv: HTMLDivElement): void;
2
- export declare function isLetterNumberPattern(str: string): boolean;
3
- export declare function removeLastSpan(htmlString: string): string;
4
- export declare function incrementColumn(cell: string): string;
5
- export declare function decrementColumn(cell: string): string;
6
- export declare function incrementRow(cell: string): string;
7
- export declare function decrementRow(cell: string): string;
@@ -1,89 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.decrementColumn = decrementColumn;
7
- exports.decrementRow = decrementRow;
8
- exports.incrementColumn = incrementColumn;
9
- exports.incrementRow = incrementRow;
10
- exports.isLetterNumberPattern = isLetterNumberPattern;
11
- exports.moveCursorToEnd = moveCursorToEnd;
12
- exports.removeLastSpan = removeLastSpan;
13
- function moveCursorToEnd(editableDiv) {
14
- editableDiv.focus();
15
- var range = document.createRange();
16
- var selection = window.getSelection();
17
- range.selectNodeContents(editableDiv);
18
- range.collapse(false);
19
- if (selection) {
20
- selection.removeAllRanges();
21
- selection.addRange(range);
22
- }
23
- }
24
- function isLetterNumberPattern(str) {
25
- var regex = /^[a-zA-Z]\d+$/;
26
- return regex.test(str);
27
- }
28
- function removeLastSpan(htmlString) {
29
- var container = document.createElement("div");
30
- container.innerHTML = htmlString;
31
- var spans = container.querySelectorAll("span");
32
- if (spans.length > 0) {
33
- var lastSpan = spans[spans.length - 1];
34
- lastSpan.remove();
35
- }
36
- return container.innerHTML;
37
- }
38
- function parseCell(input) {
39
- var match = input.match(/^([A-Z]+)(\d+)$/i);
40
- if (!match) return null;
41
- return {
42
- colPart: match[1].toUpperCase(),
43
- rowPart: parseInt(match[2], 10)
44
- };
45
- }
46
- function columnToNumber(colPart) {
47
- var colNumber = 0;
48
- for (var i = 0; i < colPart.length; i++) {
49
- colNumber = colNumber * 26 + (colPart.charCodeAt(i) - 64);
50
- }
51
- return colNumber;
52
- }
53
- function numberToColumn(colNumber) {
54
- var colPart = "";
55
- while (colNumber > 0) {
56
- colNumber--;
57
- colPart = String.fromCharCode(65 + colNumber % 26) + colPart;
58
- colNumber = Math.floor(colNumber / 26);
59
- }
60
- return colPart;
61
- }
62
- function incrementColumn(cell) {
63
- var parsed = parseCell(cell);
64
- if (!parsed) return "";
65
- var colNumber = columnToNumber(parsed.colPart);
66
- colNumber += 1;
67
- var newColPart = numberToColumn(colNumber);
68
- return newColPart + parsed.rowPart;
69
- }
70
- function decrementColumn(cell) {
71
- var parsed = parseCell(cell);
72
- if (!parsed) return "";
73
- var colNumber = columnToNumber(parsed.colPart);
74
- colNumber = Math.max(1, colNumber - 1);
75
- var newColPart = numberToColumn(colNumber);
76
- return newColPart + parsed.rowPart;
77
- }
78
- function incrementRow(cell) {
79
- var parsed = parseCell(cell);
80
- if (!parsed) return "";
81
- var newRowPart = parsed.rowPart + 1;
82
- return parsed.colPart + newRowPart;
83
- }
84
- function decrementRow(cell) {
85
- var parsed = parseCell(cell);
86
- if (!parsed) return "";
87
- var newRowPart = Math.max(1, parsed.rowPart - 1);
88
- return parsed.colPart + newRowPart;
89
- }