@leankylin-sheet/core 5.2.45 → 5.2.47

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.
@@ -18,6 +18,15 @@ export declare function getSelectionCoordinates(ctx: Context): string[];
18
18
  export declare function getCellsByRange(ctx: Context, range: Selection, options?: CommonOptions): (Cell | null)[][];
19
19
  export declare function getHtmlByRange(ctx: Context, range: Range, options?: CommonOptions): string | null;
20
20
  export declare function setSelection(ctx: Context, range: Range, options: CommonOptions): void;
21
+ export declare function registerExecFunctionExist(ctx: Context, sheet: {
22
+ id?: string;
23
+ }, formulaCells: Array<{
24
+ r: number;
25
+ c: number;
26
+ }>, modified: Array<{
27
+ r: number;
28
+ c: number;
29
+ }>): void;
21
30
  export declare function setCellValuesByRange(ctx: Context, data: any[][], range: SingleRange, cellInput: HTMLDivElement | null, options?: CommonOptions, setMerge?: boolean): void;
22
31
  export declare function setCellValues(ctx: Context, data: any[], cellInput: HTMLDivElement | null): void;
23
32
  export declare function setCellFormatByRange(ctx: Context, attr: keyof Cell, value: any, range: Range | SingleRange, options?: CommonOptions): void;
package/dist/index.esm.js CHANGED
@@ -42689,7 +42689,6 @@ function deepClear(ctx) {
42689
42689
  }
42690
42690
  }
42691
42691
  }
42692
- updateFunctionGroup(ctx);
42693
42692
  return "success";
42694
42693
  }
42695
42694
  function deleteSelectedCellText(ctx, deep) {
@@ -42746,9 +42745,6 @@ function deleteSelectedCellText(ctx, deep) {
42746
42745
  }
42747
42746
  }
42748
42747
  }
42749
- console.time('deleteSelectedCellText');
42750
- updateFunctionGroup(ctx);
42751
- console.timeEnd('deleteSelectedCellText');
42752
42748
  }
42753
42749
  return "success";
42754
42750
  }
@@ -56201,6 +56197,7 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56201
56197
  data[row][column] = {};
56202
56198
  }
56203
56199
  var cell = data[row][column];
56200
+ var oldF = cell.f;
56204
56201
  if (value.f != null && value.v == null) {
56205
56202
  curv.f = value.f;
56206
56203
  if (value.ct != null) {
@@ -56208,19 +56205,20 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56208
56205
  }
56209
56206
  Object.assign(cell, curv);
56210
56207
  if (_.isString(value.f)) {
56211
- formulaCells.push({
56212
- r: row,
56213
- c: column,
56214
- f: value.f,
56215
- ct: value.ct
56216
- });
56208
+ if (value.f !== oldF) {
56209
+ formulaCells.push({
56210
+ r: row,
56211
+ c: column,
56212
+ f: value.f,
56213
+ ct: value.ct
56214
+ });
56215
+ }
56217
56216
  } else {
56218
56217
  updateCell(ctx, row, column, cellInput, curv);
56219
56218
  }
56220
56219
  } else {
56221
56220
  var needupdateFdev = false;
56222
56221
  var needUpdateM = false;
56223
- var oldF = cell.f;
56224
56222
  var nf = value.f;
56225
56223
  var oldV = cell.v;
56226
56224
  var nv = value.v;
@@ -56323,12 +56321,15 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56323
56321
  data[row][column] = {};
56324
56322
  }
56325
56323
  var _cell = data[row][column];
56324
+ var _oldF = _cell.f;
56326
56325
  _cell.f = text;
56327
- formulaCells.push({
56328
- r: row,
56329
- c: column,
56330
- f: text
56331
- });
56326
+ if (_oldF !== text) {
56327
+ formulaCells.push({
56328
+ r: row,
56329
+ c: column,
56330
+ f: text
56331
+ });
56332
+ }
56332
56333
  } else if (text.substr(0, 5) === "<span") {
56333
56334
  updateCell(ctx, row, column, cellInput, value);
56334
56335
  } else {
@@ -56654,6 +56655,54 @@ function setSelection(ctx, range, options) {
56654
56655
  ctx.luckysheet_select_save = sheet.luckysheet_select_save;
56655
56656
  }
56656
56657
  }
56658
+ function registerExecFunctionExist(ctx, sheet, formulaCells, modified) {
56659
+ var seen = new Set();
56660
+ var exist = [];
56661
+ var pushUnique = function pushUnique(r, c) {
56662
+ var key = "".concat(r, "_").concat(c);
56663
+ if (seen.has(key)) return;
56664
+ seen.add(key);
56665
+ exist.push({
56666
+ r: r,
56667
+ c: c,
56668
+ i: sheet.id
56669
+ });
56670
+ };
56671
+ for (var i = 0; i < formulaCells.length; i += 1) {
56672
+ pushUnique(formulaCells[i].r, formulaCells[i].c);
56673
+ }
56674
+ for (var _i = 0; _i < modified.length; _i += 1) {
56675
+ pushUnique(modified[_i].r, modified[_i].c);
56676
+ }
56677
+ ctx.formulaCache.execFunctionExist = exist;
56678
+ }
56679
+ function isCellValueUnchanged(sheet, r, c, v) {
56680
+ var _sheet$data, _sheet$data$r;
56681
+ if (_typeof(v) === 'object' && !('f' in v) && !('v' in v)) {
56682
+ return true;
56683
+ }
56684
+ var oldCell = (_sheet$data = sheet.data) === null || _sheet$data === void 0 ? void 0 : (_sheet$data$r = _sheet$data[r]) === null || _sheet$data$r === void 0 ? void 0 : _sheet$data$r[c];
56685
+ if (oldCell == null) return false;
56686
+ if (v == null || v.toString().length === 0) return false;
56687
+ var newF;
56688
+ var newV;
56689
+ if (v instanceof Object) {
56690
+ newF = v.f;
56691
+ newV = v.v;
56692
+ } else if (typeof v === "string" && v[0] === "=") {
56693
+ newF = v;
56694
+ } else {
56695
+ newV = v;
56696
+ }
56697
+ var oldF = oldCell.f;
56698
+ if (newF != null || oldF != null) {
56699
+ if (newF !== oldF) return false;
56700
+ if (newV == null) return true;
56701
+ return String(newV) === String(oldCell.v);
56702
+ }
56703
+ if (newV == null) return false;
56704
+ return String(newV) === String(oldCell.v);
56705
+ }
56657
56706
  function setCellValuesByRange(ctx, data, range, cellInput) {
56658
56707
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
56659
56708
  var setMerge = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -56726,18 +56775,9 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56726
56775
  sheet.config = cfg;
56727
56776
  }
56728
56777
  if (modifiedCells.length > 0) {
56729
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56730
- return {
56731
- r: fc.r,
56732
- c: fc.c,
56733
- i: sheet.id
56734
- };
56735
- });
56736
- for (var k = 0; k < modifiedCells.length; k += 1) {
56737
- ctx.formulaCache.execFunctionExist.push(modifiedCells[k]);
56738
- }
56739
- for (var _k = 0; _k < formulaCells.length; _k += 1) {
56740
- var fc = formulaCells[_k];
56778
+ registerExecFunctionExist(ctx, sheet, formulaCells, modifiedCells);
56779
+ for (var k = 0; k < formulaCells.length; k += 1) {
56780
+ var fc = formulaCells[k];
56741
56781
  var v = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
56742
56782
  setCellValue(ctx, fc.r, fc.c, flowdata, {
56743
56783
  v: v[1],
@@ -56785,27 +56825,21 @@ function setCellValues(ctx, data, cellInput) {
56785
56825
  throw SHEET_NOT_FOUND;
56786
56826
  }
56787
56827
  var formulaCells = [];
56828
+ var changedData = [];
56788
56829
  for (var _j = 0; _j < data.length; _j += 1) {
56789
56830
  var _data$_j = data[_j],
56790
56831
  _r = _data$_j.r,
56791
56832
  _c = _data$_j.c,
56792
56833
  _v = _data$_j.v;
56834
+ if (!isCellValueUnchanged(sheet, _r, _c, _v)) {
56835
+ changedData.push(data[_j]);
56836
+ }
56793
56837
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
56794
56838
  }
56795
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56796
- return {
56797
- r: fc.r,
56798
- c: fc.c,
56799
- i: sheet.id
56800
- };
56801
- });
56802
- for (var _j2 = 0; _j2 < data.length; _j2 += 1) {
56803
- ctx.formulaCache.execFunctionExist.push({
56804
- r: data[_j2].r,
56805
- c: data[_j2].c,
56806
- i: sheet.id
56807
- });
56839
+ if (formulaCells.length === 0 && changedData.length === 0) {
56840
+ return;
56808
56841
  }
56842
+ registerExecFunctionExist(ctx, sheet, formulaCells, changedData);
56809
56843
  for (var k = 0; k < formulaCells.length; k += 1) {
56810
56844
  var fc = formulaCells[k];
56811
56845
  var val = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
@@ -56944,6 +56978,7 @@ var index = /*#__PURE__*/Object.freeze({
56944
56978
  getCellsByRange: getCellsByRange,
56945
56979
  getHtmlByRange: getHtmlByRange,
56946
56980
  setSelection: setSelection,
56981
+ registerExecFunctionExist: registerExecFunctionExist,
56947
56982
  setCellValuesByRange: setCellValuesByRange,
56948
56983
  setCellValues: setCellValues,
56949
56984
  setCellFormatByRange: setCellFormatByRange,
package/dist/index.js CHANGED
@@ -42699,7 +42699,6 @@ function deepClear(ctx) {
42699
42699
  }
42700
42700
  }
42701
42701
  }
42702
- updateFunctionGroup(ctx);
42703
42702
  return "success";
42704
42703
  }
42705
42704
  function deleteSelectedCellText(ctx, deep) {
@@ -42756,9 +42755,6 @@ function deleteSelectedCellText(ctx, deep) {
42756
42755
  }
42757
42756
  }
42758
42757
  }
42759
- console.time('deleteSelectedCellText');
42760
- updateFunctionGroup(ctx);
42761
- console.timeEnd('deleteSelectedCellText');
42762
42758
  }
42763
42759
  return "success";
42764
42760
  }
@@ -56211,6 +56207,7 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56211
56207
  data[row][column] = {};
56212
56208
  }
56213
56209
  var cell = data[row][column];
56210
+ var oldF = cell.f;
56214
56211
  if (value.f != null && value.v == null) {
56215
56212
  curv.f = value.f;
56216
56213
  if (value.ct != null) {
@@ -56218,19 +56215,20 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56218
56215
  }
56219
56216
  Object.assign(cell, curv);
56220
56217
  if (___default['default'].isString(value.f)) {
56221
- formulaCells.push({
56222
- r: row,
56223
- c: column,
56224
- f: value.f,
56225
- ct: value.ct
56226
- });
56218
+ if (value.f !== oldF) {
56219
+ formulaCells.push({
56220
+ r: row,
56221
+ c: column,
56222
+ f: value.f,
56223
+ ct: value.ct
56224
+ });
56225
+ }
56227
56226
  } else {
56228
56227
  updateCell(ctx, row, column, cellInput, curv);
56229
56228
  }
56230
56229
  } else {
56231
56230
  var needupdateFdev = false;
56232
56231
  var needUpdateM = false;
56233
- var oldF = cell.f;
56234
56232
  var nf = value.f;
56235
56233
  var oldV = cell.v;
56236
56234
  var nv = value.v;
@@ -56333,12 +56331,15 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56333
56331
  data[row][column] = {};
56334
56332
  }
56335
56333
  var _cell = data[row][column];
56334
+ var _oldF = _cell.f;
56336
56335
  _cell.f = text;
56337
- formulaCells.push({
56338
- r: row,
56339
- c: column,
56340
- f: text
56341
- });
56336
+ if (_oldF !== text) {
56337
+ formulaCells.push({
56338
+ r: row,
56339
+ c: column,
56340
+ f: text
56341
+ });
56342
+ }
56342
56343
  } else if (text.substr(0, 5) === "<span") {
56343
56344
  updateCell(ctx, row, column, cellInput, value);
56344
56345
  } else {
@@ -56664,6 +56665,54 @@ function setSelection(ctx, range, options) {
56664
56665
  ctx.luckysheet_select_save = sheet.luckysheet_select_save;
56665
56666
  }
56666
56667
  }
56668
+ function registerExecFunctionExist(ctx, sheet, formulaCells, modified) {
56669
+ var seen = new Set();
56670
+ var exist = [];
56671
+ var pushUnique = function pushUnique(r, c) {
56672
+ var key = "".concat(r, "_").concat(c);
56673
+ if (seen.has(key)) return;
56674
+ seen.add(key);
56675
+ exist.push({
56676
+ r: r,
56677
+ c: c,
56678
+ i: sheet.id
56679
+ });
56680
+ };
56681
+ for (var i = 0; i < formulaCells.length; i += 1) {
56682
+ pushUnique(formulaCells[i].r, formulaCells[i].c);
56683
+ }
56684
+ for (var _i = 0; _i < modified.length; _i += 1) {
56685
+ pushUnique(modified[_i].r, modified[_i].c);
56686
+ }
56687
+ ctx.formulaCache.execFunctionExist = exist;
56688
+ }
56689
+ function isCellValueUnchanged(sheet, r, c, v) {
56690
+ var _sheet$data, _sheet$data$r;
56691
+ if (_typeof(v) === 'object' && !('f' in v) && !('v' in v)) {
56692
+ return true;
56693
+ }
56694
+ var oldCell = (_sheet$data = sheet.data) === null || _sheet$data === void 0 ? void 0 : (_sheet$data$r = _sheet$data[r]) === null || _sheet$data$r === void 0 ? void 0 : _sheet$data$r[c];
56695
+ if (oldCell == null) return false;
56696
+ if (v == null || v.toString().length === 0) return false;
56697
+ var newF;
56698
+ var newV;
56699
+ if (v instanceof Object) {
56700
+ newF = v.f;
56701
+ newV = v.v;
56702
+ } else if (typeof v === "string" && v[0] === "=") {
56703
+ newF = v;
56704
+ } else {
56705
+ newV = v;
56706
+ }
56707
+ var oldF = oldCell.f;
56708
+ if (newF != null || oldF != null) {
56709
+ if (newF !== oldF) return false;
56710
+ if (newV == null) return true;
56711
+ return String(newV) === String(oldCell.v);
56712
+ }
56713
+ if (newV == null) return false;
56714
+ return String(newV) === String(oldCell.v);
56715
+ }
56667
56716
  function setCellValuesByRange(ctx, data, range, cellInput) {
56668
56717
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
56669
56718
  var setMerge = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -56736,18 +56785,9 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56736
56785
  sheet.config = cfg;
56737
56786
  }
56738
56787
  if (modifiedCells.length > 0) {
56739
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56740
- return {
56741
- r: fc.r,
56742
- c: fc.c,
56743
- i: sheet.id
56744
- };
56745
- });
56746
- for (var k = 0; k < modifiedCells.length; k += 1) {
56747
- ctx.formulaCache.execFunctionExist.push(modifiedCells[k]);
56748
- }
56749
- for (var _k = 0; _k < formulaCells.length; _k += 1) {
56750
- var fc = formulaCells[_k];
56788
+ registerExecFunctionExist(ctx, sheet, formulaCells, modifiedCells);
56789
+ for (var k = 0; k < formulaCells.length; k += 1) {
56790
+ var fc = formulaCells[k];
56751
56791
  var v = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
56752
56792
  setCellValue(ctx, fc.r, fc.c, flowdata, {
56753
56793
  v: v[1],
@@ -56795,27 +56835,21 @@ function setCellValues(ctx, data, cellInput) {
56795
56835
  throw SHEET_NOT_FOUND;
56796
56836
  }
56797
56837
  var formulaCells = [];
56838
+ var changedData = [];
56798
56839
  for (var _j = 0; _j < data.length; _j += 1) {
56799
56840
  var _data$_j = data[_j],
56800
56841
  _r = _data$_j.r,
56801
56842
  _c = _data$_j.c,
56802
56843
  _v = _data$_j.v;
56844
+ if (!isCellValueUnchanged(sheet, _r, _c, _v)) {
56845
+ changedData.push(data[_j]);
56846
+ }
56803
56847
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
56804
56848
  }
56805
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56806
- return {
56807
- r: fc.r,
56808
- c: fc.c,
56809
- i: sheet.id
56810
- };
56811
- });
56812
- for (var _j2 = 0; _j2 < data.length; _j2 += 1) {
56813
- ctx.formulaCache.execFunctionExist.push({
56814
- r: data[_j2].r,
56815
- c: data[_j2].c,
56816
- i: sheet.id
56817
- });
56849
+ if (formulaCells.length === 0 && changedData.length === 0) {
56850
+ return;
56818
56851
  }
56852
+ registerExecFunctionExist(ctx, sheet, formulaCells, changedData);
56819
56853
  for (var k = 0; k < formulaCells.length; k += 1) {
56820
56854
  var fc = formulaCells[k];
56821
56855
  var val = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
@@ -56954,6 +56988,7 @@ var index = /*#__PURE__*/Object.freeze({
56954
56988
  getCellsByRange: getCellsByRange,
56955
56989
  getHtmlByRange: getHtmlByRange,
56956
56990
  setSelection: setSelection,
56991
+ registerExecFunctionExist: registerExecFunctionExist,
56957
56992
  setCellValuesByRange: setCellValuesByRange,
56958
56993
  setCellValues: setCellValues,
56959
56994
  setCellFormatByRange: setCellFormatByRange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/core",
3
- "version": "5.2.45",
3
+ "version": "5.2.47",
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": "5.2.45",
16
+ "@leankylin-sheet/formula-parser": "5.2.47",
17
17
  "dayjs": "^1.11.0",
18
18
  "immer": "^9.0.12",
19
19
  "lodash": "^4.17.21",