@odoo/o-spreadsheet 18.4.24 → 18.4.25
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 +215 -199
- package/dist/o-spreadsheet.d.ts +223 -217
- package/dist/o-spreadsheet.esm.js +215 -199
- package/dist/o-spreadsheet.iife.js +215 -199
- package/dist/o-spreadsheet.iife.min.js +416 -416
- 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.4.
|
|
6
|
-
* @date 2026-01-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.4.25
|
|
6
|
+
* @date 2026-01-21T11:06:11.131Z
|
|
7
|
+
* @hash 161472d
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -41,7 +41,8 @@
|
|
|
41
41
|
return children
|
|
42
42
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
43
43
|
.flat()
|
|
44
|
-
.map(createAction)
|
|
44
|
+
.map(createAction)
|
|
45
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
45
46
|
}
|
|
46
47
|
: () => [],
|
|
47
48
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
@@ -333,6 +334,7 @@
|
|
|
333
334
|
fillColor: "",
|
|
334
335
|
textColor: "",
|
|
335
336
|
};
|
|
337
|
+
const DEFAULT_NUMBER_STYLE = { ...DEFAULT_STYLE, align: "right" };
|
|
336
338
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
337
339
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
338
340
|
// Fonts
|
|
@@ -6386,67 +6388,6 @@
|
|
|
6386
6388
|
return sheetName !== undefined ? `${getCanonicalSymbolName(sheetName)}!${xc}` : xc;
|
|
6387
6389
|
}
|
|
6388
6390
|
|
|
6389
|
-
function createDefaultRows(rowNumber) {
|
|
6390
|
-
const rows = [];
|
|
6391
|
-
for (let i = 0; i < rowNumber; i++) {
|
|
6392
|
-
const row = {
|
|
6393
|
-
cells: {},
|
|
6394
|
-
};
|
|
6395
|
-
rows.push(row);
|
|
6396
|
-
}
|
|
6397
|
-
return rows;
|
|
6398
|
-
}
|
|
6399
|
-
function moveHeaderIndexesOnHeaderAddition(indexHeaderAdded, numberAdded, headers) {
|
|
6400
|
-
return headers.map((header) => {
|
|
6401
|
-
if (header >= indexHeaderAdded) {
|
|
6402
|
-
return header + numberAdded;
|
|
6403
|
-
}
|
|
6404
|
-
return header;
|
|
6405
|
-
});
|
|
6406
|
-
}
|
|
6407
|
-
function moveHeaderIndexesOnHeaderDeletion(deletedHeaders, headers) {
|
|
6408
|
-
deletedHeaders = [...deletedHeaders].sort((a, b) => b - a);
|
|
6409
|
-
return headers
|
|
6410
|
-
.map((header) => {
|
|
6411
|
-
for (const deletedHeader of deletedHeaders) {
|
|
6412
|
-
if (header > deletedHeader) {
|
|
6413
|
-
header--;
|
|
6414
|
-
}
|
|
6415
|
-
else if (header === deletedHeader) {
|
|
6416
|
-
return undefined;
|
|
6417
|
-
}
|
|
6418
|
-
}
|
|
6419
|
-
return header;
|
|
6420
|
-
})
|
|
6421
|
-
.filter(isDefined);
|
|
6422
|
-
}
|
|
6423
|
-
function getNextSheetName(existingNames, baseName = "Sheet") {
|
|
6424
|
-
let i = 1;
|
|
6425
|
-
let name = `${baseName}${i}`;
|
|
6426
|
-
while (existingNames.includes(name)) {
|
|
6427
|
-
name = `${baseName}${i}`;
|
|
6428
|
-
i++;
|
|
6429
|
-
}
|
|
6430
|
-
return name;
|
|
6431
|
-
}
|
|
6432
|
-
function getDuplicateSheetName(nameToDuplicate, existingNames) {
|
|
6433
|
-
let i = 1;
|
|
6434
|
-
const baseName = _t("Copy of %s", nameToDuplicate);
|
|
6435
|
-
let name = baseName.toString();
|
|
6436
|
-
while (existingNames.includes(name)) {
|
|
6437
|
-
name = `${baseName} (${i})`;
|
|
6438
|
-
i++;
|
|
6439
|
-
}
|
|
6440
|
-
return name;
|
|
6441
|
-
}
|
|
6442
|
-
function isSheetNameEqual(name1, name2) {
|
|
6443
|
-
if (name1 === undefined || name2 === undefined) {
|
|
6444
|
-
return false;
|
|
6445
|
-
}
|
|
6446
|
-
return (getUnquotedSheetName(name1.trim().toUpperCase()) ===
|
|
6447
|
-
getUnquotedSheetName(name2.trim().toUpperCase()));
|
|
6448
|
-
}
|
|
6449
|
-
|
|
6450
6391
|
function createRange(args, getSheetSize) {
|
|
6451
6392
|
const unboundedZone = args.zone;
|
|
6452
6393
|
const zone = boundUnboundedZone(unboundedZone, getSheetSize(args.sheetId));
|
|
@@ -6690,8 +6631,8 @@
|
|
|
6690
6631
|
elements.sort((a, b) => b - a);
|
|
6691
6632
|
const groups = groupConsecutive(elements);
|
|
6692
6633
|
return (range) => {
|
|
6693
|
-
if (
|
|
6694
|
-
return { changeType: "NONE" };
|
|
6634
|
+
if (range.sheetId !== cmd.sheetId) {
|
|
6635
|
+
return { changeType: "NONE", range };
|
|
6695
6636
|
}
|
|
6696
6637
|
let newRange = range;
|
|
6697
6638
|
let changeType = "NONE";
|
|
@@ -6718,10 +6659,7 @@
|
|
|
6718
6659
|
newRange = createAdaptedRange(newRange, dimension, changeType, -(max - min + 1));
|
|
6719
6660
|
}
|
|
6720
6661
|
}
|
|
6721
|
-
|
|
6722
|
-
return { changeType, range: newRange };
|
|
6723
|
-
}
|
|
6724
|
-
return { changeType: "NONE" };
|
|
6662
|
+
return { changeType, range: newRange };
|
|
6725
6663
|
};
|
|
6726
6664
|
}
|
|
6727
6665
|
function getApplyRangeChangeAddColRow(cmd) {
|
|
@@ -6730,7 +6668,7 @@
|
|
|
6730
6668
|
const dimension = cmd.dimension === "COL" ? "columns" : "rows";
|
|
6731
6669
|
return (range) => {
|
|
6732
6670
|
if (range.sheetId !== cmd.sheetId) {
|
|
6733
|
-
return { changeType: "NONE" };
|
|
6671
|
+
return { changeType: "NONE", range };
|
|
6734
6672
|
}
|
|
6735
6673
|
if (cmd.position === "after") {
|
|
6736
6674
|
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) {
|
|
@@ -6760,13 +6698,13 @@
|
|
|
6760
6698
|
};
|
|
6761
6699
|
}
|
|
6762
6700
|
}
|
|
6763
|
-
return { changeType: "NONE" };
|
|
6701
|
+
return { changeType: "NONE", range };
|
|
6764
6702
|
};
|
|
6765
6703
|
}
|
|
6766
6704
|
function getApplyRangeChangeDeleteSheet(cmd) {
|
|
6767
6705
|
return (range) => {
|
|
6768
6706
|
if (range.sheetId !== cmd.sheetId && range.invalidSheetName !== cmd.sheetName) {
|
|
6769
|
-
return { changeType: "NONE" };
|
|
6707
|
+
return { changeType: "NONE", range };
|
|
6770
6708
|
}
|
|
6771
6709
|
const invalidSheetName = cmd.sheetName;
|
|
6772
6710
|
range = {
|
|
@@ -6793,14 +6731,14 @@
|
|
|
6793
6731
|
const newRange = { ...range, sheetId, invalidSheetName };
|
|
6794
6732
|
return { changeType: "CHANGE", range: newRange };
|
|
6795
6733
|
}
|
|
6796
|
-
return { changeType: "NONE" };
|
|
6734
|
+
return { changeType: "NONE", range };
|
|
6797
6735
|
};
|
|
6798
6736
|
}
|
|
6799
6737
|
function getApplyRangeChangeMoveRange(cmd) {
|
|
6800
6738
|
const originZone = cmd.target[0];
|
|
6801
6739
|
return (range) => {
|
|
6802
6740
|
if (range.sheetId !== cmd.sheetId || !isZoneInside(range.zone, originZone)) {
|
|
6803
|
-
return { changeType: "NONE" };
|
|
6741
|
+
return { changeType: "NONE", range };
|
|
6804
6742
|
}
|
|
6805
6743
|
const targetSheetId = cmd.targetSheetId;
|
|
6806
6744
|
const offsetX = cmd.col - originZone.left;
|
|
@@ -6897,17 +6835,87 @@
|
|
|
6897
6835
|
return results.map((r) => r.elem);
|
|
6898
6836
|
}
|
|
6899
6837
|
|
|
6838
|
+
function createDefaultRows(rowNumber) {
|
|
6839
|
+
const rows = [];
|
|
6840
|
+
for (let i = 0; i < rowNumber; i++) {
|
|
6841
|
+
const row = {
|
|
6842
|
+
cells: {},
|
|
6843
|
+
};
|
|
6844
|
+
rows.push(row);
|
|
6845
|
+
}
|
|
6846
|
+
return rows;
|
|
6847
|
+
}
|
|
6848
|
+
function moveHeaderIndexesOnHeaderAddition(indexHeaderAdded, numberAdded, headers) {
|
|
6849
|
+
return headers.map((header) => {
|
|
6850
|
+
if (header >= indexHeaderAdded) {
|
|
6851
|
+
return header + numberAdded;
|
|
6852
|
+
}
|
|
6853
|
+
return header;
|
|
6854
|
+
});
|
|
6855
|
+
}
|
|
6856
|
+
function moveHeaderIndexesOnHeaderDeletion(deletedHeaders, headers) {
|
|
6857
|
+
deletedHeaders = [...deletedHeaders].sort((a, b) => b - a);
|
|
6858
|
+
return headers
|
|
6859
|
+
.map((header) => {
|
|
6860
|
+
for (const deletedHeader of deletedHeaders) {
|
|
6861
|
+
if (header > deletedHeader) {
|
|
6862
|
+
header--;
|
|
6863
|
+
}
|
|
6864
|
+
else if (header === deletedHeader) {
|
|
6865
|
+
return undefined;
|
|
6866
|
+
}
|
|
6867
|
+
}
|
|
6868
|
+
return header;
|
|
6869
|
+
})
|
|
6870
|
+
.filter(isDefined);
|
|
6871
|
+
}
|
|
6872
|
+
function getNextSheetName(existingNames, baseName = "Sheet") {
|
|
6873
|
+
let i = 1;
|
|
6874
|
+
let name = `${baseName}${i}`;
|
|
6875
|
+
while (existingNames.includes(name)) {
|
|
6876
|
+
name = `${baseName}${i}`;
|
|
6877
|
+
i++;
|
|
6878
|
+
}
|
|
6879
|
+
return name;
|
|
6880
|
+
}
|
|
6881
|
+
function getDuplicateSheetName(nameToDuplicate, existingNames) {
|
|
6882
|
+
let i = 1;
|
|
6883
|
+
const baseName = _t("Copy of %s", nameToDuplicate);
|
|
6884
|
+
let name = baseName.toString();
|
|
6885
|
+
while (existingNames.includes(name)) {
|
|
6886
|
+
name = `${baseName} (${i})`;
|
|
6887
|
+
i++;
|
|
6888
|
+
}
|
|
6889
|
+
return name;
|
|
6890
|
+
}
|
|
6891
|
+
function isSheetNameEqual(name1, name2) {
|
|
6892
|
+
if (name1 === undefined || name2 === undefined) {
|
|
6893
|
+
return false;
|
|
6894
|
+
}
|
|
6895
|
+
return (getUnquotedSheetName(name1.trim().toUpperCase()) ===
|
|
6896
|
+
getUnquotedSheetName(name2.trim().toUpperCase()));
|
|
6897
|
+
}
|
|
6898
|
+
|
|
6900
6899
|
function computeTextLinesHeight(textLineHeight, numberOfLines = 1) {
|
|
6901
6900
|
return numberOfLines * (textLineHeight + MIN_CELL_TEXT_MARGIN) - MIN_CELL_TEXT_MARGIN;
|
|
6902
6901
|
}
|
|
6903
6902
|
/**
|
|
6904
6903
|
* Get the default height of the cell given its style.
|
|
6905
6904
|
*/
|
|
6906
|
-
function getDefaultCellHeight(ctx, cell, colSize) {
|
|
6905
|
+
function getDefaultCellHeight(ctx, cell, locale, colSize) {
|
|
6907
6906
|
if (!cell || (!cell.isFormula && !cell.content)) {
|
|
6908
6907
|
return DEFAULT_CELL_HEIGHT;
|
|
6909
6908
|
}
|
|
6910
|
-
|
|
6909
|
+
let content = "";
|
|
6910
|
+
try {
|
|
6911
|
+
if (!cell.isFormula) {
|
|
6912
|
+
const localeFormat = { format: cell.format, locale };
|
|
6913
|
+
content = formatValue(parseLiteral(cell.content, locale), localeFormat);
|
|
6914
|
+
}
|
|
6915
|
+
}
|
|
6916
|
+
catch {
|
|
6917
|
+
content = CellErrorType.GenericError;
|
|
6918
|
+
}
|
|
6911
6919
|
return getCellContentHeight(ctx, content, cell.style, colSize);
|
|
6912
6920
|
}
|
|
6913
6921
|
function getCellContentHeight(ctx, content, style, colSize) {
|
|
@@ -20988,7 +20996,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20988
20996
|
}
|
|
20989
20997
|
acceptToVectorize.push(!argDefinition.acceptMatrix);
|
|
20990
20998
|
}
|
|
20991
|
-
return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
|
|
20999
|
+
return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
|
|
21000
|
+
}
|
|
21001
|
+
function replaceErrorPlaceholderInResult(result) {
|
|
21002
|
+
if (!isMatrix(result)) {
|
|
21003
|
+
replaceFunctionNamePlaceholder(result, descr.name);
|
|
21004
|
+
}
|
|
21005
|
+
else {
|
|
21006
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
21007
|
+
}
|
|
21008
|
+
return result;
|
|
20992
21009
|
}
|
|
20993
21010
|
function errorHandlingCompute(...args) {
|
|
20994
21011
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -21017,13 +21034,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
21017
21034
|
const result = descr.compute.apply(this, args);
|
|
21018
21035
|
if (!isMatrix(result)) {
|
|
21019
21036
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
21020
|
-
replaceFunctionNamePlaceholder(result, descr.name);
|
|
21021
21037
|
return result;
|
|
21022
21038
|
}
|
|
21039
|
+
descr.name;
|
|
21023
21040
|
return { value: result };
|
|
21024
21041
|
}
|
|
21025
21042
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
21026
|
-
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
21027
21043
|
return result;
|
|
21028
21044
|
}
|
|
21029
21045
|
return matrixMap(result, (row) => ({ value: row }));
|
|
@@ -21475,7 +21491,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
21475
21491
|
continue;
|
|
21476
21492
|
}
|
|
21477
21493
|
const sheetXC = tokens[tokenIdx].value;
|
|
21478
|
-
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange);
|
|
21494
|
+
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange).range;
|
|
21479
21495
|
if (sheetXC !== newSheetXC) {
|
|
21480
21496
|
tokens[tokenIdx] = {
|
|
21481
21497
|
value: newSheetXC,
|
|
@@ -21485,23 +21501,30 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
21485
21501
|
}
|
|
21486
21502
|
return concat(tokens.map((token) => token.value));
|
|
21487
21503
|
}
|
|
21488
|
-
function adaptStringRange(defaultSheetId, sheetXC,
|
|
21504
|
+
function adaptStringRange(defaultSheetId, sheetXC, rangeAdapter) {
|
|
21489
21505
|
const sheetName = splitReference(sheetXC).sheetName;
|
|
21490
21506
|
if (sheetName
|
|
21491
|
-
? !isSheetNameEqual(sheetName,
|
|
21492
|
-
: defaultSheetId !==
|
|
21493
|
-
return sheetXC;
|
|
21507
|
+
? !isSheetNameEqual(sheetName, rangeAdapter.sheetName.old)
|
|
21508
|
+
: defaultSheetId !== rangeAdapter.sheetId) {
|
|
21509
|
+
return { changeType: "NONE", range: sheetXC };
|
|
21494
21510
|
}
|
|
21495
|
-
const sheetId = sheetName ?
|
|
21511
|
+
const sheetId = sheetName ? rangeAdapter.sheetId : defaultSheetId;
|
|
21496
21512
|
const range = getRange(sheetXC, sheetId);
|
|
21497
21513
|
if (range.invalidXc) {
|
|
21498
|
-
return sheetXC;
|
|
21514
|
+
return { changeType: "NONE", range: sheetXC };
|
|
21499
21515
|
}
|
|
21500
|
-
const change =
|
|
21516
|
+
const change = rangeAdapter.applyChange(range);
|
|
21501
21517
|
if (change.changeType === "NONE" || change.changeType === "REMOVE") {
|
|
21502
|
-
return sheetXC;
|
|
21518
|
+
return { changeType: change.changeType, range: sheetXC };
|
|
21519
|
+
}
|
|
21520
|
+
const rangeStr = getRangeString(change.range, defaultSheetId, getSheetNameGetter(rangeAdapter));
|
|
21521
|
+
if (rangeStr === CellErrorType.InvalidReference) {
|
|
21522
|
+
return { changeType: "REMOVE", range: rangeStr };
|
|
21503
21523
|
}
|
|
21504
|
-
return
|
|
21524
|
+
return {
|
|
21525
|
+
changeType: change.changeType,
|
|
21526
|
+
range: rangeStr,
|
|
21527
|
+
};
|
|
21505
21528
|
}
|
|
21506
21529
|
function getSheetNameGetter(applyChange) {
|
|
21507
21530
|
return (sheetId) => {
|
|
@@ -21606,8 +21629,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
21606
21629
|
}
|
|
21607
21630
|
const change = applyChange(range);
|
|
21608
21631
|
switch (change.changeType) {
|
|
21609
|
-
case "NONE":
|
|
21610
|
-
return range;
|
|
21611
21632
|
case "REMOVE":
|
|
21612
21633
|
return undefined;
|
|
21613
21634
|
default:
|
|
@@ -21759,16 +21780,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
21759
21780
|
function transformChartDefinitionWithDataSetsWithZone(chartSheetId, definition, applyChange) {
|
|
21760
21781
|
let labelRange;
|
|
21761
21782
|
if (definition.labelRange) {
|
|
21762
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
21763
|
-
if (
|
|
21783
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
21784
|
+
if (changeType !== "REMOVE") {
|
|
21764
21785
|
labelRange = adaptedRange;
|
|
21765
21786
|
}
|
|
21766
21787
|
}
|
|
21767
21788
|
const dataSets = [];
|
|
21768
21789
|
for (const dataSet of definition.dataSets) {
|
|
21769
21790
|
const newDataSet = { ...dataSet };
|
|
21770
|
-
const adaptedRange = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
21771
|
-
if (
|
|
21791
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
21792
|
+
if (changeType !== "REMOVE") {
|
|
21772
21793
|
newDataSet.dataRange = adaptedRange;
|
|
21773
21794
|
dataSets.push(newDataSet);
|
|
21774
21795
|
}
|
|
@@ -23146,14 +23167,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
23146
23167
|
let baseline;
|
|
23147
23168
|
let keyValue;
|
|
23148
23169
|
if (definition.baseline) {
|
|
23149
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
23150
|
-
if (
|
|
23170
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
23171
|
+
if (changeType !== "REMOVE") {
|
|
23151
23172
|
baseline = adaptedRange;
|
|
23152
23173
|
}
|
|
23153
23174
|
}
|
|
23154
23175
|
if (definition.keyValue) {
|
|
23155
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
23156
|
-
if (
|
|
23176
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
23177
|
+
if (changeType !== "REMOVE") {
|
|
23157
23178
|
keyValue = adaptedRange;
|
|
23158
23179
|
}
|
|
23159
23180
|
}
|
|
@@ -23210,7 +23231,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
23210
23231
|
// This kind of graph is not exportable in Excel
|
|
23211
23232
|
return undefined;
|
|
23212
23233
|
}
|
|
23213
|
-
updateRanges(applyChange) {
|
|
23234
|
+
updateRanges({ applyChange }) {
|
|
23214
23235
|
const baseline = adaptChartRange(this.baseline, applyChange);
|
|
23215
23236
|
const keyValue = adaptChartRange(this.keyValue, applyChange);
|
|
23216
23237
|
if (this.baseline === baseline && this.keyValue === keyValue) {
|
|
@@ -26584,7 +26605,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
26584
26605
|
verticalAxis: getDefinedAxis(definition),
|
|
26585
26606
|
};
|
|
26586
26607
|
}
|
|
26587
|
-
updateRanges(applyChange) {
|
|
26608
|
+
updateRanges({ applyChange }) {
|
|
26588
26609
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
26589
26610
|
if (!isStale) {
|
|
26590
26611
|
return this;
|
|
@@ -27171,7 +27192,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27171
27192
|
verticalAxis: getDefinedAxis(definition),
|
|
27172
27193
|
};
|
|
27173
27194
|
}
|
|
27174
|
-
updateRanges(applyChange) {
|
|
27195
|
+
updateRanges({ applyChange }) {
|
|
27175
27196
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27176
27197
|
if (!isStale) {
|
|
27177
27198
|
return this;
|
|
@@ -27343,7 +27364,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27343
27364
|
getDefinitionForExcel() {
|
|
27344
27365
|
return undefined;
|
|
27345
27366
|
}
|
|
27346
|
-
updateRanges(applyChange) {
|
|
27367
|
+
updateRanges({ applyChange }) {
|
|
27347
27368
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27348
27369
|
if (!isStale) {
|
|
27349
27370
|
return this;
|
|
@@ -27454,8 +27475,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27454
27475
|
static transformDefinition(chartSheetId, definition, applyChange) {
|
|
27455
27476
|
let dataRange;
|
|
27456
27477
|
if (definition.dataRange) {
|
|
27457
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
27458
|
-
if (
|
|
27478
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
27479
|
+
if (changeType !== "REMOVE") {
|
|
27459
27480
|
dataRange = adaptedRange;
|
|
27460
27481
|
}
|
|
27461
27482
|
}
|
|
@@ -27530,13 +27551,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27530
27551
|
: undefined,
|
|
27531
27552
|
};
|
|
27532
27553
|
}
|
|
27533
|
-
updateRanges(applyChange,
|
|
27554
|
+
updateRanges({ applyChange, adaptFormulaString }) {
|
|
27534
27555
|
const dataRange = adaptChartRange(this.dataRange, applyChange);
|
|
27535
|
-
const adaptFormula = (formula) =>
|
|
27536
|
-
applyChange,
|
|
27537
|
-
sheetId,
|
|
27538
|
-
sheetName: adaptSheetName,
|
|
27539
|
-
});
|
|
27556
|
+
const adaptFormula = (formula) => adaptFormulaString(this.sheetId, formula);
|
|
27540
27557
|
const sectionRule = adaptSectionRuleFormulas(this.sectionRule, adaptFormula);
|
|
27541
27558
|
const definition = this.getDefinitionWithSpecificRanges(dataRange, sectionRule);
|
|
27542
27559
|
return new GaugeChart(definition, this.sheetId, this.getters);
|
|
@@ -27758,7 +27775,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27758
27775
|
getDefinitionForExcel() {
|
|
27759
27776
|
return undefined;
|
|
27760
27777
|
}
|
|
27761
|
-
updateRanges(applyChange) {
|
|
27778
|
+
updateRanges({ applyChange }) {
|
|
27762
27779
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27763
27780
|
if (!isStale) {
|
|
27764
27781
|
return this;
|
|
@@ -27894,7 +27911,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
27894
27911
|
: undefined,
|
|
27895
27912
|
};
|
|
27896
27913
|
}
|
|
27897
|
-
updateRanges(applyChange) {
|
|
27914
|
+
updateRanges({ applyChange }) {
|
|
27898
27915
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27899
27916
|
if (!isStale) {
|
|
27900
27917
|
return this;
|
|
@@ -28054,7 +28071,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28054
28071
|
labelRange,
|
|
28055
28072
|
};
|
|
28056
28073
|
}
|
|
28057
|
-
updateRanges(applyChange) {
|
|
28074
|
+
updateRanges({ applyChange }) {
|
|
28058
28075
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28059
28076
|
if (!isStale) {
|
|
28060
28077
|
return this;
|
|
@@ -28193,7 +28210,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28193
28210
|
getDefinitionForExcel() {
|
|
28194
28211
|
return undefined;
|
|
28195
28212
|
}
|
|
28196
|
-
updateRanges(applyChange) {
|
|
28213
|
+
updateRanges({ applyChange }) {
|
|
28197
28214
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28198
28215
|
if (!isStale) {
|
|
28199
28216
|
return this;
|
|
@@ -28344,7 +28361,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28344
28361
|
labelRange,
|
|
28345
28362
|
};
|
|
28346
28363
|
}
|
|
28347
|
-
updateRanges(applyChange) {
|
|
28364
|
+
updateRanges({ applyChange }) {
|
|
28348
28365
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28349
28366
|
if (!isStale) {
|
|
28350
28367
|
return this;
|
|
@@ -28466,7 +28483,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28466
28483
|
: undefined,
|
|
28467
28484
|
};
|
|
28468
28485
|
}
|
|
28469
|
-
updateRanges(applyChange) {
|
|
28486
|
+
updateRanges({ applyChange }) {
|
|
28470
28487
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28471
28488
|
if (!isStale) {
|
|
28472
28489
|
return this;
|
|
@@ -28631,7 +28648,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28631
28648
|
getDefinitionForExcel() {
|
|
28632
28649
|
return undefined;
|
|
28633
28650
|
}
|
|
28634
|
-
updateRanges(applyChange) {
|
|
28651
|
+
updateRanges({ applyChange }) {
|
|
28635
28652
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28636
28653
|
if (!isStale) {
|
|
28637
28654
|
return this;
|
|
@@ -28779,7 +28796,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28779
28796
|
getDefinitionForExcel() {
|
|
28780
28797
|
return undefined;
|
|
28781
28798
|
}
|
|
28782
|
-
updateRanges(applyChange) {
|
|
28799
|
+
updateRanges({ applyChange }) {
|
|
28783
28800
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28784
28801
|
if (!isStale) {
|
|
28785
28802
|
return this;
|
|
@@ -28934,7 +28951,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28934
28951
|
// TODO: implement export excel
|
|
28935
28952
|
return undefined;
|
|
28936
28953
|
}
|
|
28937
|
-
updateRanges(applyChange) {
|
|
28954
|
+
updateRanges({ applyChange }) {
|
|
28938
28955
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28939
28956
|
if (!isStale) {
|
|
28940
28957
|
return this;
|
|
@@ -32642,7 +32659,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32642
32659
|
});
|
|
32643
32660
|
}
|
|
32644
32661
|
handleEvent(event) {
|
|
32645
|
-
this.hideHelp();
|
|
32646
32662
|
const sheetId = this.getters.getActiveSheetId();
|
|
32647
32663
|
let unboundedZone;
|
|
32648
32664
|
if (event.options.unbounded) {
|
|
@@ -32996,6 +33012,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32996
33012
|
this.colorIndexByRange = {};
|
|
32997
33013
|
this.hoveredTokens = [];
|
|
32998
33014
|
this.hoveredContentEvaluation = "";
|
|
33015
|
+
this.hideHelp();
|
|
32999
33016
|
}
|
|
33000
33017
|
/**
|
|
33001
33018
|
* Reset the current content to the active cell content
|
|
@@ -38617,6 +38634,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
38617
38634
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
38618
38635
|
: undefined,
|
|
38619
38636
|
wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
|
|
38637
|
+
shrinkToFit: style.wrapping === "clip" ? true : undefined,
|
|
38620
38638
|
},
|
|
38621
38639
|
};
|
|
38622
38640
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -38637,6 +38655,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
38637
38655
|
vertical: styles.alignment.vertical,
|
|
38638
38656
|
horizontal: styles.alignment.horizontal,
|
|
38639
38657
|
wrapText: styles.alignment.wrapText,
|
|
38658
|
+
shrinkToFit: styles.alignment.shrinkToFit,
|
|
38640
38659
|
},
|
|
38641
38660
|
};
|
|
38642
38661
|
return pushElement(style, construct.styles);
|
|
@@ -50820,7 +50839,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50820
50839
|
});
|
|
50821
50840
|
dataRange = this.props.definition.dataRange;
|
|
50822
50841
|
get configurationErrorMessages() {
|
|
50823
|
-
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
|
|
50842
|
+
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
50824
50843
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
50825
50844
|
}
|
|
50826
50845
|
get isDataRangeInvalid() {
|
|
@@ -50905,7 +50924,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50905
50924
|
});
|
|
50906
50925
|
}
|
|
50907
50926
|
get designErrorMessages() {
|
|
50908
|
-
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
|
|
50927
|
+
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
50909
50928
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
50910
50929
|
}
|
|
50911
50930
|
get isRangeMinInvalid() {
|
|
@@ -51270,7 +51289,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
51270
51289
|
const cancelledReasons = [
|
|
51271
51290
|
...(this.state.keyValueDispatchResult?.reasons || []),
|
|
51272
51291
|
...(this.state.baselineDispatchResult?.reasons || []),
|
|
51273
|
-
];
|
|
51292
|
+
].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
51274
51293
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
51275
51294
|
}
|
|
51276
51295
|
get isKeyValueInvalid() {
|
|
@@ -56097,8 +56116,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
56097
56116
|
}
|
|
56098
56117
|
const change = applyChange(range);
|
|
56099
56118
|
switch (change.changeType) {
|
|
56100
|
-
case "NONE":
|
|
56101
|
-
return range;
|
|
56102
56119
|
case "REMOVE":
|
|
56103
56120
|
return undefined;
|
|
56104
56121
|
default:
|
|
@@ -58916,7 +58933,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58916
58933
|
* @param sheetId an sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
|
|
58917
58934
|
* @param sheetName couple of old and new sheet names to adapt ranges pointing to that sheet
|
|
58918
58935
|
*/
|
|
58919
|
-
adaptRanges(
|
|
58936
|
+
adaptRanges(rangeAdapterFunctions, sheetId, sheetName) { }
|
|
58920
58937
|
/**
|
|
58921
58938
|
* Implement this method to clean unused external resources, such as images
|
|
58922
58939
|
* stored on a server which have been deleted.
|
|
@@ -59512,7 +59529,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59512
59529
|
];
|
|
59513
59530
|
nextId = 1;
|
|
59514
59531
|
cells = {};
|
|
59515
|
-
adaptRanges(applyChange, sheetId, sheetName) {
|
|
59532
|
+
adaptRanges({ applyChange }, sheetId, sheetName) {
|
|
59516
59533
|
for (const sheet of Object.keys(this.cells)) {
|
|
59517
59534
|
for (const cell of Object.values(this.cells[sheet] || {})) {
|
|
59518
59535
|
if (cell.isFormula) {
|
|
@@ -59734,7 +59751,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59734
59751
|
for (const position of positions) {
|
|
59735
59752
|
const cell = this.getters.getCell(position);
|
|
59736
59753
|
const xc = toXC(position.col, position.row);
|
|
59737
|
-
const style = this.
|
|
59754
|
+
const style = this.extractCustomStyle(cell);
|
|
59738
59755
|
if (Object.keys(style).length) {
|
|
59739
59756
|
const styleId = getItemId(style, styles);
|
|
59740
59757
|
positionsByStyle[styleId] ??= [];
|
|
@@ -59780,10 +59797,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59780
59797
|
}
|
|
59781
59798
|
}
|
|
59782
59799
|
}
|
|
59783
|
-
|
|
59784
|
-
const cleanedStyle = { ...style };
|
|
59785
|
-
|
|
59786
|
-
|
|
59800
|
+
extractCustomStyle(cell) {
|
|
59801
|
+
const cleanedStyle = { ...cell.style };
|
|
59802
|
+
const defaultStyle = isNumber(cell.content, DEFAULT_LOCALE)
|
|
59803
|
+
? DEFAULT_NUMBER_STYLE
|
|
59804
|
+
: DEFAULT_STYLE;
|
|
59805
|
+
for (const property in cleanedStyle) {
|
|
59806
|
+
if ((property !== "align" || !cell.isFormula) &&
|
|
59807
|
+
cleanedStyle[property] === defaultStyle[property]) {
|
|
59787
59808
|
delete cleanedStyle[property];
|
|
59788
59809
|
}
|
|
59789
59810
|
}
|
|
@@ -60133,9 +60154,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60133
60154
|
charts = {};
|
|
60134
60155
|
createChart = chartFactory(this.getters);
|
|
60135
60156
|
validateChartDefinition = (cmd) => validateChartDefinition(this, cmd.definition);
|
|
60136
|
-
adaptRanges(
|
|
60157
|
+
adaptRanges(rangeAdapters) {
|
|
60137
60158
|
for (const [chartId, chart] of Object.entries(this.charts)) {
|
|
60138
|
-
this.history.update("charts", chartId, chart?.updateRanges(
|
|
60159
|
+
this.history.update("charts", chartId, chart?.updateRanges(rangeAdapters));
|
|
60139
60160
|
}
|
|
60140
60161
|
}
|
|
60141
60162
|
// ---------------------------------------------------------------------------
|
|
@@ -60325,7 +60346,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60325
60346
|
"getAdaptedCfRanges",
|
|
60326
60347
|
];
|
|
60327
60348
|
cfRules = {};
|
|
60328
|
-
adaptCFFormulas(applyChange) {
|
|
60349
|
+
adaptCFFormulas({ applyChange, adaptFormulaString }) {
|
|
60329
60350
|
for (const sheetId in this.cfRules) {
|
|
60330
60351
|
for (const rule of this.cfRules[sheetId]) {
|
|
60331
60352
|
if (rule.rule.type === "DataBarRule" && rule.rule.rangeValues) {
|
|
@@ -60349,7 +60370,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60349
60370
|
for (let i = 0; i < rule.rule.values.length; i++) {
|
|
60350
60371
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
60351
60372
|
//@ts-expect-error
|
|
60352
|
-
"values", i,
|
|
60373
|
+
"values", i, adaptFormulaString(sheetId, rule.rule.values[i]));
|
|
60353
60374
|
}
|
|
60354
60375
|
}
|
|
60355
60376
|
else if (rule.rule.type === "IconSetRule") {
|
|
@@ -60357,7 +60378,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60357
60378
|
if (rule.rule[inflectionPoint].type === "formula") {
|
|
60358
60379
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
60359
60380
|
//@ts-expect-error
|
|
60360
|
-
inflectionPoint, "value",
|
|
60381
|
+
inflectionPoint, "value", adaptFormulaString(sheetId, rule.rule[inflectionPoint].value));
|
|
60361
60382
|
}
|
|
60362
60383
|
}
|
|
60363
60384
|
}
|
|
@@ -60367,14 +60388,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60367
60388
|
if (ruleValue?.type === "formula" && ruleValue?.value) {
|
|
60368
60389
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
60369
60390
|
//@ts-expect-error
|
|
60370
|
-
value, "value",
|
|
60391
|
+
value, "value", adaptFormulaString(sheetId, ruleValue.value));
|
|
60371
60392
|
}
|
|
60372
60393
|
}
|
|
60373
60394
|
}
|
|
60374
60395
|
}
|
|
60375
60396
|
}
|
|
60376
60397
|
}
|
|
60377
|
-
adaptCFRanges(sheetId, applyChange) {
|
|
60398
|
+
adaptCFRanges(sheetId, { applyChange }) {
|
|
60378
60399
|
for (const rule of this.cfRules[sheetId]) {
|
|
60379
60400
|
for (const range of rule.ranges) {
|
|
60380
60401
|
const change = applyChange(range);
|
|
@@ -60398,12 +60419,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60398
60419
|
}
|
|
60399
60420
|
}
|
|
60400
60421
|
}
|
|
60401
|
-
adaptRanges(
|
|
60422
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
60402
60423
|
const sheetIds = sheetId ? [sheetId] : Object.keys(this.cfRules);
|
|
60403
60424
|
for (const sheetId of sheetIds) {
|
|
60404
|
-
this.adaptCFRanges(sheetId,
|
|
60425
|
+
this.adaptCFRanges(sheetId, rangeAdapters);
|
|
60405
60426
|
}
|
|
60406
|
-
this.adaptCFFormulas(
|
|
60427
|
+
this.adaptCFFormulas(rangeAdapters);
|
|
60407
60428
|
}
|
|
60408
60429
|
// ---------------------------------------------------------------------------
|
|
60409
60430
|
// Command Handling
|
|
@@ -60780,23 +60801,23 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60780
60801
|
"getValidationRuleForCell",
|
|
60781
60802
|
];
|
|
60782
60803
|
rules = {};
|
|
60783
|
-
adaptRanges(
|
|
60784
|
-
this.adaptDVRanges(sheetId,
|
|
60785
|
-
this.adaptDVFormulas(
|
|
60804
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
60805
|
+
this.adaptDVRanges(sheetId, rangeAdapters);
|
|
60806
|
+
this.adaptDVFormulas(rangeAdapters);
|
|
60786
60807
|
}
|
|
60787
|
-
adaptDVFormulas(
|
|
60808
|
+
adaptDVFormulas({ adaptFormulaString }) {
|
|
60788
60809
|
for (const sheetId in this.rules) {
|
|
60789
60810
|
const rules = this.rules[sheetId];
|
|
60790
60811
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
60791
60812
|
const rule = this.rules[sheetId][ruleIndex];
|
|
60792
60813
|
for (let valueIndex = 0; valueIndex < rule.criterion.values.length; valueIndex++) {
|
|
60793
|
-
const value =
|
|
60814
|
+
const value = adaptFormulaString(sheetId, rule.criterion.values[valueIndex]);
|
|
60794
60815
|
this.history.update("rules", sheetId, ruleIndex, "criterion", "values", valueIndex, value);
|
|
60795
60816
|
}
|
|
60796
60817
|
}
|
|
60797
60818
|
}
|
|
60798
60819
|
}
|
|
60799
|
-
adaptDVRanges(sheetId, applyChange) {
|
|
60820
|
+
adaptDVRanges(sheetId, { applyChange }) {
|
|
60800
60821
|
const rules = this.rules[sheetId];
|
|
60801
60822
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
60802
60823
|
const rule = this.rules[sheetId][ruleIndex];
|
|
@@ -61070,7 +61091,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61070
61091
|
// ---------------------------------------------------------------------------
|
|
61071
61092
|
// Command Handling
|
|
61072
61093
|
// ---------------------------------------------------------------------------
|
|
61073
|
-
adaptRanges(applyChange, sheetId) {
|
|
61094
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
61074
61095
|
for (const figure of this.getFigures(sheetId)) {
|
|
61075
61096
|
const change = applyChange(this.getters.getRangeFromZone(sheetId, {
|
|
61076
61097
|
left: figure.col,
|
|
@@ -61878,8 +61899,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61878
61899
|
break;
|
|
61879
61900
|
}
|
|
61880
61901
|
}
|
|
61881
|
-
adaptRanges(
|
|
61882
|
-
this.applyRangeChangeOnSheet(sheetId,
|
|
61902
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
61903
|
+
this.applyRangeChangeOnSheet(sheetId, rangeAdapters);
|
|
61883
61904
|
}
|
|
61884
61905
|
// ---------------------------------------------------------------------------
|
|
61885
61906
|
// Getters
|
|
@@ -62181,7 +62202,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62181
62202
|
/**
|
|
62182
62203
|
* Apply a range change on merges of a particular sheet.
|
|
62183
62204
|
*/
|
|
62184
|
-
applyRangeChangeOnSheet(sheetId, applyChange) {
|
|
62205
|
+
applyRangeChangeOnSheet(sheetId, { applyChange }) {
|
|
62185
62206
|
const merges = Object.entries(this.merges[sheetId] || {});
|
|
62186
62207
|
for (const [mergeId, range] of merges) {
|
|
62187
62208
|
if (range) {
|
|
@@ -62255,7 +62276,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62255
62276
|
};
|
|
62256
62277
|
}
|
|
62257
62278
|
|
|
62258
|
-
class
|
|
62279
|
+
class RangeAdapterPlugin {
|
|
62259
62280
|
getters;
|
|
62260
62281
|
providers = [];
|
|
62261
62282
|
isAdaptingRanges = false;
|
|
@@ -62263,7 +62284,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62263
62284
|
this.getters = getters;
|
|
62264
62285
|
}
|
|
62265
62286
|
static getters = [
|
|
62266
|
-
"adaptFormulaStringDependencies",
|
|
62267
62287
|
"copyFormulaStringForSheet",
|
|
62268
62288
|
"extendRange",
|
|
62269
62289
|
"getRangeString",
|
|
@@ -62294,8 +62314,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62294
62314
|
throw new Error("Plugins cannot dispatch commands during adaptRanges phase");
|
|
62295
62315
|
}
|
|
62296
62316
|
const rangeAdapter = getRangeAdapter(cmd);
|
|
62297
|
-
if (rangeAdapter
|
|
62298
|
-
this.executeOnAllRanges(rangeAdapter
|
|
62317
|
+
if (rangeAdapter) {
|
|
62318
|
+
this.executeOnAllRanges(rangeAdapter);
|
|
62299
62319
|
}
|
|
62300
62320
|
}
|
|
62301
62321
|
finalize() { }
|
|
@@ -62314,11 +62334,15 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62314
62334
|
return result;
|
|
62315
62335
|
};
|
|
62316
62336
|
}
|
|
62317
|
-
executeOnAllRanges(
|
|
62337
|
+
executeOnAllRanges(rangeAdapter) {
|
|
62318
62338
|
this.isAdaptingRanges = true;
|
|
62319
|
-
const
|
|
62339
|
+
const adapterFunctions = {
|
|
62340
|
+
applyChange: this.verifyRangeRemoved(rangeAdapter.applyChange),
|
|
62341
|
+
adaptRangeString: (defaultSheetId, sheetXC) => adaptStringRange(defaultSheetId, sheetXC, rangeAdapter),
|
|
62342
|
+
adaptFormulaString: (defaultSheetId, formula) => adaptFormulaStringRanges(defaultSheetId, formula, rangeAdapter),
|
|
62343
|
+
};
|
|
62320
62344
|
for (const provider of this.providers) {
|
|
62321
|
-
provider(
|
|
62345
|
+
provider(adapterFunctions, rangeAdapter.sheetId, rangeAdapter.sheetName);
|
|
62322
62346
|
}
|
|
62323
62347
|
this.isAdaptingRanges = false;
|
|
62324
62348
|
}
|
|
@@ -62486,18 +62510,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62486
62510
|
const unionOfZones = unionUnboundedZones(...zones);
|
|
62487
62511
|
return this.getRangeFromZone(ranges[0].sheetId, unionOfZones);
|
|
62488
62512
|
}
|
|
62489
|
-
adaptFormulaStringDependencies(sheetId, formula, applyChange) {
|
|
62490
|
-
if (!formula.startsWith("=")) {
|
|
62491
|
-
return formula;
|
|
62492
|
-
}
|
|
62493
|
-
const compiledFormula = compile(formula);
|
|
62494
|
-
const updatedDependencies = compiledFormula.dependencies.map((dep) => {
|
|
62495
|
-
const range = this.getters.getRangeFromSheetXC(sheetId, dep);
|
|
62496
|
-
const changedRange = applyChange(range);
|
|
62497
|
-
return changedRange.changeType === "NONE" ? range : changedRange.range;
|
|
62498
|
-
});
|
|
62499
|
-
return this.getters.getFormulaString(sheetId, compiledFormula.tokens, updatedDependencies);
|
|
62500
|
-
}
|
|
62501
62513
|
/**
|
|
62502
62514
|
* Copy a formula string to another sheet.
|
|
62503
62515
|
*
|
|
@@ -63390,7 +63402,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
63390
63402
|
static getters = ["getCoreTable", "getCoreTables", "getCoreTableMatchingTopLeft"];
|
|
63391
63403
|
tables = {};
|
|
63392
63404
|
nextTableId = 1;
|
|
63393
|
-
adaptRanges(applyChange, sheetId) {
|
|
63405
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
63394
63406
|
for (const table of this.getCoreTables(sheetId)) {
|
|
63395
63407
|
this.applyRangeChangeOnTable(sheetId, table, applyChange);
|
|
63396
63408
|
}
|
|
@@ -64356,7 +64368,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64356
64368
|
}
|
|
64357
64369
|
}
|
|
64358
64370
|
}
|
|
64359
|
-
adaptRanges(applyChange) {
|
|
64371
|
+
adaptRanges({ applyChange, adaptFormulaString }) {
|
|
64360
64372
|
for (const pivotId in this.pivots) {
|
|
64361
64373
|
const definition = deepCopy(this.pivots[pivotId]?.definition);
|
|
64362
64374
|
if (!definition) {
|
|
@@ -64376,19 +64388,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64376
64388
|
continue;
|
|
64377
64389
|
}
|
|
64378
64390
|
const sheetId = measure.computedBy.sheetId;
|
|
64379
|
-
const compiledFormula = this.compiledMeasureFormulas[pivotId][measureId]
|
|
64380
|
-
|
|
64381
|
-
|
|
64382
|
-
|
|
64383
|
-
|
|
64384
|
-
newDependencies.push(range);
|
|
64385
|
-
}
|
|
64386
|
-
else {
|
|
64387
|
-
newDependencies.push(change.range);
|
|
64388
|
-
}
|
|
64389
|
-
}
|
|
64390
|
-
const newFormulaString = this.getters.getFormulaString(sheetId, compiledFormula.tokens, newDependencies);
|
|
64391
|
+
const { formula: compiledFormula, dependencies: indirectDependencies } = this.compiledMeasureFormulas[pivotId][measureId];
|
|
64392
|
+
// adapt direct dependencies
|
|
64393
|
+
this.history.update("compiledMeasureFormulas", pivotId, measureId, "formula", "dependencies", compiledFormula.dependencies.map((range) => applyChange(range).range));
|
|
64394
|
+
// adapt all dependencies (including indirect)
|
|
64395
|
+
this.history.update("compiledMeasureFormulas", pivotId, measure.id, "dependencies", indirectDependencies.map((range) => applyChange(range).range));
|
|
64391
64396
|
const oldFormulaString = measure.computedBy.formula;
|
|
64397
|
+
const newFormulaString = adaptFormulaString(sheetId, oldFormulaString);
|
|
64392
64398
|
if (newFormulaString !== oldFormulaString) {
|
|
64393
64399
|
this.replaceMeasureFormula(pivotId, measure, newFormulaString);
|
|
64394
64400
|
}
|
|
@@ -64550,7 +64556,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64550
64556
|
formula: newFormulaString,
|
|
64551
64557
|
sheetId: measure.computedBy.sheetId,
|
|
64552
64558
|
});
|
|
64553
|
-
this.compileCalculatedMeasures(pivotId, pivot.definition.measures);
|
|
64554
64559
|
}
|
|
64555
64560
|
checkSortedColumnInMeasures(definition) {
|
|
64556
64561
|
const measures = definition.measures.map((measure) => measure.id);
|
|
@@ -65932,11 +65937,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
65932
65937
|
return this.arrayFormulasToResults.get(formulasPosition);
|
|
65933
65938
|
}
|
|
65934
65939
|
/**
|
|
65935
|
-
* Remove a
|
|
65940
|
+
* Remove a spreading relation for a given array formula position
|
|
65941
|
+
* and its result zone
|
|
65936
65942
|
*/
|
|
65937
65943
|
removeNode(position) {
|
|
65944
|
+
const resultZone = this.arrayFormulasToResults.get(position);
|
|
65945
|
+
if (!resultZone) {
|
|
65946
|
+
return;
|
|
65947
|
+
}
|
|
65938
65948
|
this.resultsToArrayFormulas.remove({
|
|
65939
|
-
boundingBox: { sheetId: position.sheetId, zone:
|
|
65949
|
+
boundingBox: { sheetId: position.sheetId, zone: resultZone },
|
|
65940
65950
|
data: position,
|
|
65941
65951
|
});
|
|
65942
65952
|
this.arrayFormulasToResults.delete(position);
|
|
@@ -66224,6 +66234,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66224
66234
|
// empty matrix
|
|
66225
66235
|
return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
|
|
66226
66236
|
}
|
|
66237
|
+
if (nbRows === 1 && nbColumns === 1) {
|
|
66238
|
+
// single value matrix
|
|
66239
|
+
return createEvaluatedCell(nullValueToZeroValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
|
|
66240
|
+
}
|
|
66227
66241
|
const resultZone = {
|
|
66228
66242
|
top: formulaPosition.row,
|
|
66229
66243
|
bottom: formulaPosition.row + nbRows - 1,
|
|
@@ -67910,6 +67924,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
67910
67924
|
handle(cmd) {
|
|
67911
67925
|
switch (cmd.type) {
|
|
67912
67926
|
case "START":
|
|
67927
|
+
case "UPDATE_LOCALE":
|
|
67913
67928
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
67914
67929
|
this.initializeSheet(sheetId);
|
|
67915
67930
|
}
|
|
@@ -68031,7 +68046,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68031
68046
|
}
|
|
68032
68047
|
const cell = this.getters.getCell(position);
|
|
68033
68048
|
const colSize = this.getters.getColSize(position.sheetId, position.col);
|
|
68034
|
-
return getDefaultCellHeight(this.ctx, cell, colSize);
|
|
68049
|
+
return getDefaultCellHeight(this.ctx, cell, this.getters.getLocale(), colSize);
|
|
68035
68050
|
}
|
|
68036
68051
|
isInMultiRowMerge(position) {
|
|
68037
68052
|
const merge = this.getters.getMerge(position);
|
|
@@ -70340,7 +70355,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
70340
70355
|
cmd.cf.rule = {
|
|
70341
70356
|
...rule,
|
|
70342
70357
|
rangeValues: rule.rangeValues
|
|
70343
|
-
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange)
|
|
70358
|
+
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange).range
|
|
70344
70359
|
: undefined,
|
|
70345
70360
|
};
|
|
70346
70361
|
}
|
|
@@ -83555,6 +83570,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
83555
83570
|
if (style.alignment && style.alignment.wrapText) {
|
|
83556
83571
|
alignAttrs.push(["wrapText", "1"]);
|
|
83557
83572
|
}
|
|
83573
|
+
if (style.alignment && style.alignment.shrinkToFit) {
|
|
83574
|
+
alignAttrs.push(["shrinkToFit", "1"]);
|
|
83575
|
+
}
|
|
83558
83576
|
if (alignAttrs.length > 0) {
|
|
83559
83577
|
attributes.push(["applyAlignment", "1"]); // for Libre Office
|
|
83560
83578
|
styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
|
|
@@ -84325,7 +84343,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
84325
84343
|
this.config = this.setupConfig(config);
|
|
84326
84344
|
this.session = this.setupSession(workbookData.revisionId);
|
|
84327
84345
|
this.coreGetters = {};
|
|
84328
|
-
this.range = new
|
|
84346
|
+
this.range = new RangeAdapterPlugin(this.coreGetters);
|
|
84329
84347
|
this.coreGetters.getRangeString = this.range.getRangeString.bind(this.range);
|
|
84330
84348
|
this.coreGetters.getRangeFromSheetXC = this.range.getRangeFromSheetXC.bind(this.range);
|
|
84331
84349
|
this.coreGetters.createAdaptedRanges = this.range.createAdaptedRanges.bind(this.range);
|
|
@@ -84339,8 +84357,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
84339
84357
|
this.coreGetters.extendRange = this.range.extendRange.bind(this.range);
|
|
84340
84358
|
this.coreGetters.getRangesUnion = this.range.getRangesUnion.bind(this.range);
|
|
84341
84359
|
this.coreGetters.removeRangesSheetPrefix = this.range.removeRangesSheetPrefix.bind(this.range);
|
|
84342
|
-
this.coreGetters.adaptFormulaStringDependencies =
|
|
84343
|
-
this.range.adaptFormulaStringDependencies.bind(this.range);
|
|
84344
84360
|
this.coreGetters.copyFormulaStringForSheet = this.range.copyFormulaStringForSheet.bind(this.range);
|
|
84345
84361
|
this.getters = {
|
|
84346
84362
|
isReadonly: () => this.config.mode === "readonly" || this.config.mode === "dashboard",
|
|
@@ -85063,9 +85079,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
85063
85079
|
exports.tokenize = tokenize;
|
|
85064
85080
|
|
|
85065
85081
|
|
|
85066
|
-
__info__.version = "18.4.
|
|
85067
|
-
__info__.date = "2026-01-
|
|
85068
|
-
__info__.hash = "
|
|
85082
|
+
__info__.version = "18.4.25";
|
|
85083
|
+
__info__.date = "2026-01-21T11:06:11.131Z";
|
|
85084
|
+
__info__.hash = "161472d";
|
|
85069
85085
|
|
|
85070
85086
|
|
|
85071
85087
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|