@leankylin-sheet/core 6.0.3 → 7.0.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.
@@ -28,5 +28,5 @@ export declare function registerExecFunctionExist(ctx: Context, sheet: {
28
28
  c: number;
29
29
  }>): void;
30
30
  export declare function setCellValuesByRange(ctx: Context, data: any[][], range: SingleRange, cellInput: HTMLDivElement | null, options?: CommonOptions, setMerge?: boolean): void;
31
- export declare function setCellValues(ctx: Context, data: any[], cellInput: HTMLDivElement | null): void;
31
+ export declare function setCellValues(ctx: Context, data: any[], cellInput: HTMLDivElement | null, skipCalcDev?: boolean): void;
32
32
  export declare function setCellFormatByRange(ctx: Context, attr: keyof Cell, value: any, range: Range | SingleRange, options?: CommonOptions): void;
package/dist/index.esm.js CHANGED
@@ -35581,6 +35581,7 @@ var FormulaCache = /*#__PURE__*/function () {
35581
35581
  this.functionlistMap = void 0;
35582
35582
  this.execFunctionExist = void 0;
35583
35583
  this.execFunctionGlobalData = void 0;
35584
+ this._lastDataRowCache = null;
35584
35585
  var that = this;
35585
35586
  this.data_parm_index = 0;
35586
35587
  this.selectingRangeIndex = -1;
@@ -35614,8 +35615,13 @@ var FormulaCache = /*#__PURE__*/function () {
35614
35615
  startRow = 0;
35615
35616
  }
35616
35617
  if (endRow === -1) {
35617
- var _flowdata$length;
35618
- endRow = (_flowdata$length = flowdata === null || flowdata === void 0 ? void 0 : flowdata.length) !== null && _flowdata$length !== void 0 ? _flowdata$length : 0;
35618
+ var sheetCache = that._lastDataRowCache;
35619
+ if (sheetCache && sheetCache[id] !== undefined) {
35620
+ endRow = sheetCache[id];
35621
+ } else {
35622
+ var _flowdata$length;
35623
+ endRow = (_flowdata$length = flowdata === null || flowdata === void 0 ? void 0 : flowdata.length) !== null && _flowdata$length !== void 0 ? _flowdata$length : 0;
35624
+ }
35619
35625
  }
35620
35626
  if (startCol === -1) {
35621
35627
  startCol = 0;
@@ -35754,6 +35760,7 @@ function getcellrange(ctx, txt, formulaId) {
35754
35760
  return true;
35755
35761
  });
35756
35762
  } else {
35763
+ var _ctx$active_f;
35757
35764
  var _i = formulaId;
35758
35765
  if (_.isNil(_i)) {
35759
35766
  _i = ctx.currentSheetId;
@@ -35766,7 +35773,7 @@ function getcellrange(ctx, txt, formulaId) {
35766
35773
  return null;
35767
35774
  }
35768
35775
  sheettxt = luckysheetfile[index].name;
35769
- sheetId = luckysheetfile[index].id;
35776
+ sheetId = ((_ctx$active_f = ctx.active_f) === null || _ctx$active_f === void 0 ? void 0 : _ctx$active_f.sheetId) || luckysheetfile[index].id;
35770
35777
  sheetdata = flowdata;
35771
35778
  rangetxt = txt;
35772
35779
  }
@@ -36594,17 +36601,31 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36594
36601
  }
36595
36602
  formulaRunList.reverse();
36596
36603
  console.timeEnd('execFunctionGroup-before');
36604
+ var lastDataRowSheets = Object.create(null);
36605
+ for (var _i14 = 0; _i14 < formulaRunList.length; _i14++) {
36606
+ var sheetId = formulaRunList[_i14].id;
36607
+ if (lastDataRowSheets[sheetId] !== undefined) continue;
36608
+ var fd = getFlowdata(ctx, sheetId);
36609
+ var lastDataRow = 0;
36610
+ if (fd) {
36611
+ for (var r = fd.length - 1; r >= 0; r--) {
36612
+ if (fd[r] && fd[r].join('')) {
36613
+ lastDataRow = r;
36614
+ break;
36615
+ }
36616
+ }
36617
+ }
36618
+ lastDataRowSheets[sheetId] = lastDataRow;
36619
+ }
36620
+ ctx.formulaCache._lastDataRowCache = lastDataRowSheets;
36597
36621
  console.time('formulaRunList');
36598
36622
  console.log('formulaRunList', formulaRunList);
36599
- var map = {};
36600
- var ssTime = +new Date();
36601
- for (var _i14 = 0; _i14 < formulaRunList.length; _i14 += 1) {
36602
- var formulaCell = formulaRunList[_i14];
36623
+ for (var _i15 = 0; _i15 < formulaRunList.length; _i15 += 1) {
36624
+ var formulaCell = formulaRunList[_i15];
36603
36625
  if (formulaCell.level === Math.max) {
36604
36626
  continue;
36605
36627
  }
36606
36628
  var calc_funcStr = formulaCell.calc_funcStr;
36607
- var sTime = +new Date();
36608
36629
  var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, false, notInsertFunc);
36609
36630
  ctx.groupValuesRefreshData.push({
36610
36631
  r: formulaCell.r,
@@ -36618,12 +36639,9 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36618
36639
  v: v[1],
36619
36640
  f: v[2]
36620
36641
  };
36621
- var eTime = +new Date();
36622
- map[calc_funcStr] = eTime - sTime;
36623
36642
  }
36624
- var eeTime = +new Date();
36625
- console.log('map', map, eeTime - ssTime);
36626
36643
  console.timeEnd('formulaRunList');
36644
+ ctx.formulaCache._lastDataRowCache = null;
36627
36645
  ctx.formulaCache.execFunctionExist = undefined;
36628
36646
  }
36629
36647
  function findrangeindex(ctx, v, vp) {
@@ -36637,26 +36655,26 @@ function findrangeindex(ctx, v, vp) {
36637
36655
  var vplen = vp_a.length;
36638
36656
  var vlen = v_a.length;
36639
36657
  if (vplen === vlen) {
36640
- var _i15 = pfri[0];
36641
- var p = vp_a[_i15];
36642
- var n = v_a[_i15];
36658
+ var _i16 = pfri[0];
36659
+ var p = vp_a[_i16];
36660
+ var n = v_a[_i16];
36643
36661
  if (_.isNil(p)) {
36644
- if (vp_a.length <= _i15) {
36662
+ if (vp_a.length <= _i16) {
36645
36663
  pfri = [vp_a.length - 1, vp_a.length - 1];
36646
- } else if (v_a.length <= _i15) {
36664
+ } else if (v_a.length <= _i16) {
36647
36665
  pfri = [v_a.length - 1, v_a.length - 1];
36648
36666
  }
36649
36667
  return pfri;
36650
36668
  }
36651
36669
  if (p.length === n.length) {
36652
- if (!_.isNil(vp_a[_i15 + 1]) && !_.isNil(v_a[_i15 + 1]) && vp_a[_i15 + 1].length < v_a[_i15 + 1].length) {
36670
+ if (!_.isNil(vp_a[_i16 + 1]) && !_.isNil(v_a[_i16 + 1]) && vp_a[_i16 + 1].length < v_a[_i16 + 1].length) {
36653
36671
  pfri[0] += 1;
36654
36672
  pfri[1] = 1;
36655
36673
  }
36656
36674
  return pfri;
36657
36675
  }
36658
36676
  if (p.length > n.length) {
36659
- if (!_.isNil(p) && !_.isNil(v_a[_i15 + 1]) && v_a[_i15 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
36677
+ if (!_.isNil(p) && !_.isNil(v_a[_i16 + 1]) && v_a[_i16 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
36660
36678
  pfri[0] += 1;
36661
36679
  pfri[1] = 1;
36662
36680
  }
@@ -36669,34 +36687,34 @@ function findrangeindex(ctx, v, vp) {
36669
36687
  return pfri;
36670
36688
  }
36671
36689
  } else if (vplen > vlen) {
36672
- var _i16 = pfri[0];
36673
- var _p = vp_a[_i16];
36674
- var _n = v_a[_i16];
36690
+ var _i17 = pfri[0];
36691
+ var _p = vp_a[_i17];
36692
+ var _n = v_a[_i17];
36675
36693
  if (_.isNil(_n)) {
36676
- if (v_a[_i16 - 1].indexOf("{") > -1) {
36694
+ if (v_a[_i17 - 1].indexOf("{") > -1) {
36677
36695
  pfri[0] -= 1;
36678
- var start = v_a[_i16 - 1].search("{");
36696
+ var start = v_a[_i17 - 1].search("{");
36679
36697
  pfri[1] += start;
36680
36698
  } else {
36681
36699
  pfri[0] = 0;
36682
36700
  pfri[1] = 0;
36683
36701
  }
36684
36702
  } else if (_p.length === _n.length) {
36685
- if (!_.isNil(v_a[_i16 + 1]) && (v_a[_i16 + 1].substring(0, 1) === '"' || v_a[_i16 + 1].substring(0, 1) === "{" || v_a[_i16 + 1].substring(0, 1) === "}")) {
36703
+ if (!_.isNil(v_a[_i17 + 1]) && (v_a[_i17 + 1].substring(0, 1) === '"' || v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36686
36704
  pfri[0] += 1;
36687
36705
  pfri[1] = 1;
36688
- } else if (!_.isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!_.isNil(v_a[_i16]) && v_a[_i16] === '")') {
36706
+ } else if (!_.isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!_.isNil(v_a[_i17]) && v_a[_i17] === '")') {
36689
36707
  pfri[1] = 1;
36690
- } else if (!_.isNil(v_a[_i16]) && v_a[_i16] === '"}') {
36708
+ } else if (!_.isNil(v_a[_i17]) && v_a[_i17] === '"}') {
36691
36709
  pfri[1] = 1;
36692
- } else if (!_.isNil(v_a[_i16]) && v_a[_i16] === "{)") {
36710
+ } else if (!_.isNil(v_a[_i17]) && v_a[_i17] === "{)") {
36693
36711
  pfri[1] = 1;
36694
36712
  } else {
36695
36713
  pfri[1] = _n.length;
36696
36714
  }
36697
36715
  return pfri;
36698
36716
  } else if (_p.length > _n.length) {
36699
- if (!_.isNil(v_a[_i16 + 1]) && (v_a[_i16 + 1].substring(0, 1) === '"' || v_a[_i16 + 1].substring(0, 1) === "{" || v_a[_i16 + 1].substring(0, 1) === "}")) {
36717
+ if (!_.isNil(v_a[_i17 + 1]) && (v_a[_i17 + 1].substring(0, 1) === '"' || v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36700
36718
  pfri[0] += 1;
36701
36719
  pfri[1] = 1;
36702
36720
  }
@@ -36706,17 +36724,17 @@ function findrangeindex(ctx, v, vp) {
36706
36724
  }
36707
36725
  return pfri;
36708
36726
  } else if (vplen < vlen) {
36709
- var _i17 = pfri[0];
36710
- var _p2 = vp_a[_i17];
36711
- var _n2 = v_a[_i17];
36727
+ var _i18 = pfri[0];
36728
+ var _p2 = vp_a[_i18];
36729
+ var _n2 = v_a[_i18];
36712
36730
  if (_.isNil(_p2)) {
36713
36731
  pfri[0] = v_a.length - 1;
36714
36732
  var last = v_a[pfri[0]];
36715
36733
  pfri[1] = _.isNil(last) ? 1 : last.length;
36716
36734
  } else if (_p2.length === _n2.length) {
36717
- if (vp_a[_i17 + 1] != null && (vp_a[_i17 + 1].substring(0, 1) === '"' || vp_a[_i17 + 1].substring(0, 1) === "{" || vp_a[_i17 + 1].substring(0, 1) === "}")) {
36735
+ if (vp_a[_i18 + 1] != null && (vp_a[_i18 + 1].substring(0, 1) === '"' || vp_a[_i18 + 1].substring(0, 1) === "{" || vp_a[_i18 + 1].substring(0, 1) === "}")) {
36718
36736
  pfri[1] = _n2.length;
36719
- } else if (!_.isNil(v_a[_i17 + 1]) && v_a[_i17 + 1].substring(0, 1) === '"' && (v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36737
+ } else if (!_.isNil(v_a[_i18 + 1]) && v_a[_i18 + 1].substring(0, 1) === '"' && (v_a[_i18 + 1].substring(0, 1) === "{" || v_a[_i18 + 1].substring(0, 1) === "}")) {
36720
36738
  pfri[0] += 1;
36721
36739
  pfri[1] = 1;
36722
36740
  } else if (!_.isNil(_n2) && _n2.substring(0, 1) === '"' && _n2.substring(_n2.length - 1, 1) === '"' && _p2.substring(0, 1) === '"' && _p2.substring(_p2.length - 1, 1) === ")") {
@@ -36726,7 +36744,7 @@ function findrangeindex(ctx, v, vp) {
36726
36744
  } else {
36727
36745
  pfri[0] = pfri[0] + vlen - vplen;
36728
36746
  if (v_a.length > vp_a.length) {
36729
- pfri[1] = v_a[_i17 + 1].length;
36747
+ pfri[1] = v_a[_i18 + 1].length;
36730
36748
  } else {
36731
36749
  pfri[1] = 1;
36732
36750
  }
@@ -36735,17 +36753,17 @@ function findrangeindex(ctx, v, vp) {
36735
36753
  } else if (_p2.length > _n2.length) {
36736
36754
  if (!_.isNil(_p2) && _p2.substring(0, 1) === '"') {
36737
36755
  pfri[1] = _n2.length;
36738
- } else if (_.isNil(v_a[_i17 + 1]) && /{.*?}/.test(v_a[_i17 + 1])) {
36756
+ } else if (_.isNil(v_a[_i18 + 1]) && /{.*?}/.test(v_a[_i18 + 1])) {
36739
36757
  pfri[0] += 1;
36740
- pfri[1] = v_a[_i17 + 1].length;
36741
- } else if (!_.isNil(_p2) && v_a[_i17 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
36758
+ pfri[1] = v_a[_i18 + 1].length;
36759
+ } else if (!_.isNil(_p2) && v_a[_i18 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
36742
36760
  pfri[0] += 1;
36743
36761
  pfri[1] = 1;
36744
36762
  } else if (!_.isNil(_p2) && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) ; else if (!_.isNil(_p2) && !_.startsWith(_p2[0], "=") && _.startsWith(_n2, "=")) {
36745
36763
  return [vlen - 1, v_a[vlen - 1].length];
36746
36764
  } else {
36747
36765
  pfri[0] = pfri[0] + vlen - vplen - 1;
36748
- pfri[1] = v_a[(_i17 || 1) - 1].length;
36766
+ pfri[1] = v_a[(_i18 || 1) - 1].length;
36749
36767
  }
36750
36768
  return pfri;
36751
36769
  } else if (_p2.length < _n2.length) {
@@ -36792,9 +36810,9 @@ function locateTextOffset(node, offset) {
36792
36810
  text = walker.nextNode();
36793
36811
  }
36794
36812
  var acc = 0;
36795
- for (var _i18 = 0; _i18 < texts.length; _i18 += 1) {
36813
+ for (var _i19 = 0; _i19 < texts.length; _i19 += 1) {
36796
36814
  var _item$textContent$len, _item$textContent;
36797
- var item = texts[_i18];
36815
+ var item = texts[_i19];
36798
36816
  var len = (_item$textContent$len = (_item$textContent = item.textContent) === null || _item$textContent === void 0 ? void 0 : _item$textContent.length) !== null && _item$textContent$len !== void 0 ? _item$textContent$len : 0;
36799
36817
  if (offset <= acc + len) {
36800
36818
  return [item, Math.max(0, offset - acc)];
@@ -36880,8 +36898,8 @@ function searchFunction(ctx, searchtxt) {
36880
36898
  var f = [];
36881
36899
  var s = [];
36882
36900
  var t = [];
36883
- for (var _i19 = 0; _i19 < functionlist.length; _i19 += 1) {
36884
- var item = functionlist[_i19];
36901
+ for (var _i20 = 0; _i20 < functionlist.length; _i20 += 1) {
36902
+ var item = functionlist[_i20];
36885
36903
  var n = item.n;
36886
36904
  if (n === searchtxt) {
36887
36905
  f.unshift(item);
@@ -36937,8 +36955,8 @@ function helpFunctionExe($editer, currSelection, ctx) {
36937
36955
  var _locale2 = locale(ctx),
36938
36956
  functionlist = _locale2.functionlist;
36939
36957
  if (_.isEmpty(ctx.formulaCache.functionlistMap)) {
36940
- for (var _i20 = 0; _i20 < functionlist.length; _i20 += 1) {
36941
- ctx.formulaCache.functionlistMap[functionlist[_i20].n] = functionlist[_i20];
36958
+ for (var _i21 = 0; _i21 < functionlist.length; _i21 += 1) {
36959
+ ctx.formulaCache.functionlistMap[functionlist[_i21].n] = functionlist[_i21];
36942
36960
  }
36943
36961
  }
36944
36962
  if (!currSelection) {
@@ -37571,7 +37589,7 @@ function functionStrChange(txt, type, rc, orient, stindex, step, sheetName, isCu
37571
37589
  return function_str;
37572
37590
  }
37573
37591
  function rangeSetValue(ctx, cellInput, selected, fxInput) {
37574
- var _document$activeEleme, _ctx$active_f;
37592
+ var _document$activeEleme, _ctx$active_f2;
37575
37593
  var $editor = cellInput;
37576
37594
  var $copyTo = fxInput;
37577
37595
  if (((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.id) === "luckysheet-functionbox-cell") {
@@ -37585,7 +37603,7 @@ function rangeSetValue(ctx, cellInput, selected, fxInput) {
37585
37603
  var range = "";
37586
37604
  var rf = selected.row[0];
37587
37605
  var cf = selected.column[0];
37588
- var sheetId = ((_ctx$active_f = ctx.active_f) === null || _ctx$active_f === void 0 ? void 0 : _ctx$active_f.sheetId) || ctx.formulaCache.rangetosheet;
37606
+ var sheetId = ((_ctx$active_f2 = ctx.active_f) === null || _ctx$active_f2 === void 0 ? void 0 : _ctx$active_f2.sheetId) || ctx.formulaCache.rangetosheet;
37589
37607
  if (ctx.config.merge != null && "".concat(rf, "_").concat(cf) in ctx.config.merge) {
37590
37608
  range = getRangetxt(ctx, ctx.currentSheetId, {
37591
37609
  column: [cf, cf],
@@ -47615,6 +47633,9 @@ function setNextSheet(draftCtx, nextSheetId, refs) {
47615
47633
  draftCtx.zoomRatio = sheet.zoomRatio || 1;
47616
47634
  cancelActiveImgItem(draftCtx, refs.globalCache);
47617
47635
  cancelNormalSelected(draftCtx);
47636
+ if (draftCtx.active_f) {
47637
+ createRangeHightlight(draftCtx, refs.cellInput.current.innerHTML);
47638
+ }
47618
47639
  if (isBack) {
47619
47640
  draftCtx.luckysheetCellUpdate = luckysheetCellUpdate;
47620
47641
  draftCtx.active_f = undefined;
@@ -57195,6 +57216,7 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
57195
57216
  }
57196
57217
  function setCellValues(ctx, data, cellInput) {
57197
57218
  var _data$, _data$2;
57219
+ var skipCalcDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
57198
57220
  if (data == null) {
57199
57221
  throw INVALID_PARAMS;
57200
57222
  }
@@ -57217,7 +57239,12 @@ function setCellValues(ctx, data, cellInput) {
57217
57239
  c = _data$j.c,
57218
57240
  v = _data$j.v,
57219
57241
  ops = _data$j.ops;
57220
- setCellValue$1(ctx, r, c, v, cellInput, ops);
57242
+ if (skipCalcDev) {
57243
+ var _sheet = getSheet(ctx, ops || {});
57244
+ setCellValueInBatch(ctx, _sheet, r, c, v, cellInput, []);
57245
+ } else {
57246
+ setCellValue$1(ctx, r, c, v, cellInput, ops);
57247
+ }
57221
57248
  }
57222
57249
  cancelNormalSelected(ctx);
57223
57250
  return;
@@ -57239,7 +57266,7 @@ function setCellValues(ctx, data, cellInput) {
57239
57266
  }
57240
57267
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
57241
57268
  }
57242
- if (formulaCells.length === 0 && changedData.length === 0) {
57269
+ if (skipCalcDev || formulaCells.length === 0 && changedData.length === 0) {
57243
57270
  cancelNormalSelected(ctx);
57244
57271
  return;
57245
57272
  }
package/dist/index.js CHANGED
@@ -35591,6 +35591,7 @@ var FormulaCache = /*#__PURE__*/function () {
35591
35591
  this.functionlistMap = void 0;
35592
35592
  this.execFunctionExist = void 0;
35593
35593
  this.execFunctionGlobalData = void 0;
35594
+ this._lastDataRowCache = null;
35594
35595
  var that = this;
35595
35596
  this.data_parm_index = 0;
35596
35597
  this.selectingRangeIndex = -1;
@@ -35624,8 +35625,13 @@ var FormulaCache = /*#__PURE__*/function () {
35624
35625
  startRow = 0;
35625
35626
  }
35626
35627
  if (endRow === -1) {
35627
- var _flowdata$length;
35628
- endRow = (_flowdata$length = flowdata === null || flowdata === void 0 ? void 0 : flowdata.length) !== null && _flowdata$length !== void 0 ? _flowdata$length : 0;
35628
+ var sheetCache = that._lastDataRowCache;
35629
+ if (sheetCache && sheetCache[id] !== undefined) {
35630
+ endRow = sheetCache[id];
35631
+ } else {
35632
+ var _flowdata$length;
35633
+ endRow = (_flowdata$length = flowdata === null || flowdata === void 0 ? void 0 : flowdata.length) !== null && _flowdata$length !== void 0 ? _flowdata$length : 0;
35634
+ }
35629
35635
  }
35630
35636
  if (startCol === -1) {
35631
35637
  startCol = 0;
@@ -35764,6 +35770,7 @@ function getcellrange(ctx, txt, formulaId) {
35764
35770
  return true;
35765
35771
  });
35766
35772
  } else {
35773
+ var _ctx$active_f;
35767
35774
  var _i = formulaId;
35768
35775
  if (___default['default'].isNil(_i)) {
35769
35776
  _i = ctx.currentSheetId;
@@ -35776,7 +35783,7 @@ function getcellrange(ctx, txt, formulaId) {
35776
35783
  return null;
35777
35784
  }
35778
35785
  sheettxt = luckysheetfile[index].name;
35779
- sheetId = luckysheetfile[index].id;
35786
+ sheetId = ((_ctx$active_f = ctx.active_f) === null || _ctx$active_f === void 0 ? void 0 : _ctx$active_f.sheetId) || luckysheetfile[index].id;
35780
35787
  sheetdata = flowdata;
35781
35788
  rangetxt = txt;
35782
35789
  }
@@ -36604,17 +36611,31 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36604
36611
  }
36605
36612
  formulaRunList.reverse();
36606
36613
  console.timeEnd('execFunctionGroup-before');
36614
+ var lastDataRowSheets = Object.create(null);
36615
+ for (var _i14 = 0; _i14 < formulaRunList.length; _i14++) {
36616
+ var sheetId = formulaRunList[_i14].id;
36617
+ if (lastDataRowSheets[sheetId] !== undefined) continue;
36618
+ var fd = getFlowdata(ctx, sheetId);
36619
+ var lastDataRow = 0;
36620
+ if (fd) {
36621
+ for (var r = fd.length - 1; r >= 0; r--) {
36622
+ if (fd[r] && fd[r].join('')) {
36623
+ lastDataRow = r;
36624
+ break;
36625
+ }
36626
+ }
36627
+ }
36628
+ lastDataRowSheets[sheetId] = lastDataRow;
36629
+ }
36630
+ ctx.formulaCache._lastDataRowCache = lastDataRowSheets;
36607
36631
  console.time('formulaRunList');
36608
36632
  console.log('formulaRunList', formulaRunList);
36609
- var map = {};
36610
- var ssTime = +new Date();
36611
- for (var _i14 = 0; _i14 < formulaRunList.length; _i14 += 1) {
36612
- var formulaCell = formulaRunList[_i14];
36633
+ for (var _i15 = 0; _i15 < formulaRunList.length; _i15 += 1) {
36634
+ var formulaCell = formulaRunList[_i15];
36613
36635
  if (formulaCell.level === Math.max) {
36614
36636
  continue;
36615
36637
  }
36616
36638
  var calc_funcStr = formulaCell.calc_funcStr;
36617
- var sTime = +new Date();
36618
36639
  var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, false, notInsertFunc);
36619
36640
  ctx.groupValuesRefreshData.push({
36620
36641
  r: formulaCell.r,
@@ -36628,12 +36649,9 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36628
36649
  v: v[1],
36629
36650
  f: v[2]
36630
36651
  };
36631
- var eTime = +new Date();
36632
- map[calc_funcStr] = eTime - sTime;
36633
36652
  }
36634
- var eeTime = +new Date();
36635
- console.log('map', map, eeTime - ssTime);
36636
36653
  console.timeEnd('formulaRunList');
36654
+ ctx.formulaCache._lastDataRowCache = null;
36637
36655
  ctx.formulaCache.execFunctionExist = undefined;
36638
36656
  }
36639
36657
  function findrangeindex(ctx, v, vp) {
@@ -36647,26 +36665,26 @@ function findrangeindex(ctx, v, vp) {
36647
36665
  var vplen = vp_a.length;
36648
36666
  var vlen = v_a.length;
36649
36667
  if (vplen === vlen) {
36650
- var _i15 = pfri[0];
36651
- var p = vp_a[_i15];
36652
- var n = v_a[_i15];
36668
+ var _i16 = pfri[0];
36669
+ var p = vp_a[_i16];
36670
+ var n = v_a[_i16];
36653
36671
  if (___default['default'].isNil(p)) {
36654
- if (vp_a.length <= _i15) {
36672
+ if (vp_a.length <= _i16) {
36655
36673
  pfri = [vp_a.length - 1, vp_a.length - 1];
36656
- } else if (v_a.length <= _i15) {
36674
+ } else if (v_a.length <= _i16) {
36657
36675
  pfri = [v_a.length - 1, v_a.length - 1];
36658
36676
  }
36659
36677
  return pfri;
36660
36678
  }
36661
36679
  if (p.length === n.length) {
36662
- if (!___default['default'].isNil(vp_a[_i15 + 1]) && !___default['default'].isNil(v_a[_i15 + 1]) && vp_a[_i15 + 1].length < v_a[_i15 + 1].length) {
36680
+ if (!___default['default'].isNil(vp_a[_i16 + 1]) && !___default['default'].isNil(v_a[_i16 + 1]) && vp_a[_i16 + 1].length < v_a[_i16 + 1].length) {
36663
36681
  pfri[0] += 1;
36664
36682
  pfri[1] = 1;
36665
36683
  }
36666
36684
  return pfri;
36667
36685
  }
36668
36686
  if (p.length > n.length) {
36669
- if (!___default['default'].isNil(p) && !___default['default'].isNil(v_a[_i15 + 1]) && v_a[_i15 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
36687
+ if (!___default['default'].isNil(p) && !___default['default'].isNil(v_a[_i16 + 1]) && v_a[_i16 + 1].substring(0, 1) === '"' && (p.indexOf("{") > -1 || p.indexOf("}") > -1)) {
36670
36688
  pfri[0] += 1;
36671
36689
  pfri[1] = 1;
36672
36690
  }
@@ -36679,34 +36697,34 @@ function findrangeindex(ctx, v, vp) {
36679
36697
  return pfri;
36680
36698
  }
36681
36699
  } else if (vplen > vlen) {
36682
- var _i16 = pfri[0];
36683
- var _p = vp_a[_i16];
36684
- var _n = v_a[_i16];
36700
+ var _i17 = pfri[0];
36701
+ var _p = vp_a[_i17];
36702
+ var _n = v_a[_i17];
36685
36703
  if (___default['default'].isNil(_n)) {
36686
- if (v_a[_i16 - 1].indexOf("{") > -1) {
36704
+ if (v_a[_i17 - 1].indexOf("{") > -1) {
36687
36705
  pfri[0] -= 1;
36688
- var start = v_a[_i16 - 1].search("{");
36706
+ var start = v_a[_i17 - 1].search("{");
36689
36707
  pfri[1] += start;
36690
36708
  } else {
36691
36709
  pfri[0] = 0;
36692
36710
  pfri[1] = 0;
36693
36711
  }
36694
36712
  } else if (_p.length === _n.length) {
36695
- if (!___default['default'].isNil(v_a[_i16 + 1]) && (v_a[_i16 + 1].substring(0, 1) === '"' || v_a[_i16 + 1].substring(0, 1) === "{" || v_a[_i16 + 1].substring(0, 1) === "}")) {
36713
+ if (!___default['default'].isNil(v_a[_i17 + 1]) && (v_a[_i17 + 1].substring(0, 1) === '"' || v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36696
36714
  pfri[0] += 1;
36697
36715
  pfri[1] = 1;
36698
- } else if (!___default['default'].isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!___default['default'].isNil(v_a[_i16]) && v_a[_i16] === '")') {
36716
+ } else if (!___default['default'].isNil(_p) && _p.length > 2 && _p.substring(0, 1) === '"' && _p.substring(_p.length - 1, 1) === '"') ; else if (!___default['default'].isNil(v_a[_i17]) && v_a[_i17] === '")') {
36699
36717
  pfri[1] = 1;
36700
- } else if (!___default['default'].isNil(v_a[_i16]) && v_a[_i16] === '"}') {
36718
+ } else if (!___default['default'].isNil(v_a[_i17]) && v_a[_i17] === '"}') {
36701
36719
  pfri[1] = 1;
36702
- } else if (!___default['default'].isNil(v_a[_i16]) && v_a[_i16] === "{)") {
36720
+ } else if (!___default['default'].isNil(v_a[_i17]) && v_a[_i17] === "{)") {
36703
36721
  pfri[1] = 1;
36704
36722
  } else {
36705
36723
  pfri[1] = _n.length;
36706
36724
  }
36707
36725
  return pfri;
36708
36726
  } else if (_p.length > _n.length) {
36709
- if (!___default['default'].isNil(v_a[_i16 + 1]) && (v_a[_i16 + 1].substring(0, 1) === '"' || v_a[_i16 + 1].substring(0, 1) === "{" || v_a[_i16 + 1].substring(0, 1) === "}")) {
36727
+ if (!___default['default'].isNil(v_a[_i17 + 1]) && (v_a[_i17 + 1].substring(0, 1) === '"' || v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36710
36728
  pfri[0] += 1;
36711
36729
  pfri[1] = 1;
36712
36730
  }
@@ -36716,17 +36734,17 @@ function findrangeindex(ctx, v, vp) {
36716
36734
  }
36717
36735
  return pfri;
36718
36736
  } else if (vplen < vlen) {
36719
- var _i17 = pfri[0];
36720
- var _p2 = vp_a[_i17];
36721
- var _n2 = v_a[_i17];
36737
+ var _i18 = pfri[0];
36738
+ var _p2 = vp_a[_i18];
36739
+ var _n2 = v_a[_i18];
36722
36740
  if (___default['default'].isNil(_p2)) {
36723
36741
  pfri[0] = v_a.length - 1;
36724
36742
  var last = v_a[pfri[0]];
36725
36743
  pfri[1] = ___default['default'].isNil(last) ? 1 : last.length;
36726
36744
  } else if (_p2.length === _n2.length) {
36727
- if (vp_a[_i17 + 1] != null && (vp_a[_i17 + 1].substring(0, 1) === '"' || vp_a[_i17 + 1].substring(0, 1) === "{" || vp_a[_i17 + 1].substring(0, 1) === "}")) {
36745
+ if (vp_a[_i18 + 1] != null && (vp_a[_i18 + 1].substring(0, 1) === '"' || vp_a[_i18 + 1].substring(0, 1) === "{" || vp_a[_i18 + 1].substring(0, 1) === "}")) {
36728
36746
  pfri[1] = _n2.length;
36729
- } else if (!___default['default'].isNil(v_a[_i17 + 1]) && v_a[_i17 + 1].substring(0, 1) === '"' && (v_a[_i17 + 1].substring(0, 1) === "{" || v_a[_i17 + 1].substring(0, 1) === "}")) {
36747
+ } else if (!___default['default'].isNil(v_a[_i18 + 1]) && v_a[_i18 + 1].substring(0, 1) === '"' && (v_a[_i18 + 1].substring(0, 1) === "{" || v_a[_i18 + 1].substring(0, 1) === "}")) {
36730
36748
  pfri[0] += 1;
36731
36749
  pfri[1] = 1;
36732
36750
  } else if (!___default['default'].isNil(_n2) && _n2.substring(0, 1) === '"' && _n2.substring(_n2.length - 1, 1) === '"' && _p2.substring(0, 1) === '"' && _p2.substring(_p2.length - 1, 1) === ")") {
@@ -36736,7 +36754,7 @@ function findrangeindex(ctx, v, vp) {
36736
36754
  } else {
36737
36755
  pfri[0] = pfri[0] + vlen - vplen;
36738
36756
  if (v_a.length > vp_a.length) {
36739
- pfri[1] = v_a[_i17 + 1].length;
36757
+ pfri[1] = v_a[_i18 + 1].length;
36740
36758
  } else {
36741
36759
  pfri[1] = 1;
36742
36760
  }
@@ -36745,17 +36763,17 @@ function findrangeindex(ctx, v, vp) {
36745
36763
  } else if (_p2.length > _n2.length) {
36746
36764
  if (!___default['default'].isNil(_p2) && _p2.substring(0, 1) === '"') {
36747
36765
  pfri[1] = _n2.length;
36748
- } else if (___default['default'].isNil(v_a[_i17 + 1]) && /{.*?}/.test(v_a[_i17 + 1])) {
36766
+ } else if (___default['default'].isNil(v_a[_i18 + 1]) && /{.*?}/.test(v_a[_i18 + 1])) {
36749
36767
  pfri[0] += 1;
36750
- pfri[1] = v_a[_i17 + 1].length;
36751
- } else if (!___default['default'].isNil(_p2) && v_a[_i17 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
36768
+ pfri[1] = v_a[_i18 + 1].length;
36769
+ } else if (!___default['default'].isNil(_p2) && v_a[_i18 + 1].substring(0, 1) === '"' && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) {
36752
36770
  pfri[0] += 1;
36753
36771
  pfri[1] = 1;
36754
36772
  } else if (!___default['default'].isNil(_p2) && (_p2.indexOf("{") > -1 || _p2.indexOf("}") > -1)) ; else if (!___default['default'].isNil(_p2) && !___default['default'].startsWith(_p2[0], "=") && ___default['default'].startsWith(_n2, "=")) {
36755
36773
  return [vlen - 1, v_a[vlen - 1].length];
36756
36774
  } else {
36757
36775
  pfri[0] = pfri[0] + vlen - vplen - 1;
36758
- pfri[1] = v_a[(_i17 || 1) - 1].length;
36776
+ pfri[1] = v_a[(_i18 || 1) - 1].length;
36759
36777
  }
36760
36778
  return pfri;
36761
36779
  } else if (_p2.length < _n2.length) {
@@ -36802,9 +36820,9 @@ function locateTextOffset(node, offset) {
36802
36820
  text = walker.nextNode();
36803
36821
  }
36804
36822
  var acc = 0;
36805
- for (var _i18 = 0; _i18 < texts.length; _i18 += 1) {
36823
+ for (var _i19 = 0; _i19 < texts.length; _i19 += 1) {
36806
36824
  var _item$textContent$len, _item$textContent;
36807
- var item = texts[_i18];
36825
+ var item = texts[_i19];
36808
36826
  var len = (_item$textContent$len = (_item$textContent = item.textContent) === null || _item$textContent === void 0 ? void 0 : _item$textContent.length) !== null && _item$textContent$len !== void 0 ? _item$textContent$len : 0;
36809
36827
  if (offset <= acc + len) {
36810
36828
  return [item, Math.max(0, offset - acc)];
@@ -36890,8 +36908,8 @@ function searchFunction(ctx, searchtxt) {
36890
36908
  var f = [];
36891
36909
  var s = [];
36892
36910
  var t = [];
36893
- for (var _i19 = 0; _i19 < functionlist.length; _i19 += 1) {
36894
- var item = functionlist[_i19];
36911
+ for (var _i20 = 0; _i20 < functionlist.length; _i20 += 1) {
36912
+ var item = functionlist[_i20];
36895
36913
  var n = item.n;
36896
36914
  if (n === searchtxt) {
36897
36915
  f.unshift(item);
@@ -36947,8 +36965,8 @@ function helpFunctionExe($editer, currSelection, ctx) {
36947
36965
  var _locale2 = locale(ctx),
36948
36966
  functionlist = _locale2.functionlist;
36949
36967
  if (___default['default'].isEmpty(ctx.formulaCache.functionlistMap)) {
36950
- for (var _i20 = 0; _i20 < functionlist.length; _i20 += 1) {
36951
- ctx.formulaCache.functionlistMap[functionlist[_i20].n] = functionlist[_i20];
36968
+ for (var _i21 = 0; _i21 < functionlist.length; _i21 += 1) {
36969
+ ctx.formulaCache.functionlistMap[functionlist[_i21].n] = functionlist[_i21];
36952
36970
  }
36953
36971
  }
36954
36972
  if (!currSelection) {
@@ -37581,7 +37599,7 @@ function functionStrChange(txt, type, rc, orient, stindex, step, sheetName, isCu
37581
37599
  return function_str;
37582
37600
  }
37583
37601
  function rangeSetValue(ctx, cellInput, selected, fxInput) {
37584
- var _document$activeEleme, _ctx$active_f;
37602
+ var _document$activeEleme, _ctx$active_f2;
37585
37603
  var $editor = cellInput;
37586
37604
  var $copyTo = fxInput;
37587
37605
  if (((_document$activeEleme = document.activeElement) === null || _document$activeEleme === void 0 ? void 0 : _document$activeEleme.id) === "luckysheet-functionbox-cell") {
@@ -37595,7 +37613,7 @@ function rangeSetValue(ctx, cellInput, selected, fxInput) {
37595
37613
  var range = "";
37596
37614
  var rf = selected.row[0];
37597
37615
  var cf = selected.column[0];
37598
- var sheetId = ((_ctx$active_f = ctx.active_f) === null || _ctx$active_f === void 0 ? void 0 : _ctx$active_f.sheetId) || ctx.formulaCache.rangetosheet;
37616
+ var sheetId = ((_ctx$active_f2 = ctx.active_f) === null || _ctx$active_f2 === void 0 ? void 0 : _ctx$active_f2.sheetId) || ctx.formulaCache.rangetosheet;
37599
37617
  if (ctx.config.merge != null && "".concat(rf, "_").concat(cf) in ctx.config.merge) {
37600
37618
  range = getRangetxt(ctx, ctx.currentSheetId, {
37601
37619
  column: [cf, cf],
@@ -47625,6 +47643,9 @@ function setNextSheet(draftCtx, nextSheetId, refs) {
47625
47643
  draftCtx.zoomRatio = sheet.zoomRatio || 1;
47626
47644
  cancelActiveImgItem(draftCtx, refs.globalCache);
47627
47645
  cancelNormalSelected(draftCtx);
47646
+ if (draftCtx.active_f) {
47647
+ createRangeHightlight(draftCtx, refs.cellInput.current.innerHTML);
47648
+ }
47628
47649
  if (isBack) {
47629
47650
  draftCtx.luckysheetCellUpdate = luckysheetCellUpdate;
47630
47651
  draftCtx.active_f = undefined;
@@ -57205,6 +57226,7 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
57205
57226
  }
57206
57227
  function setCellValues(ctx, data, cellInput) {
57207
57228
  var _data$, _data$2;
57229
+ var skipCalcDev = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
57208
57230
  if (data == null) {
57209
57231
  throw INVALID_PARAMS;
57210
57232
  }
@@ -57227,7 +57249,12 @@ function setCellValues(ctx, data, cellInput) {
57227
57249
  c = _data$j.c,
57228
57250
  v = _data$j.v,
57229
57251
  ops = _data$j.ops;
57230
- setCellValue$1(ctx, r, c, v, cellInput, ops);
57252
+ if (skipCalcDev) {
57253
+ var _sheet = getSheet(ctx, ops || {});
57254
+ setCellValueInBatch(ctx, _sheet, r, c, v, cellInput, []);
57255
+ } else {
57256
+ setCellValue$1(ctx, r, c, v, cellInput, ops);
57257
+ }
57231
57258
  }
57232
57259
  cancelNormalSelected(ctx);
57233
57260
  return;
@@ -57249,7 +57276,7 @@ function setCellValues(ctx, data, cellInput) {
57249
57276
  }
57250
57277
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
57251
57278
  }
57252
- if (formulaCells.length === 0 && changedData.length === 0) {
57279
+ if (skipCalcDev || formulaCells.length === 0 && changedData.length === 0) {
57253
57280
  cancelNormalSelected(ctx);
57254
57281
  return;
57255
57282
  }
@@ -24,6 +24,7 @@ export declare class FormulaCache {
24
24
  functionlistMap: any;
25
25
  execFunctionExist?: any[];
26
26
  execFunctionGlobalData: any;
27
+ _lastDataRowCache: Record<string, number> | null;
27
28
  constructor();
28
29
  tryGetCellAsNumber(cell: Cell): string | number | boolean | null;
29
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/core",
3
- "version": "6.0.3",
3
+ "version": "7.0.1",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.esm.js",
6
6
  "typings": "dist/index.d.ts",
@@ -13,7 +13,7 @@
13
13
  "build": "father-build"
14
14
  },
15
15
  "dependencies": {
16
- "@leankylin-sheet/formula-parser": "6.0.3",
16
+ "@leankylin-sheet/formula-parser": "7.0.1",
17
17
  "dayjs": "^1.11.0",
18
18
  "immer": "^9.0.12",
19
19
  "lodash": "^4.17.21",