@odoo/o-spreadsheet 18.3.32 → 18.3.33
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/o-spreadsheet.cjs.js +214 -198
- package/dist/o-spreadsheet.d.ts +224 -218
- package/dist/o-spreadsheet.esm.js +214 -198
- package/dist/o-spreadsheet.iife.js +214 -198
- package/dist/o-spreadsheet.iife.min.js +399 -399
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.xml +3 -3
- package/package.json +1 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 18.3.
|
|
6
|
-
* @date 2026-01-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.3.33
|
|
6
|
+
* @date 2026-01-21T11:05:17.933Z
|
|
7
|
+
* @hash b7e5d91
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
return children
|
|
34
34
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
35
35
|
.flat()
|
|
36
|
-
.map(createAction)
|
|
36
|
+
.map(createAction)
|
|
37
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
37
38
|
}
|
|
38
39
|
: () => [],
|
|
39
40
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
@@ -308,6 +309,7 @@
|
|
|
308
309
|
fillColor: "",
|
|
309
310
|
textColor: "",
|
|
310
311
|
};
|
|
312
|
+
const DEFAULT_NUMBER_STYLE = { ...DEFAULT_STYLE, align: "right" };
|
|
311
313
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
312
314
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
313
315
|
// Fonts
|
|
@@ -6180,67 +6182,6 @@
|
|
|
6180
6182
|
return sheetName !== undefined ? `${getCanonicalSymbolName(sheetName)}!${xc}` : xc;
|
|
6181
6183
|
}
|
|
6182
6184
|
|
|
6183
|
-
function createDefaultRows(rowNumber) {
|
|
6184
|
-
const rows = [];
|
|
6185
|
-
for (let i = 0; i < rowNumber; i++) {
|
|
6186
|
-
const row = {
|
|
6187
|
-
cells: {},
|
|
6188
|
-
};
|
|
6189
|
-
rows.push(row);
|
|
6190
|
-
}
|
|
6191
|
-
return rows;
|
|
6192
|
-
}
|
|
6193
|
-
function moveHeaderIndexesOnHeaderAddition(indexHeaderAdded, numberAdded, headers) {
|
|
6194
|
-
return headers.map((header) => {
|
|
6195
|
-
if (header >= indexHeaderAdded) {
|
|
6196
|
-
return header + numberAdded;
|
|
6197
|
-
}
|
|
6198
|
-
return header;
|
|
6199
|
-
});
|
|
6200
|
-
}
|
|
6201
|
-
function moveHeaderIndexesOnHeaderDeletion(deletedHeaders, headers) {
|
|
6202
|
-
deletedHeaders = [...deletedHeaders].sort((a, b) => b - a);
|
|
6203
|
-
return headers
|
|
6204
|
-
.map((header) => {
|
|
6205
|
-
for (const deletedHeader of deletedHeaders) {
|
|
6206
|
-
if (header > deletedHeader) {
|
|
6207
|
-
header--;
|
|
6208
|
-
}
|
|
6209
|
-
else if (header === deletedHeader) {
|
|
6210
|
-
return undefined;
|
|
6211
|
-
}
|
|
6212
|
-
}
|
|
6213
|
-
return header;
|
|
6214
|
-
})
|
|
6215
|
-
.filter(isDefined);
|
|
6216
|
-
}
|
|
6217
|
-
function getNextSheetName(existingNames, baseName = "Sheet") {
|
|
6218
|
-
let i = 1;
|
|
6219
|
-
let name = `${baseName}${i}`;
|
|
6220
|
-
while (existingNames.includes(name)) {
|
|
6221
|
-
name = `${baseName}${i}`;
|
|
6222
|
-
i++;
|
|
6223
|
-
}
|
|
6224
|
-
return name;
|
|
6225
|
-
}
|
|
6226
|
-
function getDuplicateSheetName(nameToDuplicate, existingNames) {
|
|
6227
|
-
let i = 1;
|
|
6228
|
-
const baseName = _t("Copy of %s", nameToDuplicate);
|
|
6229
|
-
let name = baseName.toString();
|
|
6230
|
-
while (existingNames.includes(name)) {
|
|
6231
|
-
name = `${baseName} (${i})`;
|
|
6232
|
-
i++;
|
|
6233
|
-
}
|
|
6234
|
-
return name;
|
|
6235
|
-
}
|
|
6236
|
-
function isSheetNameEqual(name1, name2) {
|
|
6237
|
-
if (name1 === undefined || name2 === undefined) {
|
|
6238
|
-
return false;
|
|
6239
|
-
}
|
|
6240
|
-
return (getUnquotedSheetName(name1.trim().toUpperCase()) ===
|
|
6241
|
-
getUnquotedSheetName(name2.trim().toUpperCase()));
|
|
6242
|
-
}
|
|
6243
|
-
|
|
6244
6185
|
function createRange(args, getSheetSize) {
|
|
6245
6186
|
const unboundedZone = args.zone;
|
|
6246
6187
|
const zone = boundUnboundedZone(unboundedZone, getSheetSize(args.sheetId));
|
|
@@ -6535,8 +6476,8 @@
|
|
|
6535
6476
|
elements.sort((a, b) => b - a);
|
|
6536
6477
|
const groups = groupConsecutive(elements);
|
|
6537
6478
|
return (range) => {
|
|
6538
|
-
if (
|
|
6539
|
-
return { changeType: "NONE" };
|
|
6479
|
+
if (range.sheetId !== cmd.sheetId) {
|
|
6480
|
+
return { changeType: "NONE", range };
|
|
6540
6481
|
}
|
|
6541
6482
|
let newRange = range;
|
|
6542
6483
|
let changeType = "NONE";
|
|
@@ -6563,10 +6504,7 @@
|
|
|
6563
6504
|
newRange = createAdaptedRange(newRange, dimension, changeType, -(max - min + 1));
|
|
6564
6505
|
}
|
|
6565
6506
|
}
|
|
6566
|
-
|
|
6567
|
-
return { changeType, range: newRange };
|
|
6568
|
-
}
|
|
6569
|
-
return { changeType: "NONE" };
|
|
6507
|
+
return { changeType, range: newRange };
|
|
6570
6508
|
};
|
|
6571
6509
|
}
|
|
6572
6510
|
function getApplyRangeChangeAddColRow(cmd) {
|
|
@@ -6575,7 +6513,7 @@
|
|
|
6575
6513
|
let dimension = cmd.dimension === "COL" ? "columns" : "rows";
|
|
6576
6514
|
return (range) => {
|
|
6577
6515
|
if (range.sheetId !== cmd.sheetId) {
|
|
6578
|
-
return { changeType: "NONE" };
|
|
6516
|
+
return { changeType: "NONE", range };
|
|
6579
6517
|
}
|
|
6580
6518
|
if (cmd.position === "after") {
|
|
6581
6519
|
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) {
|
|
@@ -6605,13 +6543,13 @@
|
|
|
6605
6543
|
};
|
|
6606
6544
|
}
|
|
6607
6545
|
}
|
|
6608
|
-
return { changeType: "NONE" };
|
|
6546
|
+
return { changeType: "NONE", range };
|
|
6609
6547
|
};
|
|
6610
6548
|
}
|
|
6611
6549
|
function getApplyRangeChangeDeleteSheet(cmd) {
|
|
6612
6550
|
return (range) => {
|
|
6613
6551
|
if (range.sheetId !== cmd.sheetId && range.invalidSheetName !== cmd.sheetName) {
|
|
6614
|
-
return { changeType: "NONE" };
|
|
6552
|
+
return { changeType: "NONE", range };
|
|
6615
6553
|
}
|
|
6616
6554
|
const invalidSheetName = cmd.sheetName;
|
|
6617
6555
|
range = {
|
|
@@ -6638,14 +6576,14 @@
|
|
|
6638
6576
|
const newRange = { ...range, sheetId, invalidSheetName };
|
|
6639
6577
|
return { changeType: "CHANGE", range: newRange };
|
|
6640
6578
|
}
|
|
6641
|
-
return { changeType: "NONE" };
|
|
6579
|
+
return { changeType: "NONE", range };
|
|
6642
6580
|
};
|
|
6643
6581
|
}
|
|
6644
6582
|
function getApplyRangeChangeMoveRange(cmd) {
|
|
6645
6583
|
const originZone = cmd.target[0];
|
|
6646
6584
|
return (range) => {
|
|
6647
6585
|
if (range.sheetId !== cmd.sheetId || !isZoneInside(range.zone, originZone)) {
|
|
6648
|
-
return { changeType: "NONE" };
|
|
6586
|
+
return { changeType: "NONE", range };
|
|
6649
6587
|
}
|
|
6650
6588
|
const targetSheetId = cmd.targetSheetId;
|
|
6651
6589
|
const offsetX = cmd.col - originZone.left;
|
|
@@ -6742,17 +6680,87 @@
|
|
|
6742
6680
|
return results.map((r) => r.elem);
|
|
6743
6681
|
}
|
|
6744
6682
|
|
|
6683
|
+
function createDefaultRows(rowNumber) {
|
|
6684
|
+
const rows = [];
|
|
6685
|
+
for (let i = 0; i < rowNumber; i++) {
|
|
6686
|
+
const row = {
|
|
6687
|
+
cells: {},
|
|
6688
|
+
};
|
|
6689
|
+
rows.push(row);
|
|
6690
|
+
}
|
|
6691
|
+
return rows;
|
|
6692
|
+
}
|
|
6693
|
+
function moveHeaderIndexesOnHeaderAddition(indexHeaderAdded, numberAdded, headers) {
|
|
6694
|
+
return headers.map((header) => {
|
|
6695
|
+
if (header >= indexHeaderAdded) {
|
|
6696
|
+
return header + numberAdded;
|
|
6697
|
+
}
|
|
6698
|
+
return header;
|
|
6699
|
+
});
|
|
6700
|
+
}
|
|
6701
|
+
function moveHeaderIndexesOnHeaderDeletion(deletedHeaders, headers) {
|
|
6702
|
+
deletedHeaders = [...deletedHeaders].sort((a, b) => b - a);
|
|
6703
|
+
return headers
|
|
6704
|
+
.map((header) => {
|
|
6705
|
+
for (const deletedHeader of deletedHeaders) {
|
|
6706
|
+
if (header > deletedHeader) {
|
|
6707
|
+
header--;
|
|
6708
|
+
}
|
|
6709
|
+
else if (header === deletedHeader) {
|
|
6710
|
+
return undefined;
|
|
6711
|
+
}
|
|
6712
|
+
}
|
|
6713
|
+
return header;
|
|
6714
|
+
})
|
|
6715
|
+
.filter(isDefined);
|
|
6716
|
+
}
|
|
6717
|
+
function getNextSheetName(existingNames, baseName = "Sheet") {
|
|
6718
|
+
let i = 1;
|
|
6719
|
+
let name = `${baseName}${i}`;
|
|
6720
|
+
while (existingNames.includes(name)) {
|
|
6721
|
+
name = `${baseName}${i}`;
|
|
6722
|
+
i++;
|
|
6723
|
+
}
|
|
6724
|
+
return name;
|
|
6725
|
+
}
|
|
6726
|
+
function getDuplicateSheetName(nameToDuplicate, existingNames) {
|
|
6727
|
+
let i = 1;
|
|
6728
|
+
const baseName = _t("Copy of %s", nameToDuplicate);
|
|
6729
|
+
let name = baseName.toString();
|
|
6730
|
+
while (existingNames.includes(name)) {
|
|
6731
|
+
name = `${baseName} (${i})`;
|
|
6732
|
+
i++;
|
|
6733
|
+
}
|
|
6734
|
+
return name;
|
|
6735
|
+
}
|
|
6736
|
+
function isSheetNameEqual(name1, name2) {
|
|
6737
|
+
if (name1 === undefined || name2 === undefined) {
|
|
6738
|
+
return false;
|
|
6739
|
+
}
|
|
6740
|
+
return (getUnquotedSheetName(name1.trim().toUpperCase()) ===
|
|
6741
|
+
getUnquotedSheetName(name2.trim().toUpperCase()));
|
|
6742
|
+
}
|
|
6743
|
+
|
|
6745
6744
|
function computeTextLinesHeight(textLineHeight, numberOfLines = 1) {
|
|
6746
6745
|
return numberOfLines * (textLineHeight + MIN_CELL_TEXT_MARGIN) - MIN_CELL_TEXT_MARGIN;
|
|
6747
6746
|
}
|
|
6748
6747
|
/**
|
|
6749
6748
|
* Get the default height of the cell given its style.
|
|
6750
6749
|
*/
|
|
6751
|
-
function getDefaultCellHeight(ctx, cell, colSize) {
|
|
6750
|
+
function getDefaultCellHeight(ctx, cell, locale, colSize) {
|
|
6752
6751
|
if (!cell || (!cell.isFormula && !cell.content)) {
|
|
6753
6752
|
return DEFAULT_CELL_HEIGHT;
|
|
6754
6753
|
}
|
|
6755
|
-
|
|
6754
|
+
let content = "";
|
|
6755
|
+
try {
|
|
6756
|
+
if (!cell.isFormula) {
|
|
6757
|
+
const localeFormat = { format: cell.format, locale };
|
|
6758
|
+
content = formatValue(parseLiteral(cell.content, locale), localeFormat);
|
|
6759
|
+
}
|
|
6760
|
+
}
|
|
6761
|
+
catch {
|
|
6762
|
+
content = CellErrorType.GenericError;
|
|
6763
|
+
}
|
|
6756
6764
|
return getCellContentHeight(ctx, content, cell.style, colSize);
|
|
6757
6765
|
}
|
|
6758
6766
|
function getCellContentHeight(ctx, content, style, colSize) {
|
|
@@ -20185,7 +20193,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20185
20193
|
}
|
|
20186
20194
|
acceptToVectorize.push(!argDefinition.acceptMatrix);
|
|
20187
20195
|
}
|
|
20188
|
-
return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
|
|
20196
|
+
return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
|
|
20197
|
+
}
|
|
20198
|
+
function replaceErrorPlaceholderInResult(result) {
|
|
20199
|
+
if (!isMatrix(result)) {
|
|
20200
|
+
replaceFunctionNamePlaceholder(result, descr.name);
|
|
20201
|
+
}
|
|
20202
|
+
else {
|
|
20203
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
20204
|
+
}
|
|
20205
|
+
return result;
|
|
20189
20206
|
}
|
|
20190
20207
|
function errorHandlingCompute(...args) {
|
|
20191
20208
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -20213,13 +20230,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20213
20230
|
const result = descr.compute.apply(this, args);
|
|
20214
20231
|
if (!isMatrix(result)) {
|
|
20215
20232
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
20216
|
-
replaceFunctionNamePlaceholder(result, descr.name);
|
|
20217
20233
|
return result;
|
|
20218
20234
|
}
|
|
20235
|
+
descr.name;
|
|
20219
20236
|
return { value: result };
|
|
20220
20237
|
}
|
|
20221
20238
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
20222
|
-
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
20223
20239
|
return result;
|
|
20224
20240
|
}
|
|
20225
20241
|
return matrixMap(result, (row) => ({ value: row }));
|
|
@@ -20671,7 +20687,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20671
20687
|
continue;
|
|
20672
20688
|
}
|
|
20673
20689
|
const sheetXC = tokens[tokenIdx].value;
|
|
20674
|
-
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange);
|
|
20690
|
+
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange).range;
|
|
20675
20691
|
if (sheetXC !== newSheetXC) {
|
|
20676
20692
|
tokens[tokenIdx] = {
|
|
20677
20693
|
value: newSheetXC,
|
|
@@ -20681,23 +20697,30 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20681
20697
|
}
|
|
20682
20698
|
return concat(tokens.map((token) => token.value));
|
|
20683
20699
|
}
|
|
20684
|
-
function adaptStringRange(defaultSheetId, sheetXC,
|
|
20700
|
+
function adaptStringRange(defaultSheetId, sheetXC, rangeAdapter) {
|
|
20685
20701
|
const sheetName = splitReference(sheetXC).sheetName;
|
|
20686
20702
|
if (sheetName
|
|
20687
|
-
? !isSheetNameEqual(sheetName,
|
|
20688
|
-
: defaultSheetId !==
|
|
20689
|
-
return sheetXC;
|
|
20703
|
+
? !isSheetNameEqual(sheetName, rangeAdapter.sheetName.old)
|
|
20704
|
+
: defaultSheetId !== rangeAdapter.sheetId) {
|
|
20705
|
+
return { changeType: "NONE", range: sheetXC };
|
|
20690
20706
|
}
|
|
20691
|
-
const sheetId = sheetName ?
|
|
20707
|
+
const sheetId = sheetName ? rangeAdapter.sheetId : defaultSheetId;
|
|
20692
20708
|
const range = getRange(sheetXC, sheetId);
|
|
20693
20709
|
if (range.invalidXc) {
|
|
20694
|
-
return sheetXC;
|
|
20710
|
+
return { changeType: "NONE", range: sheetXC };
|
|
20695
20711
|
}
|
|
20696
|
-
const change =
|
|
20712
|
+
const change = rangeAdapter.applyChange(range);
|
|
20697
20713
|
if (change.changeType === "NONE" || change.changeType === "REMOVE") {
|
|
20698
|
-
return sheetXC;
|
|
20714
|
+
return { changeType: change.changeType, range: sheetXC };
|
|
20715
|
+
}
|
|
20716
|
+
const rangeStr = getRangeString(change.range, defaultSheetId, getSheetNameGetter(rangeAdapter));
|
|
20717
|
+
if (rangeStr === CellErrorType.InvalidReference) {
|
|
20718
|
+
return { changeType: "REMOVE", range: rangeStr };
|
|
20699
20719
|
}
|
|
20700
|
-
return
|
|
20720
|
+
return {
|
|
20721
|
+
changeType: change.changeType,
|
|
20722
|
+
range: rangeStr,
|
|
20723
|
+
};
|
|
20701
20724
|
}
|
|
20702
20725
|
function getSheetNameGetter(applyChange) {
|
|
20703
20726
|
return (sheetId) => {
|
|
@@ -20796,8 +20819,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20796
20819
|
}
|
|
20797
20820
|
const change = applyChange(range);
|
|
20798
20821
|
switch (change.changeType) {
|
|
20799
|
-
case "NONE":
|
|
20800
|
-
return range;
|
|
20801
20822
|
case "REMOVE":
|
|
20802
20823
|
return undefined;
|
|
20803
20824
|
default:
|
|
@@ -20935,16 +20956,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20935
20956
|
function transformChartDefinitionWithDataSetsWithZone(chartSheetId, definition, applyChange) {
|
|
20936
20957
|
let labelRange;
|
|
20937
20958
|
if (definition.labelRange) {
|
|
20938
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
20939
|
-
if (
|
|
20959
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
20960
|
+
if (changeType !== "REMOVE") {
|
|
20940
20961
|
labelRange = adaptedRange;
|
|
20941
20962
|
}
|
|
20942
20963
|
}
|
|
20943
20964
|
const dataSets = [];
|
|
20944
20965
|
for (const dataSet of definition.dataSets) {
|
|
20945
20966
|
const newDataSet = { ...dataSet };
|
|
20946
|
-
const adaptedRange = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
20947
|
-
if (
|
|
20967
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
20968
|
+
if (changeType !== "REMOVE") {
|
|
20948
20969
|
newDataSet.dataRange = adaptedRange;
|
|
20949
20970
|
dataSets.push(newDataSet);
|
|
20950
20971
|
}
|
|
@@ -22270,14 +22291,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
22270
22291
|
let baseline;
|
|
22271
22292
|
let keyValue;
|
|
22272
22293
|
if (definition.baseline) {
|
|
22273
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
22274
|
-
if (
|
|
22294
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
22295
|
+
if (changeType !== "REMOVE") {
|
|
22275
22296
|
baseline = adaptedRange;
|
|
22276
22297
|
}
|
|
22277
22298
|
}
|
|
22278
22299
|
if (definition.keyValue) {
|
|
22279
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
22280
|
-
if (
|
|
22300
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
22301
|
+
if (changeType !== "REMOVE") {
|
|
22281
22302
|
keyValue = adaptedRange;
|
|
22282
22303
|
}
|
|
22283
22304
|
}
|
|
@@ -22333,7 +22354,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
22333
22354
|
// This kind of graph is not exportable in Excel
|
|
22334
22355
|
return undefined;
|
|
22335
22356
|
}
|
|
22336
|
-
updateRanges(applyChange) {
|
|
22357
|
+
updateRanges({ applyChange }) {
|
|
22337
22358
|
const baseline = adaptChartRange(this.baseline, applyChange);
|
|
22338
22359
|
const keyValue = adaptChartRange(this.keyValue, applyChange);
|
|
22339
22360
|
if (this.baseline === baseline && this.keyValue === keyValue) {
|
|
@@ -27205,7 +27226,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27205
27226
|
verticalAxis: getDefinedAxis(definition),
|
|
27206
27227
|
};
|
|
27207
27228
|
}
|
|
27208
|
-
updateRanges(applyChange) {
|
|
27229
|
+
updateRanges({ applyChange }) {
|
|
27209
27230
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27210
27231
|
if (!isStale) {
|
|
27211
27232
|
return this;
|
|
@@ -27326,7 +27347,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27326
27347
|
verticalAxis: getDefinedAxis(definition),
|
|
27327
27348
|
};
|
|
27328
27349
|
}
|
|
27329
|
-
updateRanges(applyChange) {
|
|
27350
|
+
updateRanges({ applyChange }) {
|
|
27330
27351
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27331
27352
|
if (!isStale) {
|
|
27332
27353
|
return this;
|
|
@@ -27497,7 +27518,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27497
27518
|
getDefinitionForExcel() {
|
|
27498
27519
|
return undefined;
|
|
27499
27520
|
}
|
|
27500
|
-
updateRanges(applyChange) {
|
|
27521
|
+
updateRanges({ applyChange }) {
|
|
27501
27522
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27502
27523
|
if (!isStale) {
|
|
27503
27524
|
return this;
|
|
@@ -27608,8 +27629,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27608
27629
|
static transformDefinition(chartSheetId, definition, applyChange) {
|
|
27609
27630
|
let dataRange;
|
|
27610
27631
|
if (definition.dataRange) {
|
|
27611
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
27612
|
-
if (
|
|
27632
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
27633
|
+
if (changeType !== "REMOVE") {
|
|
27613
27634
|
dataRange = adaptedRange;
|
|
27614
27635
|
}
|
|
27615
27636
|
}
|
|
@@ -27684,13 +27705,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27684
27705
|
: undefined,
|
|
27685
27706
|
};
|
|
27686
27707
|
}
|
|
27687
|
-
updateRanges(applyChange,
|
|
27708
|
+
updateRanges({ applyChange, adaptFormulaString }) {
|
|
27688
27709
|
const dataRange = adaptChartRange(this.dataRange, applyChange);
|
|
27689
|
-
const adaptFormula = (formula) =>
|
|
27690
|
-
applyChange,
|
|
27691
|
-
sheetId,
|
|
27692
|
-
sheetName: adaptSheetName,
|
|
27693
|
-
});
|
|
27710
|
+
const adaptFormula = (formula) => adaptFormulaString(this.sheetId, formula);
|
|
27694
27711
|
const sectionRule = adaptSectionRuleFormulas(this.sectionRule, adaptFormula);
|
|
27695
27712
|
const definition = this.getDefinitionWithSpecificRanges(dataRange, sectionRule);
|
|
27696
27713
|
return new GaugeChart(definition, this.sheetId, this.getters);
|
|
@@ -27910,7 +27927,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27910
27927
|
getDefinitionForExcel() {
|
|
27911
27928
|
return undefined;
|
|
27912
27929
|
}
|
|
27913
|
-
updateRanges(applyChange) {
|
|
27930
|
+
updateRanges({ applyChange }) {
|
|
27914
27931
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27915
27932
|
if (!isStale) {
|
|
27916
27933
|
return this;
|
|
@@ -28042,7 +28059,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28042
28059
|
: undefined,
|
|
28043
28060
|
};
|
|
28044
28061
|
}
|
|
28045
|
-
updateRanges(applyChange) {
|
|
28062
|
+
updateRanges({ applyChange }) {
|
|
28046
28063
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28047
28064
|
if (!isStale) {
|
|
28048
28065
|
return this;
|
|
@@ -28199,7 +28216,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28199
28216
|
labelRange,
|
|
28200
28217
|
};
|
|
28201
28218
|
}
|
|
28202
|
-
updateRanges(applyChange) {
|
|
28219
|
+
updateRanges({ applyChange }) {
|
|
28203
28220
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28204
28221
|
if (!isStale) {
|
|
28205
28222
|
return this;
|
|
@@ -28335,7 +28352,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28335
28352
|
getDefinitionForExcel() {
|
|
28336
28353
|
return undefined;
|
|
28337
28354
|
}
|
|
28338
|
-
updateRanges(applyChange) {
|
|
28355
|
+
updateRanges({ applyChange }) {
|
|
28339
28356
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28340
28357
|
if (!isStale) {
|
|
28341
28358
|
return this;
|
|
@@ -28482,7 +28499,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28482
28499
|
labelRange,
|
|
28483
28500
|
};
|
|
28484
28501
|
}
|
|
28485
|
-
updateRanges(applyChange) {
|
|
28502
|
+
updateRanges({ applyChange }) {
|
|
28486
28503
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28487
28504
|
if (!isStale) {
|
|
28488
28505
|
return this;
|
|
@@ -28604,7 +28621,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28604
28621
|
: undefined,
|
|
28605
28622
|
};
|
|
28606
28623
|
}
|
|
28607
|
-
updateRanges(applyChange) {
|
|
28624
|
+
updateRanges({ applyChange }) {
|
|
28608
28625
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28609
28626
|
if (!isStale) {
|
|
28610
28627
|
return this;
|
|
@@ -28766,7 +28783,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28766
28783
|
getDefinitionForExcel() {
|
|
28767
28784
|
return undefined;
|
|
28768
28785
|
}
|
|
28769
|
-
updateRanges(applyChange) {
|
|
28786
|
+
updateRanges({ applyChange }) {
|
|
28770
28787
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28771
28788
|
if (!isStale) {
|
|
28772
28789
|
return this;
|
|
@@ -28914,7 +28931,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28914
28931
|
getDefinitionForExcel() {
|
|
28915
28932
|
return undefined;
|
|
28916
28933
|
}
|
|
28917
|
-
updateRanges(applyChange) {
|
|
28934
|
+
updateRanges({ applyChange }) {
|
|
28918
28935
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28919
28936
|
if (!isStale) {
|
|
28920
28937
|
return this;
|
|
@@ -29069,7 +29086,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29069
29086
|
// TODO: implement export excel
|
|
29070
29087
|
return undefined;
|
|
29071
29088
|
}
|
|
29072
|
-
updateRanges(applyChange) {
|
|
29089
|
+
updateRanges({ applyChange }) {
|
|
29073
29090
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29074
29091
|
if (!isStale) {
|
|
29075
29092
|
return this;
|
|
@@ -31937,6 +31954,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31937
31954
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
31938
31955
|
: undefined,
|
|
31939
31956
|
wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
|
|
31957
|
+
shrinkToFit: style.wrapping === "clip" ? true : undefined,
|
|
31940
31958
|
},
|
|
31941
31959
|
};
|
|
31942
31960
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -31957,6 +31975,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31957
31975
|
vertical: styles.alignment.vertical,
|
|
31958
31976
|
horizontal: styles.alignment.horizontal,
|
|
31959
31977
|
wrapText: styles.alignment.wrapText,
|
|
31978
|
+
shrinkToFit: styles.alignment.shrinkToFit,
|
|
31960
31979
|
},
|
|
31961
31980
|
};
|
|
31962
31981
|
return pushElement(style, construct.styles);
|
|
@@ -42961,7 +42980,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
42961
42980
|
});
|
|
42962
42981
|
dataRange = this.props.definition.dataRange;
|
|
42963
42982
|
get configurationErrorMessages() {
|
|
42964
|
-
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
|
|
42983
|
+
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
42965
42984
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
42966
42985
|
}
|
|
42967
42986
|
get isDataRangeInvalid() {
|
|
@@ -44385,7 +44404,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44385
44404
|
});
|
|
44386
44405
|
}
|
|
44387
44406
|
get designErrorMessages() {
|
|
44388
|
-
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
|
|
44407
|
+
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
44389
44408
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
44390
44409
|
}
|
|
44391
44410
|
get isRangeMinInvalid() {
|
|
@@ -44721,7 +44740,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44721
44740
|
const cancelledReasons = [
|
|
44722
44741
|
...(this.state.keyValueDispatchResult?.reasons || []),
|
|
44723
44742
|
...(this.state.baselineDispatchResult?.reasons || []),
|
|
44724
|
-
];
|
|
44743
|
+
].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
44725
44744
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
44726
44745
|
}
|
|
44727
44746
|
get isKeyValueInvalid() {
|
|
@@ -50326,8 +50345,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50326
50345
|
}
|
|
50327
50346
|
const change = applyChange(range);
|
|
50328
50347
|
switch (change.changeType) {
|
|
50329
|
-
case "NONE":
|
|
50330
|
-
return range;
|
|
50331
50348
|
case "REMOVE":
|
|
50332
50349
|
return undefined;
|
|
50333
50350
|
default:
|
|
@@ -57390,7 +57407,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57390
57407
|
* @param sheetId an sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
|
|
57391
57408
|
* @param sheetName couple of old and new sheet names to adapt ranges pointing to that sheet
|
|
57392
57409
|
*/
|
|
57393
|
-
adaptRanges(
|
|
57410
|
+
adaptRanges(rangeAdapterFunctions, sheetId, sheetName) { }
|
|
57394
57411
|
/**
|
|
57395
57412
|
* Implement this method to clean unused external resources, such as images
|
|
57396
57413
|
* stored on a server which have been deleted.
|
|
@@ -57986,7 +58003,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57986
58003
|
];
|
|
57987
58004
|
nextId = 1;
|
|
57988
58005
|
cells = {};
|
|
57989
|
-
adaptRanges(applyChange, sheetId, sheetName) {
|
|
58006
|
+
adaptRanges({ applyChange }, sheetId, sheetName) {
|
|
57990
58007
|
for (const sheet of Object.keys(this.cells)) {
|
|
57991
58008
|
for (const cell of Object.values(this.cells[sheet] || {})) {
|
|
57992
58009
|
if (cell.isFormula) {
|
|
@@ -58208,7 +58225,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58208
58225
|
for (const position of positions) {
|
|
58209
58226
|
const cell = this.getters.getCell(position);
|
|
58210
58227
|
const xc = toXC(position.col, position.row);
|
|
58211
|
-
const style = this.
|
|
58228
|
+
const style = this.extractCustomStyle(cell);
|
|
58212
58229
|
if (Object.keys(style).length) {
|
|
58213
58230
|
const styleId = getItemId(style, styles);
|
|
58214
58231
|
positionsByStyle[styleId] ??= [];
|
|
@@ -58254,10 +58271,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58254
58271
|
}
|
|
58255
58272
|
}
|
|
58256
58273
|
}
|
|
58257
|
-
|
|
58258
|
-
const cleanedStyle = { ...style };
|
|
58259
|
-
|
|
58260
|
-
|
|
58274
|
+
extractCustomStyle(cell) {
|
|
58275
|
+
const cleanedStyle = { ...cell.style };
|
|
58276
|
+
const defaultStyle = isNumber(cell.content, DEFAULT_LOCALE)
|
|
58277
|
+
? DEFAULT_NUMBER_STYLE
|
|
58278
|
+
: DEFAULT_STYLE;
|
|
58279
|
+
for (const property in cleanedStyle) {
|
|
58280
|
+
if ((property !== "align" || !cell.isFormula) &&
|
|
58281
|
+
cleanedStyle[property] === defaultStyle[property]) {
|
|
58261
58282
|
delete cleanedStyle[property];
|
|
58262
58283
|
}
|
|
58263
58284
|
}
|
|
@@ -58607,9 +58628,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58607
58628
|
charts = {};
|
|
58608
58629
|
createChart = chartFactory(this.getters);
|
|
58609
58630
|
validateChartDefinition = (cmd) => validateChartDefinition(this, cmd.definition);
|
|
58610
|
-
adaptRanges(
|
|
58631
|
+
adaptRanges(rangeAdapters) {
|
|
58611
58632
|
for (const [chartId, chart] of Object.entries(this.charts)) {
|
|
58612
|
-
this.history.update("charts", chartId, chart?.updateRanges(
|
|
58633
|
+
this.history.update("charts", chartId, chart?.updateRanges(rangeAdapters));
|
|
58613
58634
|
}
|
|
58614
58635
|
}
|
|
58615
58636
|
// ---------------------------------------------------------------------------
|
|
@@ -58799,7 +58820,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58799
58820
|
"getAdaptedCfRanges",
|
|
58800
58821
|
];
|
|
58801
58822
|
cfRules = {};
|
|
58802
|
-
adaptCFFormulas(applyChange) {
|
|
58823
|
+
adaptCFFormulas({ applyChange, adaptFormulaString }) {
|
|
58803
58824
|
for (const sheetId in this.cfRules) {
|
|
58804
58825
|
for (const rule of this.cfRules[sheetId]) {
|
|
58805
58826
|
if (rule.rule.type === "DataBarRule" && rule.rule.rangeValues) {
|
|
@@ -58823,7 +58844,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58823
58844
|
for (let i = 0; i < rule.rule.values.length; i++) {
|
|
58824
58845
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
58825
58846
|
//@ts-expect-error
|
|
58826
|
-
"values", i,
|
|
58847
|
+
"values", i, adaptFormulaString(sheetId, rule.rule.values[i]));
|
|
58827
58848
|
}
|
|
58828
58849
|
}
|
|
58829
58850
|
else if (rule.rule.type === "IconSetRule") {
|
|
@@ -58831,7 +58852,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58831
58852
|
if (rule.rule[inflectionPoint].type === "formula") {
|
|
58832
58853
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
58833
58854
|
//@ts-expect-error
|
|
58834
|
-
inflectionPoint, "value",
|
|
58855
|
+
inflectionPoint, "value", adaptFormulaString(sheetId, rule.rule[inflectionPoint].value));
|
|
58835
58856
|
}
|
|
58836
58857
|
}
|
|
58837
58858
|
}
|
|
@@ -58841,14 +58862,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58841
58862
|
if (ruleValue?.type === "formula" && ruleValue?.value) {
|
|
58842
58863
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
58843
58864
|
//@ts-expect-error
|
|
58844
|
-
value, "value",
|
|
58865
|
+
value, "value", adaptFormulaString(sheetId, ruleValue.value));
|
|
58845
58866
|
}
|
|
58846
58867
|
}
|
|
58847
58868
|
}
|
|
58848
58869
|
}
|
|
58849
58870
|
}
|
|
58850
58871
|
}
|
|
58851
|
-
adaptCFRanges(sheetId, applyChange) {
|
|
58872
|
+
adaptCFRanges(sheetId, { applyChange }) {
|
|
58852
58873
|
for (const rule of this.cfRules[sheetId]) {
|
|
58853
58874
|
for (const range of rule.ranges) {
|
|
58854
58875
|
const change = applyChange(range);
|
|
@@ -58872,12 +58893,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58872
58893
|
}
|
|
58873
58894
|
}
|
|
58874
58895
|
}
|
|
58875
|
-
adaptRanges(
|
|
58896
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
58876
58897
|
const sheetIds = sheetId ? [sheetId] : Object.keys(this.cfRules);
|
|
58877
58898
|
for (const sheetId of sheetIds) {
|
|
58878
|
-
this.adaptCFRanges(sheetId,
|
|
58899
|
+
this.adaptCFRanges(sheetId, rangeAdapters);
|
|
58879
58900
|
}
|
|
58880
|
-
this.adaptCFFormulas(
|
|
58901
|
+
this.adaptCFFormulas(rangeAdapters);
|
|
58881
58902
|
}
|
|
58882
58903
|
// ---------------------------------------------------------------------------
|
|
58883
58904
|
// Command Handling
|
|
@@ -59268,23 +59289,23 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59268
59289
|
"getValidationRuleForCell",
|
|
59269
59290
|
];
|
|
59270
59291
|
rules = {};
|
|
59271
|
-
adaptRanges(
|
|
59272
|
-
this.adaptDVRanges(sheetId,
|
|
59273
|
-
this.adaptDVFormulas(
|
|
59292
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
59293
|
+
this.adaptDVRanges(sheetId, rangeAdapters);
|
|
59294
|
+
this.adaptDVFormulas(rangeAdapters);
|
|
59274
59295
|
}
|
|
59275
|
-
adaptDVFormulas(
|
|
59296
|
+
adaptDVFormulas({ adaptFormulaString }) {
|
|
59276
59297
|
for (const sheetId in this.rules) {
|
|
59277
59298
|
const rules = this.rules[sheetId];
|
|
59278
59299
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
59279
59300
|
const rule = this.rules[sheetId][ruleIndex];
|
|
59280
59301
|
for (let valueIndex = 0; valueIndex < rule.criterion.values.length; valueIndex++) {
|
|
59281
|
-
const value =
|
|
59302
|
+
const value = adaptFormulaString(sheetId, rule.criterion.values[valueIndex]);
|
|
59282
59303
|
this.history.update("rules", sheetId, ruleIndex, "criterion", "values", valueIndex, value);
|
|
59283
59304
|
}
|
|
59284
59305
|
}
|
|
59285
59306
|
}
|
|
59286
59307
|
}
|
|
59287
|
-
adaptDVRanges(sheetId, applyChange) {
|
|
59308
|
+
adaptDVRanges(sheetId, { applyChange }) {
|
|
59288
59309
|
const rules = this.rules[sheetId];
|
|
59289
59310
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
59290
59311
|
const rule = this.rules[sheetId][ruleIndex];
|
|
@@ -59558,7 +59579,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59558
59579
|
// ---------------------------------------------------------------------------
|
|
59559
59580
|
// Command Handling
|
|
59560
59581
|
// ---------------------------------------------------------------------------
|
|
59561
|
-
adaptRanges(applyChange, sheetId) {
|
|
59582
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
59562
59583
|
for (const figure of this.getFigures(sheetId)) {
|
|
59563
59584
|
const change = applyChange(this.getters.getRangeFromZone(sheetId, {
|
|
59564
59585
|
left: figure.col,
|
|
@@ -60365,8 +60386,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60365
60386
|
break;
|
|
60366
60387
|
}
|
|
60367
60388
|
}
|
|
60368
|
-
adaptRanges(
|
|
60369
|
-
this.applyRangeChangeOnSheet(sheetId,
|
|
60389
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
60390
|
+
this.applyRangeChangeOnSheet(sheetId, rangeAdapters);
|
|
60370
60391
|
}
|
|
60371
60392
|
// ---------------------------------------------------------------------------
|
|
60372
60393
|
// Getters
|
|
@@ -60671,7 +60692,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60671
60692
|
/**
|
|
60672
60693
|
* Apply a range change on merges of a particular sheet.
|
|
60673
60694
|
*/
|
|
60674
|
-
applyRangeChangeOnSheet(sheetId, applyChange) {
|
|
60695
|
+
applyRangeChangeOnSheet(sheetId, { applyChange }) {
|
|
60675
60696
|
const merges = Object.entries(this.merges[sheetId] || {});
|
|
60676
60697
|
for (const [mergeId, range] of merges) {
|
|
60677
60698
|
if (range) {
|
|
@@ -60745,7 +60766,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60745
60766
|
};
|
|
60746
60767
|
}
|
|
60747
60768
|
|
|
60748
|
-
class
|
|
60769
|
+
class RangeAdapterPlugin {
|
|
60749
60770
|
getters;
|
|
60750
60771
|
providers = [];
|
|
60751
60772
|
isAdaptingRanges = false;
|
|
@@ -60753,7 +60774,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60753
60774
|
this.getters = getters;
|
|
60754
60775
|
}
|
|
60755
60776
|
static getters = [
|
|
60756
|
-
"adaptFormulaStringDependencies",
|
|
60757
60777
|
"copyFormulaStringForSheet",
|
|
60758
60778
|
"extendRange",
|
|
60759
60779
|
"getRangeString",
|
|
@@ -60784,8 +60804,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60784
60804
|
throw new Error("Plugins cannot dispatch commands during adaptRanges phase");
|
|
60785
60805
|
}
|
|
60786
60806
|
const rangeAdapter = getRangeAdapter(cmd);
|
|
60787
|
-
if (rangeAdapter
|
|
60788
|
-
this.executeOnAllRanges(rangeAdapter
|
|
60807
|
+
if (rangeAdapter) {
|
|
60808
|
+
this.executeOnAllRanges(rangeAdapter);
|
|
60789
60809
|
}
|
|
60790
60810
|
}
|
|
60791
60811
|
finalize() { }
|
|
@@ -60804,11 +60824,15 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60804
60824
|
return result;
|
|
60805
60825
|
};
|
|
60806
60826
|
}
|
|
60807
|
-
executeOnAllRanges(
|
|
60827
|
+
executeOnAllRanges(rangeAdapter) {
|
|
60808
60828
|
this.isAdaptingRanges = true;
|
|
60809
|
-
const
|
|
60829
|
+
const adapterFunctions = {
|
|
60830
|
+
applyChange: this.verifyRangeRemoved(rangeAdapter.applyChange),
|
|
60831
|
+
adaptRangeString: (defaultSheetId, sheetXC) => adaptStringRange(defaultSheetId, sheetXC, rangeAdapter),
|
|
60832
|
+
adaptFormulaString: (defaultSheetId, formula) => adaptFormulaStringRanges(defaultSheetId, formula, rangeAdapter),
|
|
60833
|
+
};
|
|
60810
60834
|
for (const provider of this.providers) {
|
|
60811
|
-
provider(
|
|
60835
|
+
provider(adapterFunctions, rangeAdapter.sheetId, rangeAdapter.sheetName);
|
|
60812
60836
|
}
|
|
60813
60837
|
this.isAdaptingRanges = false;
|
|
60814
60838
|
}
|
|
@@ -60976,18 +61000,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60976
61000
|
const unionOfZones = unionUnboundedZones(...zones);
|
|
60977
61001
|
return this.getRangeFromZone(ranges[0].sheetId, unionOfZones);
|
|
60978
61002
|
}
|
|
60979
|
-
adaptFormulaStringDependencies(sheetId, formula, applyChange) {
|
|
60980
|
-
if (!formula.startsWith("=")) {
|
|
60981
|
-
return formula;
|
|
60982
|
-
}
|
|
60983
|
-
const compiledFormula = compile(formula);
|
|
60984
|
-
const updatedDependencies = compiledFormula.dependencies.map((dep) => {
|
|
60985
|
-
const range = this.getters.getRangeFromSheetXC(sheetId, dep);
|
|
60986
|
-
const changedRange = applyChange(range);
|
|
60987
|
-
return changedRange.changeType === "NONE" ? range : changedRange.range;
|
|
60988
|
-
});
|
|
60989
|
-
return this.getters.getFormulaString(sheetId, compiledFormula.tokens, updatedDependencies);
|
|
60990
|
-
}
|
|
60991
61003
|
/**
|
|
60992
61004
|
* Copy a formula string to another sheet.
|
|
60993
61005
|
*
|
|
@@ -61880,7 +61892,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61880
61892
|
static getters = ["getCoreTable", "getCoreTables", "getCoreTableMatchingTopLeft"];
|
|
61881
61893
|
tables = {};
|
|
61882
61894
|
nextTableId = 1;
|
|
61883
|
-
adaptRanges(applyChange, sheetId) {
|
|
61895
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
61884
61896
|
for (const table of this.getCoreTables(sheetId)) {
|
|
61885
61897
|
this.applyRangeChangeOnTable(sheetId, table, applyChange);
|
|
61886
61898
|
}
|
|
@@ -62846,7 +62858,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62846
62858
|
}
|
|
62847
62859
|
}
|
|
62848
62860
|
}
|
|
62849
|
-
adaptRanges(applyChange) {
|
|
62861
|
+
adaptRanges({ applyChange, adaptFormulaString }) {
|
|
62850
62862
|
for (const pivotId in this.pivots) {
|
|
62851
62863
|
const definition = deepCopy(this.pivots[pivotId]?.definition);
|
|
62852
62864
|
if (!definition) {
|
|
@@ -62866,19 +62878,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62866
62878
|
continue;
|
|
62867
62879
|
}
|
|
62868
62880
|
const sheetId = measure.computedBy.sheetId;
|
|
62869
|
-
const compiledFormula = this.compiledMeasureFormulas[pivotId][measureId]
|
|
62870
|
-
|
|
62871
|
-
|
|
62872
|
-
|
|
62873
|
-
|
|
62874
|
-
newDependencies.push(range);
|
|
62875
|
-
}
|
|
62876
|
-
else {
|
|
62877
|
-
newDependencies.push(change.range);
|
|
62878
|
-
}
|
|
62879
|
-
}
|
|
62880
|
-
const newFormulaString = this.getters.getFormulaString(sheetId, compiledFormula.tokens, newDependencies);
|
|
62881
|
+
const { formula: compiledFormula, dependencies: indirectDependencies } = this.compiledMeasureFormulas[pivotId][measureId];
|
|
62882
|
+
// adapt direct dependencies
|
|
62883
|
+
this.history.update("compiledMeasureFormulas", pivotId, measureId, "formula", "dependencies", compiledFormula.dependencies.map((range) => applyChange(range).range));
|
|
62884
|
+
// adapt all dependencies (including indirect)
|
|
62885
|
+
this.history.update("compiledMeasureFormulas", pivotId, measure.id, "dependencies", indirectDependencies.map((range) => applyChange(range).range));
|
|
62881
62886
|
const oldFormulaString = measure.computedBy.formula;
|
|
62887
|
+
const newFormulaString = adaptFormulaString(sheetId, oldFormulaString);
|
|
62882
62888
|
if (newFormulaString !== oldFormulaString) {
|
|
62883
62889
|
this.replaceMeasureFormula(pivotId, measure, newFormulaString);
|
|
62884
62890
|
}
|
|
@@ -63043,7 +63049,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
63043
63049
|
formula: newFormulaString,
|
|
63044
63050
|
sheetId: measure.computedBy.sheetId,
|
|
63045
63051
|
});
|
|
63046
|
-
this.compileCalculatedMeasures(pivotId, pivot.definition.measures);
|
|
63047
63052
|
}
|
|
63048
63053
|
checkSortedColumnInMeasures(definition) {
|
|
63049
63054
|
definition = this.repairSortedColumn(definition);
|
|
@@ -64448,11 +64453,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64448
64453
|
return this.arrayFormulasToResults.get(formulasPosition);
|
|
64449
64454
|
}
|
|
64450
64455
|
/**
|
|
64451
|
-
* Remove a
|
|
64456
|
+
* Remove a spreading relation for a given array formula position
|
|
64457
|
+
* and its result zone
|
|
64452
64458
|
*/
|
|
64453
64459
|
removeNode(position) {
|
|
64460
|
+
const resultZone = this.arrayFormulasToResults.get(position);
|
|
64461
|
+
if (!resultZone) {
|
|
64462
|
+
return;
|
|
64463
|
+
}
|
|
64454
64464
|
this.resultsToArrayFormulas.remove({
|
|
64455
|
-
boundingBox: { sheetId: position.sheetId, zone:
|
|
64465
|
+
boundingBox: { sheetId: position.sheetId, zone: resultZone },
|
|
64456
64466
|
data: position,
|
|
64457
64467
|
});
|
|
64458
64468
|
this.arrayFormulasToResults.delete(position);
|
|
@@ -64740,6 +64750,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64740
64750
|
// empty matrix
|
|
64741
64751
|
return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
|
|
64742
64752
|
}
|
|
64753
|
+
if (nbRows === 1 && nbColumns === 1) {
|
|
64754
|
+
// single value matrix
|
|
64755
|
+
return createEvaluatedCell(nullValueToZeroValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
|
|
64756
|
+
}
|
|
64743
64757
|
const resultZone = {
|
|
64744
64758
|
top: formulaPosition.row,
|
|
64745
64759
|
bottom: formulaPosition.row + nbRows - 1,
|
|
@@ -66165,6 +66179,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66165
66179
|
handle(cmd) {
|
|
66166
66180
|
switch (cmd.type) {
|
|
66167
66181
|
case "START":
|
|
66182
|
+
case "UPDATE_LOCALE":
|
|
66168
66183
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
66169
66184
|
this.initializeSheet(sheetId);
|
|
66170
66185
|
}
|
|
@@ -66286,7 +66301,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66286
66301
|
}
|
|
66287
66302
|
const cell = this.getters.getCell(position);
|
|
66288
66303
|
const colSize = this.getters.getColSize(position.sheetId, position.col);
|
|
66289
|
-
return getDefaultCellHeight(this.ctx, cell, colSize);
|
|
66304
|
+
return getDefaultCellHeight(this.ctx, cell, this.getters.getLocale(), colSize);
|
|
66290
66305
|
}
|
|
66291
66306
|
isInMultiRowMerge(position) {
|
|
66292
66307
|
const merge = this.getters.getMerge(position);
|
|
@@ -68175,7 +68190,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68175
68190
|
cmd.cf.rule = {
|
|
68176
68191
|
...rule,
|
|
68177
68192
|
rangeValues: rule.rangeValues
|
|
68178
|
-
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange)
|
|
68193
|
+
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange).range
|
|
68179
68194
|
: undefined,
|
|
68180
68195
|
};
|
|
68181
68196
|
}
|
|
@@ -79662,6 +79677,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
79662
79677
|
if (style.alignment && style.alignment.wrapText) {
|
|
79663
79678
|
alignAttrs.push(["wrapText", "1"]);
|
|
79664
79679
|
}
|
|
79680
|
+
if (style.alignment && style.alignment.shrinkToFit) {
|
|
79681
|
+
alignAttrs.push(["shrinkToFit", "1"]);
|
|
79682
|
+
}
|
|
79665
79683
|
if (alignAttrs.length > 0) {
|
|
79666
79684
|
attributes.push(["applyAlignment", "1"]); // for Libre Office
|
|
79667
79685
|
styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
|
|
@@ -80432,7 +80450,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
80432
80450
|
this.config = this.setupConfig(config);
|
|
80433
80451
|
this.session = this.setupSession(workbookData.revisionId);
|
|
80434
80452
|
this.coreGetters = {};
|
|
80435
|
-
this.range = new
|
|
80453
|
+
this.range = new RangeAdapterPlugin(this.coreGetters);
|
|
80436
80454
|
this.coreGetters.getRangeString = this.range.getRangeString.bind(this.range);
|
|
80437
80455
|
this.coreGetters.getRangeFromSheetXC = this.range.getRangeFromSheetXC.bind(this.range);
|
|
80438
80456
|
this.coreGetters.createAdaptedRanges = this.range.createAdaptedRanges.bind(this.range);
|
|
@@ -80446,8 +80464,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
80446
80464
|
this.coreGetters.extendRange = this.range.extendRange.bind(this.range);
|
|
80447
80465
|
this.coreGetters.getRangesUnion = this.range.getRangesUnion.bind(this.range);
|
|
80448
80466
|
this.coreGetters.removeRangesSheetPrefix = this.range.removeRangesSheetPrefix.bind(this.range);
|
|
80449
|
-
this.coreGetters.adaptFormulaStringDependencies =
|
|
80450
|
-
this.range.adaptFormulaStringDependencies.bind(this.range);
|
|
80451
80467
|
this.coreGetters.copyFormulaStringForSheet = this.range.copyFormulaStringForSheet.bind(this.range);
|
|
80452
80468
|
this.getters = {
|
|
80453
80469
|
isReadonly: () => this.config.mode === "readonly" || this.config.mode === "dashboard",
|
|
@@ -81163,9 +81179,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
81163
81179
|
exports.tokenize = tokenize;
|
|
81164
81180
|
|
|
81165
81181
|
|
|
81166
|
-
__info__.version = "18.3.
|
|
81167
|
-
__info__.date = "2026-01-
|
|
81168
|
-
__info__.hash = "
|
|
81182
|
+
__info__.version = "18.3.33";
|
|
81183
|
+
__info__.date = "2026-01-21T11:05:17.933Z";
|
|
81184
|
+
__info__.hash = "b7e5d91";
|
|
81169
81185
|
|
|
81170
81186
|
|
|
81171
81187
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|