@odoo/o-spreadsheet 19.0.17 → 19.0.18
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 +159 -139
- package/dist/o-spreadsheet.d.ts +109 -103
- package/dist/o-spreadsheet.esm.js +159 -139
- package/dist/o-spreadsheet.iife.js +159 -139
- package/dist/o-spreadsheet.iife.min.js +430 -430
- 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 19.0.
|
|
6
|
-
* @date 2026-01-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.0.18
|
|
6
|
+
* @date 2026-01-21T11:06:57.346Z
|
|
7
|
+
* @hash bd44f59
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, App, blockDom, useState, onPatched, useExternalListener, onWillUpdateProps, onWillStart, onWillPatch, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
|
|
@@ -40,7 +40,8 @@ function createAction(item) {
|
|
|
40
40
|
return children
|
|
41
41
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
42
42
|
.flat()
|
|
43
|
-
.map(createAction)
|
|
43
|
+
.map(createAction)
|
|
44
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
44
45
|
}
|
|
45
46
|
: () => [],
|
|
46
47
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
@@ -780,6 +781,7 @@ const DEFAULT_STYLE = {
|
|
|
780
781
|
fillColor: "",
|
|
781
782
|
textColor: "",
|
|
782
783
|
};
|
|
784
|
+
const DEFAULT_NUMBER_STYLE = { ...DEFAULT_STYLE, align: "right" };
|
|
783
785
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
784
786
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
785
787
|
// Fonts
|
|
@@ -5026,7 +5028,11 @@ function evaluatePredicate(value = "", criterion, locale) {
|
|
|
5026
5028
|
if (operator === "<>" || operator === "=") {
|
|
5027
5029
|
let result;
|
|
5028
5030
|
if (typeof value === typeof operand) {
|
|
5029
|
-
if (
|
|
5031
|
+
if (value === "" && operand === "") {
|
|
5032
|
+
// fast path to avoid regex evaluation
|
|
5033
|
+
result = true;
|
|
5034
|
+
}
|
|
5035
|
+
else if (typeof value === "string" && typeof operand === "string") {
|
|
5030
5036
|
result = wildcardToRegExp(operand).test(value);
|
|
5031
5037
|
}
|
|
5032
5038
|
else {
|
|
@@ -7052,7 +7058,7 @@ function getApplyRangeChangeRemoveColRow(cmd) {
|
|
|
7052
7058
|
const groups = groupConsecutive(elements);
|
|
7053
7059
|
return (range) => {
|
|
7054
7060
|
if (range.sheetId !== cmd.sheetId) {
|
|
7055
|
-
return { changeType: "NONE" };
|
|
7061
|
+
return { changeType: "NONE", range };
|
|
7056
7062
|
}
|
|
7057
7063
|
let newRange = range;
|
|
7058
7064
|
let changeType = "NONE";
|
|
@@ -7079,10 +7085,7 @@ function getApplyRangeChangeRemoveColRow(cmd) {
|
|
|
7079
7085
|
newRange = createAdaptedRange(newRange, dimension, changeType, -(max - min + 1));
|
|
7080
7086
|
}
|
|
7081
7087
|
}
|
|
7082
|
-
|
|
7083
|
-
return { changeType, range: newRange };
|
|
7084
|
-
}
|
|
7085
|
-
return { changeType: "NONE" };
|
|
7088
|
+
return { changeType, range: newRange };
|
|
7086
7089
|
};
|
|
7087
7090
|
}
|
|
7088
7091
|
function getApplyRangeChangeAddColRow(cmd) {
|
|
@@ -7091,7 +7094,7 @@ function getApplyRangeChangeAddColRow(cmd) {
|
|
|
7091
7094
|
const dimension = cmd.dimension === "COL" ? "columns" : "rows";
|
|
7092
7095
|
return (range) => {
|
|
7093
7096
|
if (range.sheetId !== cmd.sheetId) {
|
|
7094
|
-
return { changeType: "NONE" };
|
|
7097
|
+
return { changeType: "NONE", range };
|
|
7095
7098
|
}
|
|
7096
7099
|
if (cmd.position === "after") {
|
|
7097
7100
|
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) {
|
|
@@ -7121,13 +7124,13 @@ function getApplyRangeChangeAddColRow(cmd) {
|
|
|
7121
7124
|
};
|
|
7122
7125
|
}
|
|
7123
7126
|
}
|
|
7124
|
-
return { changeType: "NONE" };
|
|
7127
|
+
return { changeType: "NONE", range };
|
|
7125
7128
|
};
|
|
7126
7129
|
}
|
|
7127
7130
|
function getApplyRangeChangeDeleteSheet(cmd) {
|
|
7128
7131
|
return (range) => {
|
|
7129
7132
|
if (range.sheetId !== cmd.sheetId && range.invalidSheetName !== cmd.sheetName) {
|
|
7130
|
-
return { changeType: "NONE" };
|
|
7133
|
+
return { changeType: "NONE", range };
|
|
7131
7134
|
}
|
|
7132
7135
|
const invalidSheetName = cmd.sheetName;
|
|
7133
7136
|
range = {
|
|
@@ -7154,14 +7157,14 @@ function getApplyRangeChangeRenameSheet(cmd) {
|
|
|
7154
7157
|
const newRange = { ...range, sheetId, invalidSheetName };
|
|
7155
7158
|
return { changeType: "CHANGE", range: newRange };
|
|
7156
7159
|
}
|
|
7157
|
-
return { changeType: "NONE" };
|
|
7160
|
+
return { changeType: "NONE", range };
|
|
7158
7161
|
};
|
|
7159
7162
|
}
|
|
7160
7163
|
function getApplyRangeChangeMoveRange(cmd) {
|
|
7161
7164
|
const originZone = cmd.target[0];
|
|
7162
7165
|
return (range) => {
|
|
7163
7166
|
if (range.sheetId !== cmd.sheetId || !isZoneInside(range.zone, originZone)) {
|
|
7164
|
-
return { changeType: "NONE" };
|
|
7167
|
+
return { changeType: "NONE", range };
|
|
7165
7168
|
}
|
|
7166
7169
|
const targetSheetId = cmd.targetSheetId;
|
|
7167
7170
|
const offsetX = cmd.col - originZone.left;
|
|
@@ -7327,11 +7330,20 @@ function computeTextLinesHeight(textLineHeight, numberOfLines = 1) {
|
|
|
7327
7330
|
/**
|
|
7328
7331
|
* Get the default height of the cell given its style.
|
|
7329
7332
|
*/
|
|
7330
|
-
function getDefaultCellHeight(ctx, cell, colSize) {
|
|
7333
|
+
function getDefaultCellHeight(ctx, cell, locale, colSize) {
|
|
7331
7334
|
if (!cell || (!cell.isFormula && !cell.content)) {
|
|
7332
7335
|
return DEFAULT_CELL_HEIGHT;
|
|
7333
7336
|
}
|
|
7334
|
-
|
|
7337
|
+
let content = "";
|
|
7338
|
+
try {
|
|
7339
|
+
if (!cell.isFormula) {
|
|
7340
|
+
const localeFormat = { format: cell.format, locale };
|
|
7341
|
+
content = formatValue(parseLiteral(cell.content, locale), localeFormat);
|
|
7342
|
+
}
|
|
7343
|
+
}
|
|
7344
|
+
catch {
|
|
7345
|
+
content = CellErrorType.GenericError;
|
|
7346
|
+
}
|
|
7335
7347
|
return getCellContentHeight(ctx, content, cell.style, colSize);
|
|
7336
7348
|
}
|
|
7337
7349
|
function getCellContentHeight(ctx, content, style, colSize) {
|
|
@@ -22225,7 +22237,16 @@ function createComputeFunction(descr) {
|
|
|
22225
22237
|
}
|
|
22226
22238
|
acceptToVectorize.push(!argDefinition.acceptMatrix);
|
|
22227
22239
|
}
|
|
22228
|
-
return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
|
|
22240
|
+
return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
|
|
22241
|
+
}
|
|
22242
|
+
function replaceErrorPlaceholderInResult(result) {
|
|
22243
|
+
if (!isMatrix(result)) {
|
|
22244
|
+
replaceFunctionNamePlaceholder(result, descr.name);
|
|
22245
|
+
}
|
|
22246
|
+
else {
|
|
22247
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
22248
|
+
}
|
|
22249
|
+
return result;
|
|
22229
22250
|
}
|
|
22230
22251
|
function errorHandlingCompute(...args) {
|
|
22231
22252
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -22254,13 +22275,12 @@ function createComputeFunction(descr) {
|
|
|
22254
22275
|
const result = descr.compute.apply(this, args);
|
|
22255
22276
|
if (!isMatrix(result)) {
|
|
22256
22277
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
22257
|
-
replaceFunctionNamePlaceholder(result, descr.name);
|
|
22258
22278
|
return result;
|
|
22259
22279
|
}
|
|
22280
|
+
descr.name;
|
|
22260
22281
|
return { value: result };
|
|
22261
22282
|
}
|
|
22262
22283
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
22263
|
-
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
|
|
22264
22284
|
return result;
|
|
22265
22285
|
}
|
|
22266
22286
|
return matrixMap(result, (row) => ({ value: row }));
|
|
@@ -22773,7 +22793,7 @@ function adaptFormulaStringRanges(defaultSheetId, formula, applyChange) {
|
|
|
22773
22793
|
continue;
|
|
22774
22794
|
}
|
|
22775
22795
|
const sheetXC = tokens[tokenIdx].value;
|
|
22776
|
-
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange);
|
|
22796
|
+
const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange).range;
|
|
22777
22797
|
if (sheetXC !== newSheetXC) {
|
|
22778
22798
|
tokens[tokenIdx] = {
|
|
22779
22799
|
value: newSheetXC,
|
|
@@ -22783,23 +22803,30 @@ function adaptFormulaStringRanges(defaultSheetId, formula, applyChange) {
|
|
|
22783
22803
|
}
|
|
22784
22804
|
return concat$1(tokens.map((token) => token.value));
|
|
22785
22805
|
}
|
|
22786
|
-
function adaptStringRange(defaultSheetId, sheetXC,
|
|
22806
|
+
function adaptStringRange(defaultSheetId, sheetXC, rangeAdapter) {
|
|
22787
22807
|
const sheetName = splitReference(sheetXC).sheetName;
|
|
22788
22808
|
if (sheetName
|
|
22789
|
-
? !isSheetNameEqual(sheetName,
|
|
22790
|
-
: defaultSheetId !==
|
|
22791
|
-
return sheetXC;
|
|
22809
|
+
? !isSheetNameEqual(sheetName, rangeAdapter.sheetName.old)
|
|
22810
|
+
: defaultSheetId !== rangeAdapter.sheetId) {
|
|
22811
|
+
return { changeType: "NONE", range: sheetXC };
|
|
22792
22812
|
}
|
|
22793
|
-
const sheetId = sheetName ?
|
|
22813
|
+
const sheetId = sheetName ? rangeAdapter.sheetId : defaultSheetId;
|
|
22794
22814
|
const range = getRange(sheetXC, sheetId);
|
|
22795
22815
|
if (range.invalidXc) {
|
|
22796
|
-
return sheetXC;
|
|
22816
|
+
return { changeType: "NONE", range: sheetXC };
|
|
22797
22817
|
}
|
|
22798
|
-
const change =
|
|
22818
|
+
const change = rangeAdapter.applyChange(range);
|
|
22799
22819
|
if (change.changeType === "NONE" || change.changeType === "REMOVE") {
|
|
22800
|
-
return sheetXC;
|
|
22820
|
+
return { changeType: change.changeType, range: sheetXC };
|
|
22821
|
+
}
|
|
22822
|
+
const rangeStr = getRangeString(change.range, defaultSheetId, getSheetNameGetter(rangeAdapter));
|
|
22823
|
+
if (rangeStr === CellErrorType.InvalidReference) {
|
|
22824
|
+
return { changeType: "REMOVE", range: rangeStr };
|
|
22801
22825
|
}
|
|
22802
|
-
return
|
|
22826
|
+
return {
|
|
22827
|
+
changeType: change.changeType,
|
|
22828
|
+
range: rangeStr,
|
|
22829
|
+
};
|
|
22803
22830
|
}
|
|
22804
22831
|
function getSheetNameGetter(applyChange) {
|
|
22805
22832
|
return (sheetId) => {
|
|
@@ -22904,8 +22931,6 @@ function adaptChartRange(range, applyChange) {
|
|
|
22904
22931
|
}
|
|
22905
22932
|
const change = applyChange(range);
|
|
22906
22933
|
switch (change.changeType) {
|
|
22907
|
-
case "NONE":
|
|
22908
|
-
return range;
|
|
22909
22934
|
case "REMOVE":
|
|
22910
22935
|
return undefined;
|
|
22911
22936
|
default:
|
|
@@ -23057,16 +23082,16 @@ function toExcelLabelRange(getters, labelRange, shouldRemoveFirstLabel) {
|
|
|
23057
23082
|
function transformChartDefinitionWithDataSetsWithZone(chartSheetId, definition, applyChange) {
|
|
23058
23083
|
let labelRange;
|
|
23059
23084
|
if (definition.labelRange) {
|
|
23060
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
23061
|
-
if (
|
|
23085
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
|
|
23086
|
+
if (changeType !== "REMOVE") {
|
|
23062
23087
|
labelRange = adaptedRange;
|
|
23063
23088
|
}
|
|
23064
23089
|
}
|
|
23065
23090
|
const dataSets = [];
|
|
23066
23091
|
for (const dataSet of definition.dataSets) {
|
|
23067
23092
|
const newDataSet = { ...dataSet };
|
|
23068
|
-
const adaptedRange = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
23069
|
-
if (
|
|
23093
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
|
|
23094
|
+
if (changeType !== "REMOVE") {
|
|
23070
23095
|
newDataSet.dataRange = adaptedRange;
|
|
23071
23096
|
dataSets.push(newDataSet);
|
|
23072
23097
|
}
|
|
@@ -24465,14 +24490,14 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
|
|
|
24465
24490
|
let baseline;
|
|
24466
24491
|
let keyValue;
|
|
24467
24492
|
if (definition.baseline) {
|
|
24468
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
24469
|
-
if (
|
|
24493
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.baseline, applyChange);
|
|
24494
|
+
if (changeType !== "REMOVE") {
|
|
24470
24495
|
baseline = adaptedRange;
|
|
24471
24496
|
}
|
|
24472
24497
|
}
|
|
24473
24498
|
if (definition.keyValue) {
|
|
24474
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
24475
|
-
if (
|
|
24499
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
|
|
24500
|
+
if (changeType !== "REMOVE") {
|
|
24476
24501
|
keyValue = adaptedRange;
|
|
24477
24502
|
}
|
|
24478
24503
|
}
|
|
@@ -24529,7 +24554,7 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
|
|
|
24529
24554
|
// This kind of graph is not exportable in Excel
|
|
24530
24555
|
return undefined;
|
|
24531
24556
|
}
|
|
24532
|
-
updateRanges(applyChange) {
|
|
24557
|
+
updateRanges({ applyChange }) {
|
|
24533
24558
|
const baseline = adaptChartRange(this.baseline, applyChange);
|
|
24534
24559
|
const keyValue = adaptChartRange(this.keyValue, applyChange);
|
|
24535
24560
|
if (this.baseline === baseline && this.keyValue === keyValue) {
|
|
@@ -27695,7 +27720,7 @@ class BarChart extends AbstractChart {
|
|
|
27695
27720
|
verticalAxis: getDefinedAxis(definition),
|
|
27696
27721
|
};
|
|
27697
27722
|
}
|
|
27698
|
-
updateRanges(applyChange) {
|
|
27723
|
+
updateRanges({ applyChange }) {
|
|
27699
27724
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
27700
27725
|
if (!isStale) {
|
|
27701
27726
|
return this;
|
|
@@ -28901,7 +28926,7 @@ class ComboChart extends AbstractChart {
|
|
|
28901
28926
|
verticalAxis: getDefinedAxis(definition),
|
|
28902
28927
|
};
|
|
28903
28928
|
}
|
|
28904
|
-
updateRanges(applyChange) {
|
|
28929
|
+
updateRanges({ applyChange }) {
|
|
28905
28930
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
28906
28931
|
if (!isStale) {
|
|
28907
28932
|
return this;
|
|
@@ -29077,7 +29102,7 @@ class FunnelChart extends AbstractChart {
|
|
|
29077
29102
|
getDefinitionForExcel() {
|
|
29078
29103
|
return undefined;
|
|
29079
29104
|
}
|
|
29080
|
-
updateRanges(applyChange) {
|
|
29105
|
+
updateRanges({ applyChange }) {
|
|
29081
29106
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29082
29107
|
if (!isStale) {
|
|
29083
29108
|
return this;
|
|
@@ -29188,8 +29213,8 @@ class GaugeChart extends AbstractChart {
|
|
|
29188
29213
|
static transformDefinition(chartSheetId, definition, applyChange) {
|
|
29189
29214
|
let dataRange;
|
|
29190
29215
|
if (definition.dataRange) {
|
|
29191
|
-
const adaptedRange = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
29192
|
-
if (
|
|
29216
|
+
const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
|
|
29217
|
+
if (changeType !== "REMOVE") {
|
|
29193
29218
|
dataRange = adaptedRange;
|
|
29194
29219
|
}
|
|
29195
29220
|
}
|
|
@@ -29266,13 +29291,9 @@ class GaugeChart extends AbstractChart {
|
|
|
29266
29291
|
: undefined,
|
|
29267
29292
|
};
|
|
29268
29293
|
}
|
|
29269
|
-
updateRanges(applyChange,
|
|
29294
|
+
updateRanges({ applyChange, adaptFormulaString }) {
|
|
29270
29295
|
const dataRange = adaptChartRange(this.dataRange, applyChange);
|
|
29271
|
-
const adaptFormula = (formula) =>
|
|
29272
|
-
applyChange,
|
|
29273
|
-
sheetId,
|
|
29274
|
-
sheetName: adaptSheetName,
|
|
29275
|
-
});
|
|
29296
|
+
const adaptFormula = (formula) => adaptFormulaString(this.sheetId, formula);
|
|
29276
29297
|
const sectionRule = adaptSectionRuleFormulas(this.sectionRule, adaptFormula);
|
|
29277
29298
|
const definition = this.getDefinitionWithSpecificRanges(dataRange, sectionRule);
|
|
29278
29299
|
return new GaugeChart(definition, this.sheetId, this.getters);
|
|
@@ -29500,7 +29521,7 @@ class GeoChart extends AbstractChart {
|
|
|
29500
29521
|
getDefinitionForExcel() {
|
|
29501
29522
|
return undefined;
|
|
29502
29523
|
}
|
|
29503
|
-
updateRanges(applyChange) {
|
|
29524
|
+
updateRanges({ applyChange }) {
|
|
29504
29525
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29505
29526
|
if (!isStale) {
|
|
29506
29527
|
return this;
|
|
@@ -29642,7 +29663,7 @@ class LineChart extends AbstractChart {
|
|
|
29642
29663
|
: undefined,
|
|
29643
29664
|
};
|
|
29644
29665
|
}
|
|
29645
|
-
updateRanges(applyChange) {
|
|
29666
|
+
updateRanges({ applyChange }) {
|
|
29646
29667
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29647
29668
|
if (!isStale) {
|
|
29648
29669
|
return this;
|
|
@@ -29799,7 +29820,7 @@ class PieChart extends AbstractChart {
|
|
|
29799
29820
|
labelRange,
|
|
29800
29821
|
};
|
|
29801
29822
|
}
|
|
29802
|
-
updateRanges(applyChange) {
|
|
29823
|
+
updateRanges({ applyChange }) {
|
|
29803
29824
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29804
29825
|
if (!isStale) {
|
|
29805
29826
|
return this;
|
|
@@ -29954,7 +29975,7 @@ class PyramidChart extends AbstractChart {
|
|
|
29954
29975
|
maxValue,
|
|
29955
29976
|
};
|
|
29956
29977
|
}
|
|
29957
|
-
updateRanges(applyChange) {
|
|
29978
|
+
updateRanges({ applyChange }) {
|
|
29958
29979
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
29959
29980
|
if (!isStale) {
|
|
29960
29981
|
return this;
|
|
@@ -30104,7 +30125,7 @@ class RadarChart extends AbstractChart {
|
|
|
30104
30125
|
labelRange,
|
|
30105
30126
|
};
|
|
30106
30127
|
}
|
|
30107
|
-
updateRanges(applyChange) {
|
|
30128
|
+
updateRanges({ applyChange }) {
|
|
30108
30129
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
30109
30130
|
if (!isStale) {
|
|
30110
30131
|
return this;
|
|
@@ -30232,7 +30253,7 @@ class ScatterChart extends AbstractChart {
|
|
|
30232
30253
|
: undefined,
|
|
30233
30254
|
};
|
|
30234
30255
|
}
|
|
30235
|
-
updateRanges(applyChange) {
|
|
30256
|
+
updateRanges({ applyChange }) {
|
|
30236
30257
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
30237
30258
|
if (!isStale) {
|
|
30238
30259
|
return this;
|
|
@@ -30399,7 +30420,7 @@ class SunburstChart extends AbstractChart {
|
|
|
30399
30420
|
getDefinitionForExcel() {
|
|
30400
30421
|
return undefined;
|
|
30401
30422
|
}
|
|
30402
|
-
updateRanges(applyChange) {
|
|
30423
|
+
updateRanges({ applyChange }) {
|
|
30403
30424
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
30404
30425
|
if (!isStale) {
|
|
30405
30426
|
return this;
|
|
@@ -30549,7 +30570,7 @@ class TreeMapChart extends AbstractChart {
|
|
|
30549
30570
|
getDefinitionForExcel() {
|
|
30550
30571
|
return undefined;
|
|
30551
30572
|
}
|
|
30552
|
-
updateRanges(applyChange) {
|
|
30573
|
+
updateRanges({ applyChange }) {
|
|
30553
30574
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
30554
30575
|
if (!isStale) {
|
|
30555
30576
|
return this;
|
|
@@ -30710,7 +30731,7 @@ class WaterfallChart extends AbstractChart {
|
|
|
30710
30731
|
// TODO: implement export excel
|
|
30711
30732
|
return undefined;
|
|
30712
30733
|
}
|
|
30713
|
-
updateRanges(applyChange) {
|
|
30734
|
+
updateRanges({ applyChange }) {
|
|
30714
30735
|
const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
|
|
30715
30736
|
if (!isStale) {
|
|
30716
30737
|
return this;
|
|
@@ -35227,7 +35248,6 @@ class AbstractComposerStore extends SpreadsheetStore {
|
|
|
35227
35248
|
});
|
|
35228
35249
|
}
|
|
35229
35250
|
handleEvent(event) {
|
|
35230
|
-
this.hideHelp();
|
|
35231
35251
|
const sheetId = this.getters.getActiveSheetId();
|
|
35232
35252
|
let unboundedZone;
|
|
35233
35253
|
if (event.options.unbounded) {
|
|
@@ -35575,6 +35595,7 @@ class AbstractComposerStore extends SpreadsheetStore {
|
|
|
35575
35595
|
this.colorIndexByRange = {};
|
|
35576
35596
|
this.hoveredTokens = [];
|
|
35577
35597
|
this.hoveredContentEvaluation = "";
|
|
35598
|
+
this.hideHelp();
|
|
35578
35599
|
}
|
|
35579
35600
|
/**
|
|
35580
35601
|
* Reset the current content to the active cell content
|
|
@@ -40817,6 +40838,7 @@ function extractStyle(data, content, styleId, formatId, borderId) {
|
|
|
40817
40838
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
40818
40839
|
: undefined,
|
|
40819
40840
|
wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
|
|
40841
|
+
shrinkToFit: style.wrapping === "clip" ? true : undefined,
|
|
40820
40842
|
},
|
|
40821
40843
|
};
|
|
40822
40844
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -40837,6 +40859,7 @@ function normalizeStyle(construct, styles) {
|
|
|
40837
40859
|
vertical: styles.alignment.vertical,
|
|
40838
40860
|
horizontal: styles.alignment.horizontal,
|
|
40839
40861
|
wrapText: styles.alignment.wrapText,
|
|
40862
|
+
shrinkToFit: styles.alignment.shrinkToFit,
|
|
40840
40863
|
},
|
|
40841
40864
|
};
|
|
40842
40865
|
return pushElement(style, construct.styles);
|
|
@@ -47887,8 +47910,6 @@ function adaptPivotRange(range, applyChange) {
|
|
|
47887
47910
|
}
|
|
47888
47911
|
const change = applyChange(range);
|
|
47889
47912
|
switch (change.changeType) {
|
|
47890
|
-
case "NONE":
|
|
47891
|
-
return range;
|
|
47892
47913
|
case "REMOVE":
|
|
47893
47914
|
return undefined;
|
|
47894
47915
|
default:
|
|
@@ -55454,7 +55475,7 @@ class GaugeChartConfigPanel extends Component {
|
|
|
55454
55475
|
});
|
|
55455
55476
|
dataRange = this.props.definition.dataRange;
|
|
55456
55477
|
get configurationErrorMessages() {
|
|
55457
|
-
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
|
|
55478
|
+
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
55458
55479
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
55459
55480
|
}
|
|
55460
55481
|
get isDataRangeInvalid() {
|
|
@@ -55540,7 +55561,7 @@ class GaugeChartDesignPanel extends Component {
|
|
|
55540
55561
|
});
|
|
55541
55562
|
}
|
|
55542
55563
|
get designErrorMessages() {
|
|
55543
|
-
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
|
|
55564
|
+
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
55544
55565
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
55545
55566
|
}
|
|
55546
55567
|
get isRangeMinInvalid() {
|
|
@@ -55912,7 +55933,7 @@ class ScorecardChartConfigPanel extends Component {
|
|
|
55912
55933
|
const cancelledReasons = [
|
|
55913
55934
|
...(this.state.keyValueDispatchResult?.reasons || []),
|
|
55914
55935
|
...(this.state.baselineDispatchResult?.reasons || []),
|
|
55915
|
-
];
|
|
55936
|
+
].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
55916
55937
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
55917
55938
|
}
|
|
55918
55939
|
get isKeyValueInvalid() {
|
|
@@ -62218,7 +62239,7 @@ class CorePlugin extends BasePlugin {
|
|
|
62218
62239
|
* @param sheetId an sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
|
|
62219
62240
|
* @param sheetName couple of old and new sheet names to adapt ranges pointing to that sheet
|
|
62220
62241
|
*/
|
|
62221
|
-
adaptRanges(
|
|
62242
|
+
adaptRanges(rangeAdapterFunctions, sheetId, sheetName) { }
|
|
62222
62243
|
/**
|
|
62223
62244
|
* Implement this method to clean unused external resources, such as images
|
|
62224
62245
|
* stored on a server which have been deleted.
|
|
@@ -62297,7 +62318,7 @@ class BordersPlugin extends CorePlugin {
|
|
|
62297
62318
|
}
|
|
62298
62319
|
}
|
|
62299
62320
|
}
|
|
62300
|
-
adaptRanges(applyChange, sheetId) {
|
|
62321
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
62301
62322
|
const newBorders = [];
|
|
62302
62323
|
for (const border of this.borders[sheetId] ?? []) {
|
|
62303
62324
|
const change = applyChange(this.getters.getRangeFromZone(sheetId, border.zone));
|
|
@@ -62660,7 +62681,7 @@ class CellPlugin extends CorePlugin {
|
|
|
62660
62681
|
];
|
|
62661
62682
|
nextId = 1;
|
|
62662
62683
|
cells = {};
|
|
62663
|
-
adaptRanges(applyChange, sheetId, sheetName) {
|
|
62684
|
+
adaptRanges({ applyChange }, sheetId, sheetName) {
|
|
62664
62685
|
for (const sheet of Object.keys(this.cells)) {
|
|
62665
62686
|
for (const cell of Object.values(this.cells[sheet] || {})) {
|
|
62666
62687
|
if (cell.isFormula) {
|
|
@@ -62882,7 +62903,7 @@ class CellPlugin extends CorePlugin {
|
|
|
62882
62903
|
for (const position of positions) {
|
|
62883
62904
|
const cell = this.getters.getCell(position);
|
|
62884
62905
|
const xc = toXC(position.col, position.row);
|
|
62885
|
-
const style = this.
|
|
62906
|
+
const style = this.extractCustomStyle(cell);
|
|
62886
62907
|
if (Object.keys(style).length) {
|
|
62887
62908
|
const styleId = getItemId(style, styles);
|
|
62888
62909
|
positionsByStyle[styleId] ??= [];
|
|
@@ -62928,10 +62949,14 @@ class CellPlugin extends CorePlugin {
|
|
|
62928
62949
|
}
|
|
62929
62950
|
}
|
|
62930
62951
|
}
|
|
62931
|
-
|
|
62932
|
-
const cleanedStyle = { ...style };
|
|
62933
|
-
|
|
62934
|
-
|
|
62952
|
+
extractCustomStyle(cell) {
|
|
62953
|
+
const cleanedStyle = { ...cell.style };
|
|
62954
|
+
const defaultStyle = isNumber(cell.content, DEFAULT_LOCALE)
|
|
62955
|
+
? DEFAULT_NUMBER_STYLE
|
|
62956
|
+
: DEFAULT_STYLE;
|
|
62957
|
+
for (const property in cleanedStyle) {
|
|
62958
|
+
if ((property !== "align" || !cell.isFormula) &&
|
|
62959
|
+
cleanedStyle[property] === defaultStyle[property]) {
|
|
62935
62960
|
delete cleanedStyle[property];
|
|
62936
62961
|
}
|
|
62937
62962
|
}
|
|
@@ -63282,12 +63307,12 @@ class ChartPlugin extends CorePlugin {
|
|
|
63282
63307
|
charts = {};
|
|
63283
63308
|
createChart = chartFactory(this.getters);
|
|
63284
63309
|
validateChartDefinition = (cmd) => validateChartDefinition(this, cmd.definition);
|
|
63285
|
-
adaptRanges(
|
|
63310
|
+
adaptRanges(rangeAdapters) {
|
|
63286
63311
|
for (const [chartId, chart] of Object.entries(this.charts)) {
|
|
63287
63312
|
if (!chart) {
|
|
63288
63313
|
continue;
|
|
63289
63314
|
}
|
|
63290
|
-
const newChart = chart.chart.updateRanges(
|
|
63315
|
+
const newChart = chart.chart.updateRanges(rangeAdapters);
|
|
63291
63316
|
this.history.update("charts", chartId, newChart ? { figureId: chart.figureId, chart: newChart } : undefined);
|
|
63292
63317
|
}
|
|
63293
63318
|
}
|
|
@@ -63542,7 +63567,7 @@ class ConditionalFormatPlugin extends CorePlugin {
|
|
|
63542
63567
|
"getAdaptedCfRanges",
|
|
63543
63568
|
];
|
|
63544
63569
|
cfRules = {};
|
|
63545
|
-
adaptCFFormulas(applyChange) {
|
|
63570
|
+
adaptCFFormulas({ applyChange, adaptFormulaString }) {
|
|
63546
63571
|
for (const sheetId in this.cfRules) {
|
|
63547
63572
|
for (const rule of this.cfRules[sheetId]) {
|
|
63548
63573
|
if (rule.rule.type === "DataBarRule" && rule.rule.rangeValues) {
|
|
@@ -63566,7 +63591,7 @@ class ConditionalFormatPlugin extends CorePlugin {
|
|
|
63566
63591
|
for (let i = 0; i < rule.rule.values.length; i++) {
|
|
63567
63592
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
63568
63593
|
//@ts-expect-error
|
|
63569
|
-
"values", i,
|
|
63594
|
+
"values", i, adaptFormulaString(sheetId, rule.rule.values[i]));
|
|
63570
63595
|
}
|
|
63571
63596
|
}
|
|
63572
63597
|
else if (rule.rule.type === "IconSetRule") {
|
|
@@ -63574,7 +63599,7 @@ class ConditionalFormatPlugin extends CorePlugin {
|
|
|
63574
63599
|
if (rule.rule[inflectionPoint].type === "formula") {
|
|
63575
63600
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
63576
63601
|
//@ts-expect-error
|
|
63577
|
-
inflectionPoint, "value",
|
|
63602
|
+
inflectionPoint, "value", adaptFormulaString(sheetId, rule.rule[inflectionPoint].value));
|
|
63578
63603
|
}
|
|
63579
63604
|
}
|
|
63580
63605
|
}
|
|
@@ -63584,14 +63609,14 @@ class ConditionalFormatPlugin extends CorePlugin {
|
|
|
63584
63609
|
if (ruleValue?.type === "formula" && ruleValue?.value) {
|
|
63585
63610
|
this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
|
|
63586
63611
|
//@ts-expect-error
|
|
63587
|
-
value, "value",
|
|
63612
|
+
value, "value", adaptFormulaString(sheetId, ruleValue.value));
|
|
63588
63613
|
}
|
|
63589
63614
|
}
|
|
63590
63615
|
}
|
|
63591
63616
|
}
|
|
63592
63617
|
}
|
|
63593
63618
|
}
|
|
63594
|
-
adaptCFRanges(sheetId, applyChange) {
|
|
63619
|
+
adaptCFRanges(sheetId, { applyChange }) {
|
|
63595
63620
|
for (const rule of this.cfRules[sheetId]) {
|
|
63596
63621
|
for (const range of rule.ranges) {
|
|
63597
63622
|
const change = applyChange(range);
|
|
@@ -63615,12 +63640,12 @@ class ConditionalFormatPlugin extends CorePlugin {
|
|
|
63615
63640
|
}
|
|
63616
63641
|
}
|
|
63617
63642
|
}
|
|
63618
|
-
adaptRanges(
|
|
63643
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
63619
63644
|
const sheetIds = sheetId ? [sheetId] : Object.keys(this.cfRules);
|
|
63620
63645
|
for (const sheetId of sheetIds) {
|
|
63621
|
-
this.adaptCFRanges(sheetId,
|
|
63646
|
+
this.adaptCFRanges(sheetId, rangeAdapters);
|
|
63622
63647
|
}
|
|
63623
|
-
this.adaptCFFormulas(
|
|
63648
|
+
this.adaptCFFormulas(rangeAdapters);
|
|
63624
63649
|
}
|
|
63625
63650
|
// ---------------------------------------------------------------------------
|
|
63626
63651
|
// Command Handling
|
|
@@ -63997,23 +64022,23 @@ class DataValidationPlugin extends CorePlugin {
|
|
|
63997
64022
|
"getValidationRuleForCell",
|
|
63998
64023
|
];
|
|
63999
64024
|
rules = {};
|
|
64000
|
-
adaptRanges(
|
|
64001
|
-
this.adaptDVRanges(sheetId,
|
|
64002
|
-
this.adaptDVFormulas(
|
|
64025
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
64026
|
+
this.adaptDVRanges(sheetId, rangeAdapters);
|
|
64027
|
+
this.adaptDVFormulas(rangeAdapters);
|
|
64003
64028
|
}
|
|
64004
|
-
adaptDVFormulas(
|
|
64029
|
+
adaptDVFormulas({ adaptFormulaString }) {
|
|
64005
64030
|
for (const sheetId in this.rules) {
|
|
64006
64031
|
const rules = this.rules[sheetId];
|
|
64007
64032
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
64008
64033
|
const rule = this.rules[sheetId][ruleIndex];
|
|
64009
64034
|
for (let valueIndex = 0; valueIndex < rule.criterion.values.length; valueIndex++) {
|
|
64010
|
-
const value =
|
|
64035
|
+
const value = adaptFormulaString(sheetId, rule.criterion.values[valueIndex]);
|
|
64011
64036
|
this.history.update("rules", sheetId, ruleIndex, "criterion", "values", valueIndex, value);
|
|
64012
64037
|
}
|
|
64013
64038
|
}
|
|
64014
64039
|
}
|
|
64015
64040
|
}
|
|
64016
|
-
adaptDVRanges(sheetId, applyChange) {
|
|
64041
|
+
adaptDVRanges(sheetId, { applyChange }) {
|
|
64017
64042
|
const rules = this.rules[sheetId];
|
|
64018
64043
|
for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
|
|
64019
64044
|
const rule = this.rules[sheetId][ruleIndex];
|
|
@@ -64287,7 +64312,7 @@ class FigurePlugin extends CorePlugin {
|
|
|
64287
64312
|
// ---------------------------------------------------------------------------
|
|
64288
64313
|
// Command Handling
|
|
64289
64314
|
// ---------------------------------------------------------------------------
|
|
64290
|
-
adaptRanges(applyChange, sheetId) {
|
|
64315
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
64291
64316
|
for (const figure of this.getFigures(sheetId)) {
|
|
64292
64317
|
const change = applyChange(this.getters.getRangeFromZone(sheetId, {
|
|
64293
64318
|
left: figure.col,
|
|
@@ -65118,8 +65143,8 @@ class MergePlugin extends CorePlugin {
|
|
|
65118
65143
|
break;
|
|
65119
65144
|
}
|
|
65120
65145
|
}
|
|
65121
|
-
adaptRanges(
|
|
65122
|
-
this.applyRangeChangeOnSheet(sheetId,
|
|
65146
|
+
adaptRanges(rangeAdapters, sheetId) {
|
|
65147
|
+
this.applyRangeChangeOnSheet(sheetId, rangeAdapters);
|
|
65123
65148
|
}
|
|
65124
65149
|
// ---------------------------------------------------------------------------
|
|
65125
65150
|
// Getters
|
|
@@ -65421,7 +65446,7 @@ class MergePlugin extends CorePlugin {
|
|
|
65421
65446
|
/**
|
|
65422
65447
|
* Apply a range change on merges of a particular sheet.
|
|
65423
65448
|
*/
|
|
65424
|
-
applyRangeChangeOnSheet(sheetId, applyChange) {
|
|
65449
|
+
applyRangeChangeOnSheet(sheetId, { applyChange }) {
|
|
65425
65450
|
const merges = Object.entries(this.merges[sheetId] || {});
|
|
65426
65451
|
for (const [mergeId, range] of merges) {
|
|
65427
65452
|
if (range) {
|
|
@@ -65495,7 +65520,7 @@ function rangeToMerge(mergeId, range) {
|
|
|
65495
65520
|
};
|
|
65496
65521
|
}
|
|
65497
65522
|
|
|
65498
|
-
class
|
|
65523
|
+
class RangeAdapterPlugin {
|
|
65499
65524
|
getters;
|
|
65500
65525
|
providers = [];
|
|
65501
65526
|
isAdaptingRanges = false;
|
|
@@ -65503,7 +65528,6 @@ class RangeAdapter {
|
|
|
65503
65528
|
this.getters = getters;
|
|
65504
65529
|
}
|
|
65505
65530
|
static getters = [
|
|
65506
|
-
"adaptFormulaStringDependencies",
|
|
65507
65531
|
"copyFormulaStringForSheet",
|
|
65508
65532
|
"extendRange",
|
|
65509
65533
|
"getRangeString",
|
|
@@ -65534,8 +65558,8 @@ class RangeAdapter {
|
|
|
65534
65558
|
throw new Error("Plugins cannot dispatch commands during adaptRanges phase");
|
|
65535
65559
|
}
|
|
65536
65560
|
const rangeAdapter = getRangeAdapter(cmd);
|
|
65537
|
-
if (rangeAdapter
|
|
65538
|
-
this.executeOnAllRanges(rangeAdapter
|
|
65561
|
+
if (rangeAdapter) {
|
|
65562
|
+
this.executeOnAllRanges(rangeAdapter);
|
|
65539
65563
|
}
|
|
65540
65564
|
}
|
|
65541
65565
|
finalize() { }
|
|
@@ -65554,11 +65578,15 @@ class RangeAdapter {
|
|
|
65554
65578
|
return result;
|
|
65555
65579
|
};
|
|
65556
65580
|
}
|
|
65557
|
-
executeOnAllRanges(
|
|
65581
|
+
executeOnAllRanges(rangeAdapter) {
|
|
65558
65582
|
this.isAdaptingRanges = true;
|
|
65559
|
-
const
|
|
65583
|
+
const adapterFunctions = {
|
|
65584
|
+
applyChange: this.verifyRangeRemoved(rangeAdapter.applyChange),
|
|
65585
|
+
adaptRangeString: (defaultSheetId, sheetXC) => adaptStringRange(defaultSheetId, sheetXC, rangeAdapter),
|
|
65586
|
+
adaptFormulaString: (defaultSheetId, formula) => adaptFormulaStringRanges(defaultSheetId, formula, rangeAdapter),
|
|
65587
|
+
};
|
|
65560
65588
|
for (const provider of this.providers) {
|
|
65561
|
-
provider(
|
|
65589
|
+
provider(adapterFunctions, rangeAdapter.sheetId, rangeAdapter.sheetName);
|
|
65562
65590
|
}
|
|
65563
65591
|
this.isAdaptingRanges = false;
|
|
65564
65592
|
}
|
|
@@ -65726,18 +65754,6 @@ class RangeAdapter {
|
|
|
65726
65754
|
const unionOfZones = unionUnboundedZones(...zones);
|
|
65727
65755
|
return this.getRangeFromZone(ranges[0].sheetId, unionOfZones);
|
|
65728
65756
|
}
|
|
65729
|
-
adaptFormulaStringDependencies(sheetId, formula, applyChange) {
|
|
65730
|
-
if (!formula.startsWith("=")) {
|
|
65731
|
-
return formula;
|
|
65732
|
-
}
|
|
65733
|
-
const compiledFormula = compile(formula);
|
|
65734
|
-
const updatedDependencies = compiledFormula.dependencies.map((dep) => {
|
|
65735
|
-
const range = this.getters.getRangeFromSheetXC(sheetId, dep);
|
|
65736
|
-
const changedRange = applyChange(range);
|
|
65737
|
-
return changedRange.changeType === "NONE" ? range : changedRange.range;
|
|
65738
|
-
});
|
|
65739
|
-
return this.getters.getFormulaString(sheetId, compiledFormula.tokens, updatedDependencies);
|
|
65740
|
-
}
|
|
65741
65757
|
/**
|
|
65742
65758
|
* Copy a formula string to another sheet.
|
|
65743
65759
|
*
|
|
@@ -66625,7 +66641,7 @@ class TablePlugin extends CorePlugin {
|
|
|
66625
66641
|
static getters = ["getCoreTable", "getCoreTables", "getCoreTableMatchingTopLeft"];
|
|
66626
66642
|
tables = {};
|
|
66627
66643
|
nextTableId = 1;
|
|
66628
|
-
adaptRanges(applyChange, sheetId) {
|
|
66644
|
+
adaptRanges({ applyChange }, sheetId) {
|
|
66629
66645
|
for (const table of this.getCoreTables(sheetId)) {
|
|
66630
66646
|
this.applyRangeChangeOnTable(sheetId, table, applyChange);
|
|
66631
66647
|
}
|
|
@@ -67710,7 +67726,7 @@ class PivotCorePlugin extends CorePlugin {
|
|
|
67710
67726
|
}
|
|
67711
67727
|
}
|
|
67712
67728
|
}
|
|
67713
|
-
adaptRanges(applyChange) {
|
|
67729
|
+
adaptRanges({ applyChange, adaptFormulaString }) {
|
|
67714
67730
|
for (const pivotId in this.pivots) {
|
|
67715
67731
|
const definition = deepCopy(this.pivots[pivotId]?.definition);
|
|
67716
67732
|
if (!definition) {
|
|
@@ -67730,19 +67746,13 @@ class PivotCorePlugin extends CorePlugin {
|
|
|
67730
67746
|
continue;
|
|
67731
67747
|
}
|
|
67732
67748
|
const sheetId = measure.computedBy.sheetId;
|
|
67733
|
-
const compiledFormula = this.compiledMeasureFormulas[pivotId][measureId]
|
|
67734
|
-
|
|
67735
|
-
|
|
67736
|
-
|
|
67737
|
-
|
|
67738
|
-
newDependencies.push(range);
|
|
67739
|
-
}
|
|
67740
|
-
else {
|
|
67741
|
-
newDependencies.push(change.range);
|
|
67742
|
-
}
|
|
67743
|
-
}
|
|
67744
|
-
const newFormulaString = this.getters.getFormulaString(sheetId, compiledFormula.tokens, newDependencies);
|
|
67749
|
+
const { formula: compiledFormula, dependencies: indirectDependencies } = this.compiledMeasureFormulas[pivotId][measureId];
|
|
67750
|
+
// adapt direct dependencies
|
|
67751
|
+
this.history.update("compiledMeasureFormulas", pivotId, measureId, "formula", "dependencies", compiledFormula.dependencies.map((range) => applyChange(range).range));
|
|
67752
|
+
// adapt all dependencies (including indirect)
|
|
67753
|
+
this.history.update("compiledMeasureFormulas", pivotId, measure.id, "dependencies", indirectDependencies.map((range) => applyChange(range).range));
|
|
67745
67754
|
const oldFormulaString = measure.computedBy.formula;
|
|
67755
|
+
const newFormulaString = adaptFormulaString(sheetId, oldFormulaString);
|
|
67746
67756
|
if (newFormulaString !== oldFormulaString) {
|
|
67747
67757
|
this.replaceMeasureFormula(pivotId, measure, newFormulaString);
|
|
67748
67758
|
}
|
|
@@ -67904,7 +67914,6 @@ class PivotCorePlugin extends CorePlugin {
|
|
|
67904
67914
|
formula: newFormulaString,
|
|
67905
67915
|
sheetId: measure.computedBy.sheetId,
|
|
67906
67916
|
});
|
|
67907
|
-
this.compileCalculatedMeasures(pivotId, pivot.definition.measures);
|
|
67908
67917
|
}
|
|
67909
67918
|
checkSortedColumnInMeasures(definition) {
|
|
67910
67919
|
const measures = definition.measures.map((measure) => measure.id);
|
|
@@ -69550,11 +69559,16 @@ class SpreadingRelation {
|
|
|
69550
69559
|
return this.arrayFormulasToResults.get(formulasPosition);
|
|
69551
69560
|
}
|
|
69552
69561
|
/**
|
|
69553
|
-
* Remove a
|
|
69562
|
+
* Remove a spreading relation for a given array formula position
|
|
69563
|
+
* and its result zone
|
|
69554
69564
|
*/
|
|
69555
69565
|
removeNode(position) {
|
|
69566
|
+
const resultZone = this.arrayFormulasToResults.get(position);
|
|
69567
|
+
if (!resultZone) {
|
|
69568
|
+
return;
|
|
69569
|
+
}
|
|
69556
69570
|
this.resultsToArrayFormulas.remove({
|
|
69557
|
-
boundingBox: { sheetId: position.sheetId, zone:
|
|
69571
|
+
boundingBox: { sheetId: position.sheetId, zone: resultZone },
|
|
69558
69572
|
data: position,
|
|
69559
69573
|
});
|
|
69560
69574
|
this.arrayFormulasToResults.delete(position);
|
|
@@ -69867,6 +69881,10 @@ class Evaluator {
|
|
|
69867
69881
|
// empty matrix
|
|
69868
69882
|
return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
|
|
69869
69883
|
}
|
|
69884
|
+
if (nbRows === 1 && nbColumns === 1) {
|
|
69885
|
+
// single value matrix
|
|
69886
|
+
return createEvaluatedCell(nullValueToZeroValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
|
|
69887
|
+
}
|
|
69870
69888
|
const resultZone = {
|
|
69871
69889
|
top: formulaPosition.row,
|
|
69872
69890
|
bottom: formulaPosition.row + nbRows - 1,
|
|
@@ -71586,6 +71604,7 @@ class HeaderSizeUIPlugin extends CoreViewPlugin {
|
|
|
71586
71604
|
handle(cmd) {
|
|
71587
71605
|
switch (cmd.type) {
|
|
71588
71606
|
case "START":
|
|
71607
|
+
case "UPDATE_LOCALE":
|
|
71589
71608
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
71590
71609
|
this.initializeSheet(sheetId);
|
|
71591
71610
|
}
|
|
@@ -71707,7 +71726,7 @@ class HeaderSizeUIPlugin extends CoreViewPlugin {
|
|
|
71707
71726
|
}
|
|
71708
71727
|
const cell = this.getters.getCell(position);
|
|
71709
71728
|
const colSize = this.getters.getColSize(position.sheetId, position.col);
|
|
71710
|
-
return getDefaultCellHeight(this.ctx, cell, colSize);
|
|
71729
|
+
return getDefaultCellHeight(this.ctx, cell, this.getters.getLocale(), colSize);
|
|
71711
71730
|
}
|
|
71712
71731
|
isInMultiRowMerge(position) {
|
|
71713
71732
|
const merge = this.getters.getMerge(position);
|
|
@@ -74030,7 +74049,7 @@ function addConditionalFormatCommandAdaptRange(cmd, applyChange) {
|
|
|
74030
74049
|
cmd.cf.rule = {
|
|
74031
74050
|
...rule,
|
|
74032
74051
|
rangeValues: rule.rangeValues
|
|
74033
|
-
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange)
|
|
74052
|
+
? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange).range
|
|
74034
74053
|
: undefined,
|
|
74035
74054
|
};
|
|
74036
74055
|
}
|
|
@@ -87650,6 +87669,9 @@ function addStyles(styles) {
|
|
|
87650
87669
|
if (style.alignment && style.alignment.wrapText) {
|
|
87651
87670
|
alignAttrs.push(["wrapText", "1"]);
|
|
87652
87671
|
}
|
|
87672
|
+
if (style.alignment && style.alignment.shrinkToFit) {
|
|
87673
|
+
alignAttrs.push(["shrinkToFit", "1"]);
|
|
87674
|
+
}
|
|
87653
87675
|
if (alignAttrs.length > 0) {
|
|
87654
87676
|
attributes.push(["applyAlignment", "1"]); // for Libre Office
|
|
87655
87677
|
styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
|
|
@@ -88420,7 +88442,7 @@ class Model extends EventBus {
|
|
|
88420
88442
|
this.config = this.setupConfig(config);
|
|
88421
88443
|
this.session = this.setupSession(workbookData.revisionId);
|
|
88422
88444
|
this.coreGetters = {};
|
|
88423
|
-
this.range = new
|
|
88445
|
+
this.range = new RangeAdapterPlugin(this.coreGetters);
|
|
88424
88446
|
this.coreGetters.getRangeString = this.range.getRangeString.bind(this.range);
|
|
88425
88447
|
this.coreGetters.getRangeFromSheetXC = this.range.getRangeFromSheetXC.bind(this.range);
|
|
88426
88448
|
this.coreGetters.createAdaptedRanges = this.range.createAdaptedRanges.bind(this.range);
|
|
@@ -88434,8 +88456,6 @@ class Model extends EventBus {
|
|
|
88434
88456
|
this.coreGetters.extendRange = this.range.extendRange.bind(this.range);
|
|
88435
88457
|
this.coreGetters.getRangesUnion = this.range.getRangesUnion.bind(this.range);
|
|
88436
88458
|
this.coreGetters.removeRangesSheetPrefix = this.range.removeRangesSheetPrefix.bind(this.range);
|
|
88437
|
-
this.coreGetters.adaptFormulaStringDependencies =
|
|
88438
|
-
this.range.adaptFormulaStringDependencies.bind(this.range);
|
|
88439
88459
|
this.coreGetters.copyFormulaStringForSheet = this.range.copyFormulaStringForSheet.bind(this.range);
|
|
88440
88460
|
this.getters = {
|
|
88441
88461
|
isReadonly: () => this.config.mode === "readonly" || this.config.mode === "dashboard",
|
|
@@ -89123,6 +89143,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
|
|
|
89123
89143
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
89124
89144
|
|
|
89125
89145
|
|
|
89126
|
-
__info__.version = "19.0.
|
|
89127
|
-
__info__.date = "2026-01-
|
|
89128
|
-
__info__.hash = "
|
|
89146
|
+
__info__.version = "19.0.18";
|
|
89147
|
+
__info__.date = "2026-01-21T11:06:57.346Z";
|
|
89148
|
+
__info__.hash = "bd44f59";
|