@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.
- package/dist/api/range.d.ts +9 -0
- package/dist/index.esm.js +76 -37
- package/dist/index.js +76 -37
- package/package.json +2 -2
package/dist/api/range.d.ts
CHANGED
|
@@ -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
|
-
|
|
56208
|
-
|
|
56209
|
-
|
|
56210
|
-
|
|
56211
|
-
|
|
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
|
-
|
|
56324
|
-
|
|
56325
|
-
|
|
56326
|
-
|
|
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
|
|
56726
|
-
|
|
56727
|
-
|
|
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
|
-
|
|
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
|
-
|
|
56218
|
-
|
|
56219
|
-
|
|
56220
|
-
|
|
56221
|
-
|
|
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
|
-
|
|
56334
|
-
|
|
56335
|
-
|
|
56336
|
-
|
|
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
|
|
56736
|
-
|
|
56737
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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",
|