@fileverse-dev/fortune-core 1.3.5-hyper → 1.3.5-hyper-2

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.
package/es/api/sheet.js CHANGED
@@ -209,23 +209,22 @@ export function calculateSheetFromula(ctx, id) {
209
209
  }
210
210
  }
211
211
  export function calculateReferencedCellSheetFromula(ctx, id, refCell) {
212
- var _a, _b, _c, _d, _e, _f;
212
+ var _a, _b, _c, _d, _e;
213
213
  var index = getSheetIndex(ctx, id);
214
214
  if (!ctx.luckysheetfile[index].data) return;
215
215
  var _loop_1 = function _loop_1(r) {
216
216
  var _loop_2 = function _loop_2(c) {
217
- console.log(refCell, (_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f);
218
217
  var isRef = false;
219
- if (refCell && ((_b = ctx.luckysheetfile[index].data[r][c]) === null || _b === void 0 ? void 0 : _b.f) && !((_c = ctx.luckysheetfile[index].data[r][c]) === null || _c === void 0 ? void 0 : _c.isDataBlockFormula)) {
218
+ if (refCell && ((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f) && !((_b = ctx.luckysheetfile[index].data[r][c]) === null || _b === void 0 ? void 0 : _b.isDataBlockFormula)) {
220
219
  isRef = refCell.some(function (cell) {
221
220
  var _a;
222
221
  return isCellReferenced((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f, cell);
223
222
  });
224
223
  }
225
- if (!isRef || !((_d = ctx.luckysheetfile[index].data[r][c]) === null || _d === void 0 ? void 0 : _d.f) || ((_e = ctx.luckysheetfile[index].data[r][c]) === null || _e === void 0 ? void 0 : _e.isDataBlockFormula)) {
224
+ if (!isRef || !((_c = ctx.luckysheetfile[index].data[r][c]) === null || _c === void 0 ? void 0 : _c.f) || ((_d = ctx.luckysheetfile[index].data[r][c]) === null || _d === void 0 ? void 0 : _d.isDataBlockFormula)) {
226
225
  return "continue";
227
226
  }
228
- var result = execfunction(ctx, (_f = ctx.luckysheetfile[index].data[r][c]) === null || _f === void 0 ? void 0 : _f.f, r, c, id);
227
+ var result = execfunction(ctx, (_e = ctx.luckysheetfile[index].data[r][c]) === null || _e === void 0 ? void 0 : _e.f, r, c, id);
229
228
  var isValueArray = Array.isArray(result[1]);
230
229
  if (isValueArray) {
231
230
  var value = {
@@ -139,7 +139,7 @@ export function handleGlobalEnter(ctx, cellInput, e, canvas) {
139
139
  row_focus: lastCellUpdate[0],
140
140
  column_focus: lastCellUpdate[1]
141
141
  }];
142
- moveHighlightCell(ctx, "down", 1, "rangeOfSelect");
142
+ moveHighlightCell(ctx, "down", hideCRCount(ctx, "ArrowDown"), "rangeOfSelect");
143
143
  e.preventDefault();
144
144
  } else {
145
145
  if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
@@ -434,9 +434,9 @@ export function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUnd
434
434
  updateCell(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput, undefined, canvas);
435
435
  }
436
436
  if (e.shiftKey) {
437
- moveHighlightCell(ctx, "right", -1, "rangeOfSelect");
437
+ moveHighlightCell(ctx, "right", -hideCRCount(ctx, "ArrowLeft"), "rangeOfSelect");
438
438
  } else {
439
- moveHighlightCell(ctx, "right", 1, "rangeOfSelect");
439
+ moveHighlightCell(ctx, "right", hideCRCount(ctx, "ArrowRight"), "rangeOfSelect");
440
440
  }
441
441
  e.preventDefault();
442
442
  } else if (kstr === "F2") {
@@ -6,3 +6,4 @@ export declare function getSelectionCharacterOffsets(element: Node): {
6
6
  end: number;
7
7
  } | null;
8
8
  export declare function setSelectionByCharacterOffset(element: HTMLDivElement, start: number, end: number): void;
9
+ export declare function getRangeRectsByCharacterOffset(element: HTMLDivElement, start: number, end: number): DOMRect[];
@@ -114,4 +114,39 @@ export function setSelectionByCharacterOffset(element, start, end) {
114
114
  sel.removeAllRanges();
115
115
  sel.addRange(range);
116
116
  }
117
+ }
118
+ export function getRangeRectsByCharacterOffset(element, start, end) {
119
+ if (start >= end) return [];
120
+ var charIndex = 0;
121
+ var startNode = null;
122
+ var startOffset = 0;
123
+ var endNode = null;
124
+ var endOffset = 0;
125
+ function walk(node) {
126
+ if (node.nodeType === Node.TEXT_NODE) {
127
+ var len = (node.textContent || "").length;
128
+ if (startNode == null && charIndex + len > start) {
129
+ startNode = node;
130
+ startOffset = start - charIndex;
131
+ }
132
+ if (endNode == null && charIndex + len >= end) {
133
+ endNode = node;
134
+ endOffset = end - charIndex;
135
+ return true;
136
+ }
137
+ charIndex += len;
138
+ return false;
139
+ }
140
+ for (var i = 0; i < node.childNodes.length; i += 1) {
141
+ if (walk(node.childNodes[i])) return true;
142
+ }
143
+ return false;
144
+ }
145
+ walk(element);
146
+ if (!startNode || !endNode) return [];
147
+ var range = document.createRange();
148
+ range.setStart(startNode, startOffset);
149
+ range.setEnd(endNode, endOffset);
150
+ var rects = range.getClientRects();
151
+ return Array.from(rects);
117
152
  }
@@ -1613,6 +1613,7 @@ export function deleteSelectedCellFormat(ctx) {
1613
1613
  return "success";
1614
1614
  }
1615
1615
  export function fillRightData(ctx) {
1616
+ var _a, _b;
1616
1617
  var allowEdit = isAllowEdit(ctx);
1617
1618
  if (allowEdit === false) {
1618
1619
  return "allowEdit";
@@ -1640,10 +1641,20 @@ export function fillRightData(ctx) {
1640
1641
  var r2 = selection[s].row[1];
1641
1642
  var c1 = selection[s].column[0];
1642
1643
  var c2 = selection[s].column[1];
1643
- for (var r = r1; r <= r2; r += 1) {
1644
- for (var c = c1; c <= c2; c += 1) {
1645
- var previousCell = d[r][c - 1];
1646
- d[r][c] = __assign({}, previousCell);
1644
+ var isSingleCell = r1 === r2 && c1 === c2;
1645
+ if (isSingleCell) {
1646
+ if (c1 - 1 >= 0 && d[r1]) {
1647
+ var prev = d[r1][c1 - 1];
1648
+ d[r1][c1] = prev != null ? __assign({}, prev) : {};
1649
+ }
1650
+ } else {
1651
+ for (var r = r1; r <= r2; r += 1) {
1652
+ var sourceCell = (_a = d[r]) === null || _a === void 0 ? void 0 : _a[c1];
1653
+ for (var c = c1 + 1; c <= c2; c += 1) {
1654
+ if (d[r]) {
1655
+ d[r][c] = sourceCell != null ? __assign({}, sourceCell) : (_b = d[r][c]) !== null && _b !== void 0 ? _b : {};
1656
+ }
1657
+ }
1647
1658
  }
1648
1659
  }
1649
1660
  }
@@ -1651,6 +1662,7 @@ export function fillRightData(ctx) {
1651
1662
  return "success";
1652
1663
  }
1653
1664
  export function fillDownData(ctx) {
1665
+ var _a, _b;
1654
1666
  var allowEdit = isAllowEdit(ctx);
1655
1667
  if (allowEdit === false) {
1656
1668
  return "allowEdit";
@@ -1678,10 +1690,20 @@ export function fillDownData(ctx) {
1678
1690
  var r2 = selection[s].row[1];
1679
1691
  var c1 = selection[s].column[0];
1680
1692
  var c2 = selection[s].column[1];
1681
- for (var r = r1; r <= r2; r += 1) {
1693
+ var isSingleCell = r1 === r2 && c1 === c2;
1694
+ if (isSingleCell) {
1695
+ if (r1 - 1 >= 0 && d[r1 - 1]) {
1696
+ var prev = d[r1 - 1][c1];
1697
+ if (!d[r1]) d[r1] = [];
1698
+ d[r1][c1] = prev != null ? __assign({}, prev) : {};
1699
+ }
1700
+ } else {
1682
1701
  for (var c = c1; c <= c2; c += 1) {
1683
- var previousCell = d[r - 1][c];
1684
- d[r][c] = __assign({}, previousCell);
1702
+ var sourceCell = (_a = d[r1]) === null || _a === void 0 ? void 0 : _a[c];
1703
+ for (var r = r1 + 1; r <= r2; r += 1) {
1704
+ if (!d[r]) d[r] = [];
1705
+ d[r][c] = sourceCell != null ? __assign({}, sourceCell) : (_b = d[r][c]) !== null && _b !== void 0 ? _b : {};
1706
+ }
1685
1707
  }
1686
1708
  }
1687
1709
  }
package/lib/api/sheet.js CHANGED
@@ -227,23 +227,22 @@ function calculateSheetFromula(ctx, id) {
227
227
  }
228
228
  }
229
229
  function calculateReferencedCellSheetFromula(ctx, id, refCell) {
230
- var _a, _b, _c, _d, _e, _f;
230
+ var _a, _b, _c, _d, _e;
231
231
  var index = (0, _utils.getSheetIndex)(ctx, id);
232
232
  if (!ctx.luckysheetfile[index].data) return;
233
233
  var _loop_1 = function _loop_1(r) {
234
234
  var _loop_2 = function _loop_2(c) {
235
- console.log(refCell, (_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f);
236
235
  var isRef = false;
237
- if (refCell && ((_b = ctx.luckysheetfile[index].data[r][c]) === null || _b === void 0 ? void 0 : _b.f) && !((_c = ctx.luckysheetfile[index].data[r][c]) === null || _c === void 0 ? void 0 : _c.isDataBlockFormula)) {
236
+ if (refCell && ((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f) && !((_b = ctx.luckysheetfile[index].data[r][c]) === null || _b === void 0 ? void 0 : _b.isDataBlockFormula)) {
238
237
  isRef = refCell.some(function (cell) {
239
238
  var _a;
240
239
  return isCellReferenced((_a = ctx.luckysheetfile[index].data[r][c]) === null || _a === void 0 ? void 0 : _a.f, cell);
241
240
  });
242
241
  }
243
- if (!isRef || !((_d = ctx.luckysheetfile[index].data[r][c]) === null || _d === void 0 ? void 0 : _d.f) || ((_e = ctx.luckysheetfile[index].data[r][c]) === null || _e === void 0 ? void 0 : _e.isDataBlockFormula)) {
242
+ if (!isRef || !((_c = ctx.luckysheetfile[index].data[r][c]) === null || _c === void 0 ? void 0 : _c.f) || ((_d = ctx.luckysheetfile[index].data[r][c]) === null || _d === void 0 ? void 0 : _d.isDataBlockFormula)) {
244
243
  return "continue";
245
244
  }
246
- var result = (0, _2.execfunction)(ctx, (_f = ctx.luckysheetfile[index].data[r][c]) === null || _f === void 0 ? void 0 : _f.f, r, c, id);
245
+ var result = (0, _2.execfunction)(ctx, (_e = ctx.luckysheetfile[index].data[r][c]) === null || _e === void 0 ? void 0 : _e.f, r, c, id);
247
246
  var isValueArray = Array.isArray(result[1]);
248
247
  if (isValueArray) {
249
248
  var value = {
@@ -149,7 +149,7 @@ function handleGlobalEnter(ctx, cellInput, e, canvas) {
149
149
  row_focus: lastCellUpdate[0],
150
150
  column_focus: lastCellUpdate[1]
151
151
  }];
152
- (0, _selection.moveHighlightCell)(ctx, "down", 1, "rangeOfSelect");
152
+ (0, _selection.moveHighlightCell)(ctx, "down", (0, _2.hideCRCount)(ctx, "ArrowDown"), "rangeOfSelect");
153
153
  e.preventDefault();
154
154
  } else {
155
155
  if (((_c = (_b = ctx.luckysheet_select_save) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0) > 0) {
@@ -444,9 +444,9 @@ function handleGlobalKeyDown(ctx, cellInput, fxInput, e, cache, handleUndo, hand
444
444
  (0, _cell.updateCell)(ctx, ctx.luckysheetCellUpdate[0], ctx.luckysheetCellUpdate[1], cellInput, undefined, canvas);
445
445
  }
446
446
  if (e.shiftKey) {
447
- (0, _selection.moveHighlightCell)(ctx, "right", -1, "rangeOfSelect");
447
+ (0, _selection.moveHighlightCell)(ctx, "right", -(0, _2.hideCRCount)(ctx, "ArrowLeft"), "rangeOfSelect");
448
448
  } else {
449
- (0, _selection.moveHighlightCell)(ctx, "right", 1, "rangeOfSelect");
449
+ (0, _selection.moveHighlightCell)(ctx, "right", (0, _2.hideCRCount)(ctx, "ArrowRight"), "rangeOfSelect");
450
450
  }
451
451
  e.preventDefault();
452
452
  } else if (kstr === "F2") {
@@ -6,3 +6,4 @@ export declare function getSelectionCharacterOffsets(element: Node): {
6
6
  end: number;
7
7
  } | null;
8
8
  export declare function setSelectionByCharacterOffset(element: HTMLDivElement, start: number, end: number): void;
9
+ export declare function getRangeRectsByCharacterOffset(element: HTMLDivElement, start: number, end: number): DOMRect[];
@@ -3,6 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.getRangeRectsByCharacterOffset = getRangeRectsByCharacterOffset;
6
7
  exports.getSelectionCharacterOffsets = getSelectionCharacterOffsets;
7
8
  exports.moveToEnd = moveToEnd;
8
9
  exports.selectTextContent = selectTextContent;
@@ -124,4 +125,39 @@ function setSelectionByCharacterOffset(element, start, end) {
124
125
  sel.removeAllRanges();
125
126
  sel.addRange(range);
126
127
  }
128
+ }
129
+ function getRangeRectsByCharacterOffset(element, start, end) {
130
+ if (start >= end) return [];
131
+ var charIndex = 0;
132
+ var startNode = null;
133
+ var startOffset = 0;
134
+ var endNode = null;
135
+ var endOffset = 0;
136
+ function walk(node) {
137
+ if (node.nodeType === Node.TEXT_NODE) {
138
+ var len = (node.textContent || "").length;
139
+ if (startNode == null && charIndex + len > start) {
140
+ startNode = node;
141
+ startOffset = start - charIndex;
142
+ }
143
+ if (endNode == null && charIndex + len >= end) {
144
+ endNode = node;
145
+ endOffset = end - charIndex;
146
+ return true;
147
+ }
148
+ charIndex += len;
149
+ return false;
150
+ }
151
+ for (var i = 0; i < node.childNodes.length; i += 1) {
152
+ if (walk(node.childNodes[i])) return true;
153
+ }
154
+ return false;
155
+ }
156
+ walk(element);
157
+ if (!startNode || !endNode) return [];
158
+ var range = document.createRange();
159
+ range.setStart(startNode, startOffset);
160
+ range.setEnd(endNode, endOffset);
161
+ var rects = range.getClientRects();
162
+ return Array.from(rects);
127
163
  }
@@ -1648,6 +1648,7 @@ function deleteSelectedCellFormat(ctx) {
1648
1648
  return "success";
1649
1649
  }
1650
1650
  function fillRightData(ctx) {
1651
+ var _a, _b;
1651
1652
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
1652
1653
  if (allowEdit === false) {
1653
1654
  return "allowEdit";
@@ -1675,10 +1676,20 @@ function fillRightData(ctx) {
1675
1676
  var r2 = selection[s].row[1];
1676
1677
  var c1 = selection[s].column[0];
1677
1678
  var c2 = selection[s].column[1];
1678
- for (var r = r1; r <= r2; r += 1) {
1679
- for (var c = c1; c <= c2; c += 1) {
1680
- var previousCell = d[r][c - 1];
1681
- d[r][c] = __assign({}, previousCell);
1679
+ var isSingleCell = r1 === r2 && c1 === c2;
1680
+ if (isSingleCell) {
1681
+ if (c1 - 1 >= 0 && d[r1]) {
1682
+ var prev = d[r1][c1 - 1];
1683
+ d[r1][c1] = prev != null ? __assign({}, prev) : {};
1684
+ }
1685
+ } else {
1686
+ for (var r = r1; r <= r2; r += 1) {
1687
+ var sourceCell = (_a = d[r]) === null || _a === void 0 ? void 0 : _a[c1];
1688
+ for (var c = c1 + 1; c <= c2; c += 1) {
1689
+ if (d[r]) {
1690
+ d[r][c] = sourceCell != null ? __assign({}, sourceCell) : (_b = d[r][c]) !== null && _b !== void 0 ? _b : {};
1691
+ }
1692
+ }
1682
1693
  }
1683
1694
  }
1684
1695
  }
@@ -1686,6 +1697,7 @@ function fillRightData(ctx) {
1686
1697
  return "success";
1687
1698
  }
1688
1699
  function fillDownData(ctx) {
1700
+ var _a, _b;
1689
1701
  var allowEdit = (0, _utils.isAllowEdit)(ctx);
1690
1702
  if (allowEdit === false) {
1691
1703
  return "allowEdit";
@@ -1713,10 +1725,20 @@ function fillDownData(ctx) {
1713
1725
  var r2 = selection[s].row[1];
1714
1726
  var c1 = selection[s].column[0];
1715
1727
  var c2 = selection[s].column[1];
1716
- for (var r = r1; r <= r2; r += 1) {
1728
+ var isSingleCell = r1 === r2 && c1 === c2;
1729
+ if (isSingleCell) {
1730
+ if (r1 - 1 >= 0 && d[r1 - 1]) {
1731
+ var prev = d[r1 - 1][c1];
1732
+ if (!d[r1]) d[r1] = [];
1733
+ d[r1][c1] = prev != null ? __assign({}, prev) : {};
1734
+ }
1735
+ } else {
1717
1736
  for (var c = c1; c <= c2; c += 1) {
1718
- var previousCell = d[r - 1][c];
1719
- d[r][c] = __assign({}, previousCell);
1737
+ var sourceCell = (_a = d[r1]) === null || _a === void 0 ? void 0 : _a[c];
1738
+ for (var r = r1 + 1; r <= r2; r += 1) {
1739
+ if (!d[r]) d[r] = [];
1740
+ d[r][c] = sourceCell != null ? __assign({}, sourceCell) : (_b = d[r][c]) !== null && _b !== void 0 ? _b : {};
1741
+ }
1720
1742
  }
1721
1743
  }
1722
1744
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fileverse-dev/fortune-core",
3
- "version": "1.3.5-hyper",
3
+ "version": "1.3.5-hyper-2",
4
4
  "main": "lib/index.js",
5
5
  "module": "es/index.js",
6
6
  "typings": "lib/index.d.ts",