@leankylin-sheet/core 5.2.32 → 5.2.34

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.
@@ -5,6 +5,12 @@ export declare function getCellValue(ctx: Context, row: number, column: number,
5
5
  type?: keyof Cell;
6
6
  }): any;
7
7
  export declare function setCellValue(ctx: Context, row: number, column: number, value: any, cellInput: HTMLDivElement | null, options?: CommonOptions): void;
8
+ export declare function setCellValueInBatch(ctx: Context, sheet: any, row: number, column: number, value: any, cellInput: HTMLDivElement | null, formulaCells: Array<{
9
+ r: number;
10
+ c: number;
11
+ f: string;
12
+ ct?: any;
13
+ }>): void;
8
14
  export declare function clearCell(ctx: Context, row: number, column: number, options?: CommonOptions): void;
9
15
  export declare function setCellFormat(ctx: Context, row: number, column: number, attr: keyof Cell, value: any, options?: CommonOptions): void;
10
16
  export declare function autoFillCell(ctx: Context, copyRange: SingleRange, applyRange: SingleRange, direction: "up" | "down" | "left" | "right"): void;
@@ -9,7 +9,8 @@ export declare function hideSheet(ctx: Context, sheetId: string): void;
9
9
  export declare function showSheet(ctx: Context, sheetId: string): void;
10
10
  export declare function copySheet(ctx: Context, sheetId: string, hooks: Hooks): void;
11
11
  export declare function calculateSheetFromula(ctx: Context, id: string, isrefresh: boolean): void;
12
- export declare function updateFunctionGroup(ctx: Context): void;
12
+ export declare function updateFunctionGroupBySheetId(ctx: Context, id: string): void;
13
+ export declare function updateFunctionGroup(ctx: Context, id?: string): void;
13
14
  export declare function calculateSheetByCells(ctx: Context, cells: {
14
15
  r: number;
15
16
  c: number;
package/dist/index.esm.js CHANGED
@@ -36162,7 +36162,7 @@ function execfunction(ctx, txt, r, c, id, isrefresh, notInsertFunc) {
36162
36162
  f: txt
36163
36163
  };else data[r][c].f = txt;
36164
36164
  }
36165
- execFunctionGroup(ctx, r, c, _.isNil(formulaError) ? result : formulaError, id);
36165
+ execFunctionGroup(ctx, r, c, _.isNil(formulaError) ? result : formulaError, id, false, notInsertFunc);
36166
36166
  if (!hadFormulaField && data && data[r] && data[r][c]) {
36167
36167
  delete data[r][c].f;
36168
36168
  }
@@ -36226,6 +36226,8 @@ function groupValuesRefresh(ctx) {
36226
36226
  }
36227
36227
  function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36228
36228
  var isForce = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
36229
+ var notInsertFunc = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : true;
36230
+ console.time('execFunctionGroup-before');
36229
36231
  if (_.isNil(data)) {
36230
36232
  data = getFlowdata(ctx);
36231
36233
  }
@@ -36263,6 +36265,7 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36263
36265
  updateValueOjects[_key] = 1;
36264
36266
  }
36265
36267
  }
36268
+ console.time('arrayMatchCache');
36266
36269
  var arrayMatchCache = {};
36267
36270
  var arrayMatch = function arrayMatch(formulaArray, _formulaObjects, _updateValueOjects, func) {
36268
36271
  for (var a = 0; a < formulaArray.length; a += 1) {
@@ -36295,6 +36298,8 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36295
36298
  }
36296
36299
  }
36297
36300
  };
36301
+ console.timeEnd('arrayMatchCache');
36302
+ console.time('cache1');
36298
36303
  var _loop = function _loop() {
36299
36304
  var formulaCell = calcChains[_i12];
36300
36305
  var key = "r".concat(formulaCell.r, "c").concat(formulaCell.c, "i").concat(formulaCell.id);
@@ -36397,6 +36402,8 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36397
36402
  for (var _i12 = 0; _i12 < calcChains.length; _i12 += 1) {
36398
36403
  if (_loop()) continue;
36399
36404
  }
36405
+ console.timeEnd('cache1');
36406
+ console.time('cache2');
36400
36407
  Object.keys(formulaObjects).forEach(function (key) {
36401
36408
  var formulaObject = formulaObjects[key];
36402
36409
  arrayMatch(formulaObject.formulaArray, formulaObjects, updateValueOjects, function (childKey) {
@@ -36413,6 +36420,8 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36413
36420
  updateValueArray.push(formulaObject);
36414
36421
  }
36415
36422
  });
36423
+ console.timeEnd('cache2');
36424
+ console.time('dev');
36416
36425
  var visited = {};
36417
36426
  var inStack = {};
36418
36427
  var circularNodes = {};
@@ -36475,6 +36484,7 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36475
36484
  }
36476
36485
  });
36477
36486
  }
36487
+ console.timeEnd('dev');
36478
36488
  var formulaRunList = [];
36479
36489
  var stack = updateValueArray;
36480
36490
  var existsFormulaRunList = {};
@@ -36510,13 +36520,16 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36510
36520
  if (_ret === 0) continue;
36511
36521
  }
36512
36522
  formulaRunList.reverse();
36523
+ console.timeEnd('execFunctionGroup-before');
36524
+ console.time('formulaRunList');
36525
+ console.log('formulaRunList', formulaRunList);
36513
36526
  for (var _i14 = 0; _i14 < formulaRunList.length; _i14 += 1) {
36514
36527
  var formulaCell = formulaRunList[_i14];
36515
36528
  if (formulaCell.level === Math.max) {
36516
36529
  continue;
36517
36530
  }
36518
36531
  var calc_funcStr = formulaCell.calc_funcStr;
36519
- var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id);
36532
+ var v = execfunction(ctx, calc_funcStr, formulaCell.r, formulaCell.c, formulaCell.id, false, notInsertFunc);
36520
36533
  ctx.groupValuesRefreshData.push({
36521
36534
  r: formulaCell.r,
36522
36535
  c: formulaCell.c,
@@ -36530,6 +36543,7 @@ function execFunctionGroup(ctx, origin_r, origin_c, value, id, data) {
36530
36543
  f: v[2]
36531
36544
  };
36532
36545
  }
36546
+ console.timeEnd('formulaRunList');
36533
36547
  ctx.formulaCache.execFunctionExist = undefined;
36534
36548
  }
36535
36549
  function findrangeindex(ctx, v, vp) {
@@ -40495,7 +40509,7 @@ function updateCell(ctx, r, c, $input, value, canvas, sheetId) {
40495
40509
  } else {
40496
40510
  var _d$r3;
40497
40511
  delFunctionGroup(ctx, r, c);
40498
- execFunctionGroup(ctx, r, c, value);
40512
+ execFunctionGroup(ctx, r, c, value, undefined, undefined, false, false);
40499
40513
  curv = _.cloneDeep((d === null || d === void 0 ? void 0 : (_d$r3 = d[r]) === null || _d$r3 === void 0 ? void 0 : _d$r3[c]) || {});
40500
40514
  curv.v = value;
40501
40515
  delete curv.f;
@@ -40554,7 +40568,7 @@ function updateCell(ctx, r, c, $input, value, canvas, sheetId) {
40554
40568
  }
40555
40569
  } else {
40556
40570
  delFunctionGroup(ctx, r, c);
40557
- execFunctionGroup(ctx, r, c, value);
40571
+ execFunctionGroup(ctx, r, c, value, undefined, undefined, false, false);
40558
40572
  }
40559
40573
  }
40560
40574
  setCellValue(ctx, r, c, d, value);
@@ -42536,7 +42550,7 @@ function copy(ctx) {
42536
42550
  }
42537
42551
  cpString += "</tr>";
42538
42552
  }
42539
- var result = "<table border=\"1\" style=\"border-collapse:collapse\" data-type=\"leankylin-copy-action-table\">".concat(cpString, "</table>");
42553
+ var result = "<table border=\"1\" style=\"border-collapse:collapse; font-size: 13px\" data-type=\"leankylin-copy-action-table\">".concat(cpString, "</table>");
42540
42554
  clipboard.writeHtml(result);
42541
42555
  }
42542
42556
  function copy2(ctx) {
@@ -42610,9 +42624,7 @@ function deepClear(ctx) {
42610
42624
  var _d$r2;
42611
42625
  var cell = d === null || d === void 0 ? void 0 : (_d$r2 = d[r]) === null || _d$r2 === void 0 ? void 0 : _d$r2[c];
42612
42626
  d[r][c] = null;
42613
- if ((cell === null || cell === void 0 ? void 0 : cell.f) != null) {
42614
- delFunctionGroup(ctx, r, c, ctx.currentSheetId);
42615
- }
42627
+ if ((cell === null || cell === void 0 ? void 0 : cell.f) != null) ;
42616
42628
  if (hyperlinkMap && hyperlinkMap["".concat(r, "_").concat(c)]) {
42617
42629
  delete hyperlinkMap["".concat(r, "_").concat(c)];
42618
42630
  }
@@ -42620,6 +42632,7 @@ function deepClear(ctx) {
42620
42632
  }
42621
42633
  }
42622
42634
  }
42635
+ updateFunctionGroup(ctx);
42623
42636
  return "success";
42624
42637
  }
42625
42638
  function deleteSelectedCellText(ctx, deep) {
@@ -42662,7 +42675,6 @@ function deleteSelectedCellText(ctx, deep) {
42662
42675
  delete cell.v;
42663
42676
  if (cell.f != null) {
42664
42677
  delete cell.f;
42665
- delFunctionGroup(ctx, r, c, ctx.currentSheetId);
42666
42678
  delete cell.spl;
42667
42679
  }
42668
42680
  if (cell.ct != null && cell.ct.t === "inlineStr") {
@@ -42677,6 +42689,9 @@ function deleteSelectedCellText(ctx, deep) {
42677
42689
  }
42678
42690
  }
42679
42691
  }
42692
+ console.time('deleteSelectedCellText');
42693
+ updateFunctionGroup(ctx);
42694
+ console.timeEnd('deleteSelectedCellText');
42680
42695
  }
42681
42696
  return "success";
42682
42697
  }
@@ -46733,29 +46748,39 @@ function calculateSheetFromula(ctx, id, isrefresh) {
46733
46748
  }
46734
46749
  console.timeEnd("calcTime:".concat(id));
46735
46750
  }
46736
- function updateFunctionGroup(ctx) {
46751
+ function updateFunctionGroupBySheetId(ctx, id) {
46752
+ var _ctx$luckysheetfile$i, _ctx$luckysheetfile$i2, _ctx$luckysheetfile$i3;
46737
46753
  var luckysheetfile = ctx.luckysheetfile;
46738
- for (var index = 0; index < luckysheetfile.length; index++) {
46739
- var _ctx$luckysheetfile$i, _ctx$luckysheetfile$i2, _ctx$luckysheetfile$i3;
46740
- var file = luckysheetfile[index];
46741
- var calcChain = [];
46742
- var rows = (_ctx$luckysheetfile$i = (_ctx$luckysheetfile$i2 = ctx.luckysheetfile[index]) === null || _ctx$luckysheetfile$i2 === void 0 ? void 0 : (_ctx$luckysheetfile$i3 = _ctx$luckysheetfile$i2.data) === null || _ctx$luckysheetfile$i3 === void 0 ? void 0 : _ctx$luckysheetfile$i3.length) !== null && _ctx$luckysheetfile$i !== void 0 ? _ctx$luckysheetfile$i : 0;
46743
- for (var r = 0; r < rows; r += 1) {
46744
- for (var c = 0; c < ctx.luckysheetfile[index].data[r].length; c += 1) {
46745
- var cell = ctx.luckysheetfile[index].data[r][c];
46746
- if (!(cell === null || cell === void 0 ? void 0 : cell.f)) {
46747
- continue;
46748
- }
46749
- var cc = {
46750
- r: r,
46751
- c: c,
46752
- id: file.id,
46753
- f: cell === null || cell === void 0 ? void 0 : cell.f
46754
- };
46755
- calcChain.push(cc);
46754
+ var index = getSheetIndex(ctx, id);
46755
+ var file = luckysheetfile[index];
46756
+ var calcChain = [];
46757
+ var rows = (_ctx$luckysheetfile$i = (_ctx$luckysheetfile$i2 = ctx.luckysheetfile[index]) === null || _ctx$luckysheetfile$i2 === void 0 ? void 0 : (_ctx$luckysheetfile$i3 = _ctx$luckysheetfile$i2.data) === null || _ctx$luckysheetfile$i3 === void 0 ? void 0 : _ctx$luckysheetfile$i3.length) !== null && _ctx$luckysheetfile$i !== void 0 ? _ctx$luckysheetfile$i : 0;
46758
+ for (var r = 0; r < rows; r += 1) {
46759
+ for (var c = 0; c < ctx.luckysheetfile[index].data[r].length; c += 1) {
46760
+ var cell = ctx.luckysheetfile[index].data[r][c];
46761
+ if (!(cell === null || cell === void 0 ? void 0 : cell.f)) {
46762
+ continue;
46756
46763
  }
46764
+ var cc = {
46765
+ r: r,
46766
+ c: c,
46767
+ id: file.id,
46768
+ f: cell === null || cell === void 0 ? void 0 : cell.f
46769
+ };
46770
+ calcChain.push(cc);
46757
46771
  }
46758
- file.calcChain = calcChain;
46772
+ }
46773
+ file.calcChain = calcChain;
46774
+ }
46775
+ function updateFunctionGroup(ctx, id) {
46776
+ if (id) {
46777
+ updateFunctionGroupBySheetId(ctx, id);
46778
+ return;
46779
+ }
46780
+ var luckysheetfile = ctx.luckysheetfile;
46781
+ for (var index = 0; index < luckysheetfile.length; index++) {
46782
+ var file = luckysheetfile[index];
46783
+ updateFunctionGroupBySheetId(ctx, file.id);
46759
46784
  }
46760
46785
  }
46761
46786
  function parseCellReferences(expression) {
@@ -47617,8 +47642,11 @@ function runExecFunction(ctx, range, index, data) {
47617
47642
  }
47618
47643
  }
47619
47644
  ctx.formulaCache.execFunctionExist.reverse();
47645
+ console.time('execFunctionGroup');
47620
47646
  execFunctionGroup(ctx, null, null, null, null, data);
47647
+ console.timeEnd('execFunctionGroup');
47621
47648
  ctx.formulaCache.execFunctionGlobalData = null;
47649
+ updateFunctionGroup(ctx);
47622
47650
  }
47623
47651
  function jfrefreshgrid(ctx, data, range) {
47624
47652
  var isRunExecFunction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
@@ -47629,6 +47657,7 @@ function jfrefreshgrid(ctx, data, range) {
47629
47657
  range = ctx.luckysheet_select_save;
47630
47658
  if (range == null) return;
47631
47659
  }
47660
+ console.log('isRunExecFunction', isRunExecFunction);
47632
47661
  if (isRunExecFunction) {
47633
47662
  runExecFunction(ctx, range, ctx.currentSheetId, data);
47634
47663
  }
@@ -48894,8 +48923,9 @@ function autoSelectionFormula(ctx, cellInput, fxInput, formula, cache) {
48894
48923
  });
48895
48924
  if (!isfalse) {
48896
48925
  ctx.formulaCache.execFunctionExist.reverse();
48897
- execFunctionGroup(ctx, null, null, null, null, flowdata);
48926
+ execFunctionGroup(ctx, null, null, null, null, flowdata, false, false);
48898
48927
  ctx.formulaCache.execFunctionGlobalData = null;
48928
+ updateFunctionGroup(ctx);
48899
48929
  }
48900
48930
  }
48901
48931
  function cancelPaintModel(ctx) {
@@ -55926,6 +55956,23 @@ function getSheetWithLatestCelldata(ctx) {
55926
55956
  });
55927
55957
  }
55928
55958
 
55959
+ var FORMAT_LIST = {
55960
+ bg: 1,
55961
+ ff: 1,
55962
+ fc: 1,
55963
+ bl: 1,
55964
+ it: 1,
55965
+ fs: 1,
55966
+ cl: 1,
55967
+ un: 1,
55968
+ vt: 1,
55969
+ ht: 1,
55970
+ mc: 1,
55971
+ tr: 1,
55972
+ tb: 1,
55973
+ rt: 1,
55974
+ qp: 1
55975
+ };
55929
55976
  function getCellValue$1(ctx, row, column) {
55930
55977
  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
55931
55978
  if (!_.isNumber(row) || !_.isNumber(column)) {
@@ -55965,23 +56012,7 @@ function setCellValue$1(ctx, row, column, value, cellInput) {
55965
56012
  }
55966
56013
  var sheet = getSheet(ctx, options);
55967
56014
  var data = sheet.data;
55968
- var formatList = {
55969
- bg: 1,
55970
- ff: 1,
55971
- fc: 1,
55972
- bl: 1,
55973
- it: 1,
55974
- fs: 1,
55975
- cl: 1,
55976
- un: 1,
55977
- vt: 1,
55978
- ht: 1,
55979
- mc: 1,
55980
- tr: 1,
55981
- tb: 1,
55982
- rt: 1,
55983
- qp: 1
55984
- };
56015
+ var formatList = FORMAT_LIST;
55985
56016
  if (value == null || value.toString().length === 0) {
55986
56017
  delFunctionGroup(ctx, row, column);
55987
56018
  setCellValue(ctx, row, column, data, value);
@@ -56058,6 +56089,165 @@ function setCellValue$1(ctx, row, column, value, cellInput) {
56058
56089
  }
56059
56090
  }
56060
56091
  }
56092
+ function setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaCells) {
56093
+ var data = sheet.data;
56094
+ var sheetId = sheet.id;
56095
+ if (value == null || value.toString().length === 0) {
56096
+ delFunctionGroup(ctx, row, column, sheetId);
56097
+ setCellValue(ctx, row, column, data, value);
56098
+ return;
56099
+ }
56100
+ if (value instanceof Object) {
56101
+ var _data$row2;
56102
+ var curv = {};
56103
+ if (!(data === null || data === void 0 ? void 0 : data[row])) {
56104
+ var needAddRow = row - ((data === null || data === void 0 ? void 0 : data.length) || 0) + 1;
56105
+ data === null || data === void 0 ? void 0 : data.push.apply(data, _toConsumableArray(Array.from({
56106
+ length: needAddRow
56107
+ }).map(function () {
56108
+ return [];
56109
+ })));
56110
+ }
56111
+ if ((data === null || data === void 0 ? void 0 : (_data$row2 = data[row]) === null || _data$row2 === void 0 ? void 0 : _data$row2[column]) == null) {
56112
+ data[row][column] = {};
56113
+ }
56114
+ var cell = data[row][column];
56115
+ if (value.f != null && value.v == null) {
56116
+ curv.f = value.f;
56117
+ if (value.ct != null) {
56118
+ curv.ct = value.ct;
56119
+ }
56120
+ Object.assign(cell, curv);
56121
+ if (_.isString(value.f)) {
56122
+ formulaCells.push({
56123
+ r: row,
56124
+ c: column,
56125
+ f: value.f,
56126
+ ct: value.ct
56127
+ });
56128
+ } else {
56129
+ updateCell(ctx, row, column, cellInput, curv);
56130
+ }
56131
+ } else {
56132
+ var needupdateFdev = false;
56133
+ var needUpdateM = false;
56134
+ var oldF = cell.f;
56135
+ var nf = value.f;
56136
+ var oldV = cell.v;
56137
+ var nv = value.v;
56138
+ if (value.ct != null) {
56139
+ curv.ct = value.ct;
56140
+ }
56141
+ if (value.f != null) {
56142
+ curv.f = value.f;
56143
+ }
56144
+ if (value.v != null) {
56145
+ curv.v = value.v;
56146
+ } else {
56147
+ curv.v = cell.v;
56148
+ }
56149
+ if (value.m != null) {
56150
+ curv.m = value.m;
56151
+ }
56152
+ if (nf !== undefined && nf !== oldF) {
56153
+ needupdateFdev = true;
56154
+ needUpdateM = true;
56155
+ }
56156
+ if (nv !== undefined && String(nv) !== String(oldV)) {
56157
+ needUpdateM = true;
56158
+ }
56159
+ if (needupdateFdev) {
56160
+ delFunctionGroup(ctx, row, column, sheetId);
56161
+ }
56162
+ if (needUpdateM) {
56163
+ setCellValue(ctx, row, column, data, curv);
56164
+ }
56165
+ }
56166
+ _.forEach(value, function (v, attr) {
56167
+ if (attr in FORMAT_LIST) {
56168
+ var foucsStatus = v;
56169
+ if (attr === "ht") {
56170
+ if (foucsStatus === "left") {
56171
+ foucsStatus = "1";
56172
+ } else if (foucsStatus === "center") {
56173
+ foucsStatus = "0";
56174
+ } else if (foucsStatus === "right") {
56175
+ foucsStatus = "2";
56176
+ }
56177
+ } else if (attr === "vt") {
56178
+ if (foucsStatus === "top") {
56179
+ foucsStatus = "1";
56180
+ } else if (foucsStatus === "middle") {
56181
+ foucsStatus = "0";
56182
+ } else if (foucsStatus === "bottom") {
56183
+ foucsStatus = "2";
56184
+ }
56185
+ } else if (attr === "tb") {
56186
+ if (foucsStatus === "overflow") {
56187
+ foucsStatus = "1";
56188
+ } else if (foucsStatus === "clip") {
56189
+ foucsStatus = "0";
56190
+ } else if (foucsStatus === "wrap") {
56191
+ foucsStatus = "2";
56192
+ }
56193
+ } else if (attr === "tr") {
56194
+ if (foucsStatus === "none") {
56195
+ foucsStatus = "0";
56196
+ } else if (foucsStatus === "angleup") {
56197
+ foucsStatus = "1";
56198
+ } else if (foucsStatus === "angledown") {
56199
+ foucsStatus = "2";
56200
+ } else if (foucsStatus === "vertical") {
56201
+ foucsStatus = "3";
56202
+ } else if (foucsStatus === "rotation-up") {
56203
+ foucsStatus = "4";
56204
+ } else if (foucsStatus === "rotation-down") {
56205
+ foucsStatus = "5";
56206
+ }
56207
+ }
56208
+ if (cell && _.isPlainObject(cell)) {
56209
+ if (cell.ct != null && Array.isArray(cell.ct.s) && _.isPlainObject(cell.ct.s[0])) {
56210
+ cell.ct.s.forEach(function (item) {
56211
+ item[attr] = foucsStatus;
56212
+ });
56213
+ }
56214
+ cell[attr] = foucsStatus;
56215
+ }
56216
+ } else {
56217
+ cell[attr] = v;
56218
+ }
56219
+ });
56220
+ data[row][column] = cell;
56221
+ } else {
56222
+ var text = value.toString();
56223
+ if (text.substr(0, 1) === "=" && text.length > 1) {
56224
+ var _data$row3;
56225
+ if (!(data === null || data === void 0 ? void 0 : data[row])) {
56226
+ var _needAddRow = row - ((data === null || data === void 0 ? void 0 : data.length) || 0) + 1;
56227
+ data === null || data === void 0 ? void 0 : data.push.apply(data, _toConsumableArray(Array.from({
56228
+ length: _needAddRow
56229
+ }).map(function () {
56230
+ return [];
56231
+ })));
56232
+ }
56233
+ if ((data === null || data === void 0 ? void 0 : (_data$row3 = data[row]) === null || _data$row3 === void 0 ? void 0 : _data$row3[column]) == null) {
56234
+ data[row][column] = {};
56235
+ }
56236
+ var _cell = data[row][column];
56237
+ _cell.f = text;
56238
+ formulaCells.push({
56239
+ r: row,
56240
+ c: column,
56241
+ f: text
56242
+ });
56243
+ } else if (text.substr(0, 5) === "<span") {
56244
+ updateCell(ctx, row, column, cellInput, value);
56245
+ } else {
56246
+ delFunctionGroup(ctx, row, column, sheetId);
56247
+ setCellValue(ctx, row, column, data, value);
56248
+ }
56249
+ }
56250
+ }
56061
56251
  function clearCell(ctx, row, column) {
56062
56252
  var _sheet$data, _sheet$data$row;
56063
56253
  var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
@@ -56378,7 +56568,7 @@ function setSelection(ctx, range, options) {
56378
56568
  function setCellValuesByRange(ctx, data, range, cellInput) {
56379
56569
  var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};
56380
56570
  var setMerge = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
56381
- if (data == null) {
56571
+ if (data == null || !Array.isArray(data)) {
56382
56572
  throw INVALID_PARAMS;
56383
56573
  }
56384
56574
  if (range instanceof Array) {
@@ -56387,27 +56577,45 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56387
56577
  if (!_.isPlainObject(range)) {
56388
56578
  throw INVALID_PARAMS;
56389
56579
  }
56390
- var rowCount = range.row[1] - range.row[0] + 1;
56391
- var columnCount = range.column[1] - range.column[0] + 1;
56392
- if (data.length !== rowCount || data[0].length !== columnCount) {
56580
+ var rangeRow = range.row;
56581
+ var rangeColumn = range.column;
56582
+ if (!Array.isArray(rangeRow) || !Array.isArray(rangeColumn) || rangeRow.length < 2 || rangeColumn.length < 2 || !_.isNumber(rangeRow[0]) || !_.isNumber(rangeRow[1]) || !_.isNumber(rangeColumn[0]) || !_.isNumber(rangeColumn[1])) {
56583
+ throw INVALID_PARAMS;
56584
+ }
56585
+ var rowStart = rangeRow[0];
56586
+ var rowEnd = rangeRow[1];
56587
+ var colStart = rangeColumn[0];
56588
+ var colEnd = rangeColumn[1];
56589
+ if (rowStart < 0 || colStart < 0 || rowEnd < rowStart || colEnd < colStart) {
56590
+ throw INVALID_PARAMS;
56591
+ }
56592
+ var rowCount = rowEnd - rowStart + 1;
56593
+ var columnCount = colEnd - colStart + 1;
56594
+ if (!Array.isArray(data[0]) || data.length !== rowCount || data[0].length !== columnCount) {
56393
56595
  throw new Error("data size does not match range");
56394
56596
  }
56395
56597
  var sheet = getSheet(ctx, options);
56598
+ var flowdata = sheet.data;
56599
+ if (!Array.isArray(flowdata)) {
56600
+ throw SHEET_NOT_FOUND;
56601
+ }
56396
56602
  var cfg = sheet.config || {};
56397
56603
  if (cfg.merge == null) {
56398
56604
  cfg.merge = {};
56399
56605
  }
56606
+ var formulaCells = [];
56400
56607
  for (var i = 0; i < rowCount; i += 1) {
56401
56608
  for (var j = 0; j < columnCount; j += 1) {
56402
- var row = range.row[0] + i;
56403
- var column = range.column[0] + j;
56404
- setCellValue$1(ctx, row, column, data[i][j], cellInput, options);
56609
+ var row = rowStart + i;
56610
+ var column = colStart + j;
56611
+ var value = data[i][j];
56612
+ setCellValueInBatch(ctx, sheet, row, column, value, cellInput, formulaCells);
56405
56613
  if (setMerge) {
56406
- var _data$i$j, _data$i$j$mc, _data$i$j2, _data$i$j2$mc, _data$i$j3, _data$i$j3$mc, _data$i$j4, _data$i$j4$mc;
56407
- var r1 = (_data$i$j = data[i][j]) === null || _data$i$j === void 0 ? void 0 : (_data$i$j$mc = _data$i$j.mc) === null || _data$i$j$mc === void 0 ? void 0 : _data$i$j$mc.r;
56408
- var c1 = (_data$i$j2 = data[i][j]) === null || _data$i$j2 === void 0 ? void 0 : (_data$i$j2$mc = _data$i$j2.mc) === null || _data$i$j2$mc === void 0 ? void 0 : _data$i$j2$mc.c;
56409
- var rs = (_data$i$j3 = data[i][j]) === null || _data$i$j3 === void 0 ? void 0 : (_data$i$j3$mc = _data$i$j3.mc) === null || _data$i$j3$mc === void 0 ? void 0 : _data$i$j3$mc.rs;
56410
- var cs = (_data$i$j4 = data[i][j]) === null || _data$i$j4 === void 0 ? void 0 : (_data$i$j4$mc = _data$i$j4.mc) === null || _data$i$j4$mc === void 0 ? void 0 : _data$i$j4$mc.cs;
56614
+ var _value$mc, _value$mc2, _value$mc3, _value$mc4;
56615
+ var r1 = value === null || value === void 0 ? void 0 : (_value$mc = value.mc) === null || _value$mc === void 0 ? void 0 : _value$mc.r;
56616
+ var c1 = value === null || value === void 0 ? void 0 : (_value$mc2 = value.mc) === null || _value$mc2 === void 0 ? void 0 : _value$mc2.c;
56617
+ var rs = value === null || value === void 0 ? void 0 : (_value$mc3 = value.mc) === null || _value$mc3 === void 0 ? void 0 : _value$mc3.rs;
56618
+ var cs = value === null || value === void 0 ? void 0 : (_value$mc4 = value.mc) === null || _value$mc4 === void 0 ? void 0 : _value$mc4.cs;
56411
56619
  if (rs > 1 || cs > 1) {
56412
56620
  cfg.merge["".concat(r1, "_").concat(c1)] = {
56413
56621
  r: r1,
@@ -56422,18 +56630,84 @@ function setCellValuesByRange(ctx, data, range, cellInput) {
56422
56630
  if (setMerge) {
56423
56631
  sheet.config = cfg;
56424
56632
  }
56633
+ if (formulaCells.length > 0) {
56634
+ ctx.formulaCache.execFunctionExist = [];
56635
+ for (var k = 0; k < formulaCells.length; k += 1) {
56636
+ var fc = formulaCells[k];
56637
+ var v = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, true);
56638
+ setCellValue(ctx, fc.r, fc.c, flowdata, {
56639
+ v: v[1],
56640
+ f: v[2]
56641
+ });
56642
+ ctx.formulaCache.execFunctionExist.push({
56643
+ r: fc.r,
56644
+ c: fc.c,
56645
+ i: sheet.id
56646
+ });
56647
+ }
56648
+ ctx.formulaCache.execFunctionExist.reverse();
56649
+ execFunctionGroup(ctx, null, null, null, null, flowdata, false, true);
56650
+ groupValuesRefresh(ctx);
56651
+ updateFunctionGroup(ctx);
56652
+ }
56425
56653
  }
56426
56654
  function setCellValues(ctx, data, cellInput) {
56655
+ var _data$, _data$2;
56427
56656
  if (data == null) {
56428
56657
  throw INVALID_PARAMS;
56429
56658
  }
56430
- for (var j = 0; j < data.length; j += 1) {
56431
- var _data$j = data[j],
56432
- r = _data$j.r,
56433
- c = _data$j.c,
56434
- v = _data$j.v,
56435
- ops = _data$j.ops;
56436
- setCellValue$1(ctx, r, c, v, cellInput, ops);
56659
+ var pickSheet = function pickSheet(ops) {
56660
+ var _ops$index, _ops$id;
56661
+ return [(_ops$index = ops === null || ops === void 0 ? void 0 : ops.index) !== null && _ops$index !== void 0 ? _ops$index : null, (_ops$id = ops === null || ops === void 0 ? void 0 : ops.id) !== null && _ops$id !== void 0 ? _ops$id : null];
56662
+ };
56663
+ var first = pickSheet((_data$ = data[0]) === null || _data$ === void 0 ? void 0 : _data$.ops);
56664
+ var canBatch = data.every(function (item) {
56665
+ var _pickSheet = pickSheet(item === null || item === void 0 ? void 0 : item.ops),
56666
+ _pickSheet2 = _slicedToArray(_pickSheet, 2),
56667
+ index = _pickSheet2[0],
56668
+ id = _pickSheet2[1];
56669
+ return index === first[0] && id === first[1];
56670
+ });
56671
+ if (!canBatch) {
56672
+ for (var j = 0; j < data.length; j += 1) {
56673
+ var _data$j = data[j],
56674
+ r = _data$j.r,
56675
+ c = _data$j.c,
56676
+ v = _data$j.v,
56677
+ ops = _data$j.ops;
56678
+ setCellValue$1(ctx, r, c, v, cellInput, ops);
56679
+ }
56680
+ return;
56681
+ }
56682
+ var sheet = getSheet(ctx, ((_data$2 = data[0]) === null || _data$2 === void 0 ? void 0 : _data$2.ops) || {});
56683
+ var flowdata = sheet.data;
56684
+ if (!Array.isArray(flowdata)) {
56685
+ throw SHEET_NOT_FOUND;
56686
+ }
56687
+ var formulaCells = [];
56688
+ for (var _j = 0; _j < data.length; _j += 1) {
56689
+ var _data$_j = data[_j],
56690
+ _r = _data$_j.r,
56691
+ _c = _data$_j.c,
56692
+ _v = _data$_j.v;
56693
+ setCellValueInBatch(ctx, sheet, _r, _c, _v, cellInput, formulaCells);
56694
+ }
56695
+ if (formulaCells.length > 0) {
56696
+ ctx.formulaCache.execFunctionExist = [];
56697
+ for (var k = 0; k < formulaCells.length; k += 1) {
56698
+ var fc = formulaCells[k];
56699
+ var val = execfunction(ctx, fc.f, fc.r, fc.c, sheet.id, false, false);
56700
+ setCellValue(ctx, fc.r, fc.c, flowdata, {
56701
+ v: val[1],
56702
+ f: val[2]
56703
+ });
56704
+ ctx.formulaCache.execFunctionExist.push({
56705
+ r: fc.r,
56706
+ c: fc.c,
56707
+ i: sheet.id
56708
+ });
56709
+ }
56710
+ ctx.formulaCache.execFunctionExist.reverse();
56437
56711
  }
56438
56712
  }
56439
56713
  function setCellFormatByRange(ctx, attr, value, range) {
@@ -56540,6 +56814,7 @@ var index = /*#__PURE__*/Object.freeze({
56540
56814
  celldataToData: celldataToData,
56541
56815
  getCellValue: getCellValue$1,
56542
56816
  setCellValue: setCellValue$1,
56817
+ setCellValueInBatch: setCellValueInBatch,
56543
56818
  clearCell: clearCell,
56544
56819
  setCellFormat: setCellFormat,
56545
56820
  autoFillCell: autoFillCell,
@@ -56571,6 +56846,7 @@ var index = /*#__PURE__*/Object.freeze({
56571
56846
  showSheet: showSheet,
56572
56847
  copySheet: copySheet,
56573
56848
  calculateSheetFromula: calculateSheetFromula,
56849
+ updateFunctionGroupBySheetId: updateFunctionGroupBySheetId,
56574
56850
  updateFunctionGroup: updateFunctionGroup,
56575
56851
  calculateSheetByCells: calculateSheetByCells,
56576
56852
  addSheet: addSheet$1,
@@ -58944,6 +59220,7 @@ function postPasteCut(ctx, source, target, RowlChange) {
58944
59220
  ctx.luckysheetfile[getSheetIndex(ctx, target.sheetId)].dataVerification = target.curDataVerification;
58945
59221
  ctx.formulaCache.execFunctionExist.reverse();
58946
59222
  execFunctionGroup(ctx, null, null, null, null, target.curData);
59223
+ updateFunctionGroup(ctx);
58947
59224
  ctx.formulaCache.execFunctionGlobalData = null;
58948
59225
  storeSheetParamALL(ctx);
58949
59226
  }
@@ -60438,6 +60715,7 @@ function _handlePasteByLeanklin() {
60438
60715
  }
60439
60716
  return _context2.abrupt("return");
60440
60717
  case 6:
60718
+ console.time('handlePasteByLeanklin');
60441
60719
  rows = selectRange.row;
60442
60720
  columns = selectRange.column;
60443
60721
  _getClipboardData = getClipboardData(ctx, e, copyRich, rows[0], columns[0]), copyData = _getClipboardData.data, borderInfo = _getClipboardData.borderInfo, merge = _getClipboardData.merge;
@@ -60474,14 +60752,17 @@ function _handlePasteByLeanklin() {
60474
60752
  column: column
60475
60753
  };
60476
60754
  if (isAllowEdit(ctx, [range])) {
60477
- _context2.next = 24;
60755
+ _context2.next = 25;
60478
60756
  break;
60479
60757
  }
60480
60758
  return _context2.abrupt("return");
60481
- case 24:
60759
+ case 25:
60760
+ console.time('setCellValuesByRange');
60482
60761
  setCellValuesByRange(ctx, pasteData, range, null);
60762
+ console.timeEnd('setCellValuesByRange');
60483
60763
  ctx.luckysheet_select_save = [range];
60484
- case 26:
60764
+ console.timeEnd('handlePasteByLeanklin');
60765
+ case 30:
60485
60766
  case "end":
60486
60767
  return _context2.stop();
60487
60768
  }