@leankylin-sheet/core 5.2.46 → 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
@@ -56197,6 +56197,7 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56197
56197
  data[row][column] = {};
56198
56198
  }
56199
56199
  var cell = data[row][column];
56200
+ var oldF = cell.f;
56200
56201
  if (value.f != null && value.v == null) {
56201
56202
  curv.f = value.f;
56202
56203
  if (value.ct != null) {
@@ -56204,19 +56205,20 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56204
56205
  }
56205
56206
  Object.assign(cell, curv);
56206
56207
  if (_.isString(value.f)) {
56207
- formulaCells.push({
56208
- r: row,
56209
- c: column,
56210
- f: value.f,
56211
- ct: value.ct
56212
- });
56208
+ if (value.f !== oldF) {
56209
+ formulaCells.push({
56210
+ r: row,
56211
+ c: column,
56212
+ f: value.f,
56213
+ ct: value.ct
56214
+ });
56215
+ }
56213
56216
  } else {
56214
56217
  updateCell(ctx, row, column, cellInput, curv);
56215
56218
  }
56216
56219
  } else {
56217
56220
  var needupdateFdev = false;
56218
56221
  var needUpdateM = false;
56219
- var oldF = cell.f;
56220
56222
  var nf = value.f;
56221
56223
  var oldV = cell.v;
56222
56224
  var nv = value.v;
@@ -56319,12 +56321,15 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56319
56321
  data[row][column] = {};
56320
56322
  }
56321
56323
  var _cell = data[row][column];
56324
+ var _oldF = _cell.f;
56322
56325
  _cell.f = text;
56323
- formulaCells.push({
56324
- r: row,
56325
- c: column,
56326
- f: text
56327
- });
56326
+ if (_oldF !== text) {
56327
+ formulaCells.push({
56328
+ r: row,
56329
+ c: column,
56330
+ f: text
56331
+ });
56332
+ }
56328
56333
  } else if (text.substr(0, 5) === "<span") {
56329
56334
  updateCell(ctx, row, column, cellInput, value);
56330
56335
  } else {
@@ -56650,6 +56655,54 @@ function setSelection(ctx, range, options) {
56650
56655
  ctx.luckysheet_select_save = sheet.luckysheet_select_save;
56651
56656
  }
56652
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
+ }
56653
56706
  function setCellValuesByRange(ctx, data, range, cellInput) {
56654
56707
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
56655
56708
  var setMerge = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -56722,18 +56775,9 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56722
56775
  sheet.config = cfg;
56723
56776
  }
56724
56777
  if (modifiedCells.length > 0) {
56725
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56726
- return {
56727
- r: fc.r,
56728
- c: fc.c,
56729
- i: sheet.id
56730
- };
56731
- });
56732
- for (var k = 0; k < modifiedCells.length; k += 1) {
56733
- ctx.formulaCache.execFunctionExist.push(modifiedCells[k]);
56734
- }
56735
- for (var _k = 0; _k < formulaCells.length; _k += 1) {
56736
- 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];
56737
56781
  var v = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
56738
56782
  setCellValue(ctx, fc.r, fc.c, flowdata, {
56739
56783
  v: v[1],
@@ -56781,27 +56825,21 @@ function setCellValues(ctx, data, cellInput) {
56781
56825
  throw SHEET_NOT_FOUND;
56782
56826
  }
56783
56827
  var formulaCells = [];
56828
+ var changedData = [];
56784
56829
  for (var _j = 0; _j < data.length; _j += 1) {
56785
56830
  var _data$_j = data[_j],
56786
56831
  _r = _data$_j.r,
56787
56832
  _c = _data$_j.c,
56788
56833
  _v = _data$_j.v;
56834
+ if (!isCellValueUnchanged(sheet, _r, _c, _v)) {
56835
+ changedData.push(data[_j]);
56836
+ }
56789
56837
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
56790
56838
  }
56791
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56792
- return {
56793
- r: fc.r,
56794
- c: fc.c,
56795
- i: sheet.id
56796
- };
56797
- });
56798
- for (var _j2 = 0; _j2 < data.length; _j2 += 1) {
56799
- ctx.formulaCache.execFunctionExist.push({
56800
- r: data[_j2].r,
56801
- c: data[_j2].c,
56802
- i: sheet.id
56803
- });
56839
+ if (formulaCells.length === 0 && changedData.length === 0) {
56840
+ return;
56804
56841
  }
56842
+ registerExecFunctionExist(ctx, sheet, formulaCells, changedData);
56805
56843
  for (var k = 0; k < formulaCells.length; k += 1) {
56806
56844
  var fc = formulaCells[k];
56807
56845
  var val = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
@@ -56940,6 +56978,7 @@ var index = /*#__PURE__*/Object.freeze({
56940
56978
  getCellsByRange: getCellsByRange,
56941
56979
  getHtmlByRange: getHtmlByRange,
56942
56980
  setSelection: setSelection,
56981
+ registerExecFunctionExist: registerExecFunctionExist,
56943
56982
  setCellValuesByRange: setCellValuesByRange,
56944
56983
  setCellValues: setCellValues,
56945
56984
  setCellFormatByRange: setCellFormatByRange,
package/dist/index.js CHANGED
@@ -56207,6 +56207,7 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56207
56207
  data[row][column] = {};
56208
56208
  }
56209
56209
  var cell = data[row][column];
56210
+ var oldF = cell.f;
56210
56211
  if (value.f != null && value.v == null) {
56211
56212
  curv.f = value.f;
56212
56213
  if (value.ct != null) {
@@ -56214,19 +56215,20 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56214
56215
  }
56215
56216
  Object.assign(cell, curv);
56216
56217
  if (___default['default'].isString(value.f)) {
56217
- formulaCells.push({
56218
- r: row,
56219
- c: column,
56220
- f: value.f,
56221
- ct: value.ct
56222
- });
56218
+ if (value.f !== oldF) {
56219
+ formulaCells.push({
56220
+ r: row,
56221
+ c: column,
56222
+ f: value.f,
56223
+ ct: value.ct
56224
+ });
56225
+ }
56223
56226
  } else {
56224
56227
  updateCell(ctx, row, column, cellInput, curv);
56225
56228
  }
56226
56229
  } else {
56227
56230
  var needupdateFdev = false;
56228
56231
  var needUpdateM = false;
56229
- var oldF = cell.f;
56230
56232
  var nf = value.f;
56231
56233
  var oldV = cell.v;
56232
56234
  var nv = value.v;
@@ -56329,12 +56331,15 @@ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaC
56329
56331
  data[row][column] = {};
56330
56332
  }
56331
56333
  var _cell = data[row][column];
56334
+ var _oldF = _cell.f;
56332
56335
  _cell.f = text;
56333
- formulaCells.push({
56334
- r: row,
56335
- c: column,
56336
- f: text
56337
- });
56336
+ if (_oldF !== text) {
56337
+ formulaCells.push({
56338
+ r: row,
56339
+ c: column,
56340
+ f: text
56341
+ });
56342
+ }
56338
56343
  } else if (text.substr(0, 5) === "<span") {
56339
56344
  updateCell(ctx, row, column, cellInput, value);
56340
56345
  } else {
@@ -56660,6 +56665,54 @@ function setSelection(ctx, range, options) {
56660
56665
  ctx.luckysheet_select_save = sheet.luckysheet_select_save;
56661
56666
  }
56662
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
+ }
56663
56716
  function setCellValuesByRange(ctx, data, range, cellInput) {
56664
56717
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
56665
56718
  var setMerge = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
@@ -56732,18 +56785,9 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56732
56785
  sheet.config = cfg;
56733
56786
  }
56734
56787
  if (modifiedCells.length > 0) {
56735
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56736
- return {
56737
- r: fc.r,
56738
- c: fc.c,
56739
- i: sheet.id
56740
- };
56741
- });
56742
- for (var k = 0; k < modifiedCells.length; k += 1) {
56743
- ctx.formulaCache.execFunctionExist.push(modifiedCells[k]);
56744
- }
56745
- for (var _k = 0; _k < formulaCells.length; _k += 1) {
56746
- 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];
56747
56791
  var v = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
56748
56792
  setCellValue(ctx, fc.r, fc.c, flowdata, {
56749
56793
  v: v[1],
@@ -56791,27 +56835,21 @@ function setCellValues(ctx, data, cellInput) {
56791
56835
  throw SHEET_NOT_FOUND;
56792
56836
  }
56793
56837
  var formulaCells = [];
56838
+ var changedData = [];
56794
56839
  for (var _j = 0; _j < data.length; _j += 1) {
56795
56840
  var _data$_j = data[_j],
56796
56841
  _r = _data$_j.r,
56797
56842
  _c = _data$_j.c,
56798
56843
  _v = _data$_j.v;
56844
+ if (!isCellValueUnchanged(sheet, _r, _c, _v)) {
56845
+ changedData.push(data[_j]);
56846
+ }
56799
56847
  setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
56800
56848
  }
56801
- ctx.formulaCache.execFunctionExist = formulaCells.map(function (fc) {
56802
- return {
56803
- r: fc.r,
56804
- c: fc.c,
56805
- i: sheet.id
56806
- };
56807
- });
56808
- for (var _j2 = 0; _j2 < data.length; _j2 += 1) {
56809
- ctx.formulaCache.execFunctionExist.push({
56810
- r: data[_j2].r,
56811
- c: data[_j2].c,
56812
- i: sheet.id
56813
- });
56849
+ if (formulaCells.length === 0 && changedData.length === 0) {
56850
+ return;
56814
56851
  }
56852
+ registerExecFunctionExist(ctx, sheet, formulaCells, changedData);
56815
56853
  for (var k = 0; k < formulaCells.length; k += 1) {
56816
56854
  var fc = formulaCells[k];
56817
56855
  var val = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
@@ -56950,6 +56988,7 @@ var index = /*#__PURE__*/Object.freeze({
56950
56988
  getCellsByRange: getCellsByRange,
56951
56989
  getHtmlByRange: getHtmlByRange,
56952
56990
  setSelection: setSelection,
56991
+ registerExecFunctionExist: registerExecFunctionExist,
56953
56992
  setCellValuesByRange: setCellValuesByRange,
56954
56993
  setCellValues: setCellValues,
56955
56994
  setCellFormatByRange: setCellFormatByRange,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@leankylin-sheet/core",
3
- "version": "5.2.46",
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.46",
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",