@odoo/o-spreadsheet 18.2.40 → 18.2.41
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 +60 -23
- package/dist/o-spreadsheet.d.ts +11 -11
- package/dist/o-spreadsheet.esm.js +60 -23
- package/dist/o-spreadsheet.iife.js +60 -23
- package/dist/o-spreadsheet.iife.min.js +401 -401
- 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.2.
|
|
6
|
-
* @date 2026-01-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.2.41
|
|
6
|
+
* @date 2026-01-21T11:04:23.927Z
|
|
7
|
+
* @hash 2d9316b
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, App, blockDom, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
|
|
@@ -32,7 +32,8 @@ function createAction(item) {
|
|
|
32
32
|
return children
|
|
33
33
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
34
34
|
.flat()
|
|
35
|
-
.map(createAction)
|
|
35
|
+
.map(createAction)
|
|
36
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
36
37
|
}
|
|
37
38
|
: () => [],
|
|
38
39
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
@@ -302,6 +303,7 @@ const DEFAULT_STYLE = {
|
|
|
302
303
|
fillColor: "",
|
|
303
304
|
textColor: "",
|
|
304
305
|
};
|
|
306
|
+
const DEFAULT_NUMBER_STYLE = { ...DEFAULT_STYLE, align: "right" };
|
|
305
307
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
306
308
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
307
309
|
// Fonts
|
|
@@ -6491,11 +6493,20 @@ function computeTextLinesHeight(textLineHeight, numberOfLines = 1) {
|
|
|
6491
6493
|
/**
|
|
6492
6494
|
* Get the default height of the cell given its style.
|
|
6493
6495
|
*/
|
|
6494
|
-
function getDefaultCellHeight(ctx, cell, colSize) {
|
|
6496
|
+
function getDefaultCellHeight(ctx, cell, locale, colSize) {
|
|
6495
6497
|
if (!cell || (!cell.isFormula && !cell.content)) {
|
|
6496
6498
|
return DEFAULT_CELL_HEIGHT;
|
|
6497
6499
|
}
|
|
6498
|
-
|
|
6500
|
+
let content = "";
|
|
6501
|
+
try {
|
|
6502
|
+
if (!cell.isFormula) {
|
|
6503
|
+
const localeFormat = { format: cell.format, locale };
|
|
6504
|
+
content = formatValue(parseLiteral(cell.content, locale), localeFormat);
|
|
6505
|
+
}
|
|
6506
|
+
}
|
|
6507
|
+
catch {
|
|
6508
|
+
content = CellErrorType.GenericError;
|
|
6509
|
+
}
|
|
6499
6510
|
return getCellContentHeight(ctx, content, cell.style, colSize);
|
|
6500
6511
|
}
|
|
6501
6512
|
function getCellContentHeight(ctx, content, style, colSize) {
|
|
@@ -20891,7 +20902,16 @@ function createComputeFunction(descr, functionName) {
|
|
|
20891
20902
|
}
|
|
20892
20903
|
acceptToVectorize.push(!argDefinition.acceptMatrix);
|
|
20893
20904
|
}
|
|
20894
|
-
return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
|
|
20905
|
+
return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
|
|
20906
|
+
}
|
|
20907
|
+
function replaceErrorPlaceholderInResult(result) {
|
|
20908
|
+
if (!isMatrix(result)) {
|
|
20909
|
+
replaceFunctionNamePlaceholder(result, functionName);
|
|
20910
|
+
}
|
|
20911
|
+
else {
|
|
20912
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
20913
|
+
}
|
|
20914
|
+
return result;
|
|
20895
20915
|
}
|
|
20896
20916
|
function errorHandlingCompute(...args) {
|
|
20897
20917
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -20918,13 +20938,11 @@ function createComputeFunction(descr, functionName) {
|
|
|
20918
20938
|
const result = descr.compute.apply(this, args);
|
|
20919
20939
|
if (!isMatrix(result)) {
|
|
20920
20940
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
20921
|
-
replaceFunctionNamePlaceholder(result, functionName);
|
|
20922
20941
|
return result;
|
|
20923
20942
|
}
|
|
20924
20943
|
return { value: result };
|
|
20925
20944
|
}
|
|
20926
20945
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
20927
|
-
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
20928
20946
|
return result;
|
|
20929
20947
|
}
|
|
20930
20948
|
return matrixMap(result, (row) => ({ value: row }));
|
|
@@ -24837,6 +24855,7 @@ function extractStyle(data, content, styleId, formatId, borderId) {
|
|
|
24837
24855
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
24838
24856
|
: undefined,
|
|
24839
24857
|
wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
|
|
24858
|
+
shrinkToFit: style.wrapping === "clip" ? true : undefined,
|
|
24840
24859
|
},
|
|
24841
24860
|
};
|
|
24842
24861
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -24857,6 +24876,7 @@ function normalizeStyle(construct, styles) {
|
|
|
24857
24876
|
vertical: styles.alignment.vertical,
|
|
24858
24877
|
horizontal: styles.alignment.horizontal,
|
|
24859
24878
|
wrapText: styles.alignment.wrapText,
|
|
24879
|
+
shrinkToFit: styles.alignment.shrinkToFit,
|
|
24860
24880
|
},
|
|
24861
24881
|
};
|
|
24862
24882
|
return pushElement(style, construct.styles);
|
|
@@ -40549,7 +40569,7 @@ class GaugeChartConfigPanel extends Component {
|
|
|
40549
40569
|
});
|
|
40550
40570
|
dataRange = this.props.definition.dataRange;
|
|
40551
40571
|
get configurationErrorMessages() {
|
|
40552
|
-
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
|
|
40572
|
+
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
40553
40573
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
40554
40574
|
}
|
|
40555
40575
|
get isDataRangeInvalid() {
|
|
@@ -41816,7 +41836,7 @@ class GaugeChartDesignPanel extends Component {
|
|
|
41816
41836
|
});
|
|
41817
41837
|
}
|
|
41818
41838
|
get designErrorMessages() {
|
|
41819
|
-
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
|
|
41839
|
+
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
41820
41840
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
41821
41841
|
}
|
|
41822
41842
|
get isRangeMinInvalid() {
|
|
@@ -42137,7 +42157,7 @@ class ScorecardChartConfigPanel extends Component {
|
|
|
42137
42157
|
const cancelledReasons = [
|
|
42138
42158
|
...(this.state.keyValueDispatchResult?.reasons || []),
|
|
42139
42159
|
...(this.state.baselineDispatchResult?.reasons || []),
|
|
42140
|
-
];
|
|
42160
|
+
].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
42141
42161
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
42142
42162
|
}
|
|
42143
42163
|
get isKeyValueInvalid() {
|
|
@@ -55213,7 +55233,7 @@ class CellPlugin extends CorePlugin {
|
|
|
55213
55233
|
for (const position of positions) {
|
|
55214
55234
|
const cell = this.getters.getCell(position);
|
|
55215
55235
|
const xc = toXC(position.col, position.row);
|
|
55216
|
-
const style = this.
|
|
55236
|
+
const style = this.extractCustomStyle(cell);
|
|
55217
55237
|
if (Object.keys(style).length) {
|
|
55218
55238
|
const styleId = getItemId(style, styles);
|
|
55219
55239
|
positionsByStyle[styleId] ??= [];
|
|
@@ -55259,10 +55279,14 @@ class CellPlugin extends CorePlugin {
|
|
|
55259
55279
|
}
|
|
55260
55280
|
}
|
|
55261
55281
|
}
|
|
55262
|
-
|
|
55263
|
-
const cleanedStyle = { ...style };
|
|
55264
|
-
|
|
55265
|
-
|
|
55282
|
+
extractCustomStyle(cell) {
|
|
55283
|
+
const cleanedStyle = { ...cell.style };
|
|
55284
|
+
const defaultStyle = isNumber(cell.content, DEFAULT_LOCALE)
|
|
55285
|
+
? DEFAULT_NUMBER_STYLE
|
|
55286
|
+
: DEFAULT_STYLE;
|
|
55287
|
+
for (const property in cleanedStyle) {
|
|
55288
|
+
if ((property !== "align" || !cell.isFormula) &&
|
|
55289
|
+
cleanedStyle[property] === defaultStyle[property]) {
|
|
55266
55290
|
delete cleanedStyle[property];
|
|
55267
55291
|
}
|
|
55268
55292
|
}
|
|
@@ -61513,11 +61537,16 @@ class SpreadingRelation {
|
|
|
61513
61537
|
return this.arrayFormulasToResults.get(formulasPosition);
|
|
61514
61538
|
}
|
|
61515
61539
|
/**
|
|
61516
|
-
* Remove a
|
|
61540
|
+
* Remove a spreading relation for a given array formula position
|
|
61541
|
+
* and its result zone
|
|
61517
61542
|
*/
|
|
61518
61543
|
removeNode(position) {
|
|
61544
|
+
const resultZone = this.arrayFormulasToResults.get(position);
|
|
61545
|
+
if (!resultZone) {
|
|
61546
|
+
return;
|
|
61547
|
+
}
|
|
61519
61548
|
this.resultsToArrayFormulas.remove({
|
|
61520
|
-
boundingBox: { sheetId: position.sheetId, zone:
|
|
61549
|
+
boundingBox: { sheetId: position.sheetId, zone: resultZone },
|
|
61521
61550
|
data: position,
|
|
61522
61551
|
});
|
|
61523
61552
|
this.arrayFormulasToResults.delete(position);
|
|
@@ -61805,6 +61834,10 @@ class Evaluator {
|
|
|
61805
61834
|
// empty matrix
|
|
61806
61835
|
return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
|
|
61807
61836
|
}
|
|
61837
|
+
if (nbRows === 1 && nbColumns === 1) {
|
|
61838
|
+
// single value matrix
|
|
61839
|
+
return createEvaluatedCell(nullValueToZeroValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
|
|
61840
|
+
}
|
|
61808
61841
|
const resultZone = {
|
|
61809
61842
|
top: formulaPosition.row,
|
|
61810
61843
|
bottom: formulaPosition.row + nbRows - 1,
|
|
@@ -63229,6 +63262,7 @@ class HeaderSizeUIPlugin extends CoreViewPlugin {
|
|
|
63229
63262
|
handle(cmd) {
|
|
63230
63263
|
switch (cmd.type) {
|
|
63231
63264
|
case "START":
|
|
63265
|
+
case "UPDATE_LOCALE":
|
|
63232
63266
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
63233
63267
|
this.initializeSheet(sheetId);
|
|
63234
63268
|
}
|
|
@@ -63334,7 +63368,7 @@ class HeaderSizeUIPlugin extends CoreViewPlugin {
|
|
|
63334
63368
|
}
|
|
63335
63369
|
const cell = this.getters.getCell(position);
|
|
63336
63370
|
const colSize = this.getters.getColSize(position.sheetId, position.col);
|
|
63337
|
-
return getDefaultCellHeight(this.ctx, cell, colSize);
|
|
63371
|
+
return getDefaultCellHeight(this.ctx, cell, this.getters.getLocale(), colSize);
|
|
63338
63372
|
}
|
|
63339
63373
|
isInMultiRowMerge(position) {
|
|
63340
63374
|
const merge = this.getters.getMerge(position);
|
|
@@ -75974,6 +76008,9 @@ function addStyles(styles) {
|
|
|
75974
76008
|
if (style.alignment && style.alignment.wrapText) {
|
|
75975
76009
|
alignAttrs.push(["wrapText", "1"]);
|
|
75976
76010
|
}
|
|
76011
|
+
if (style.alignment && style.alignment.shrinkToFit) {
|
|
76012
|
+
alignAttrs.push(["shrinkToFit", "1"]);
|
|
76013
|
+
}
|
|
75977
76014
|
if (alignAttrs.length > 0) {
|
|
75978
76015
|
attributes.push(["applyAlignment", "1"]); // for Libre Office
|
|
75979
76016
|
styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
|
|
@@ -77423,6 +77460,6 @@ const chartHelpers = { ...CHART_HELPERS, ...CHART_RUNTIME_HELPERS };
|
|
|
77423
77460
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
77424
77461
|
|
|
77425
77462
|
|
|
77426
|
-
__info__.version = "18.2.
|
|
77427
|
-
__info__.date = "2026-01-
|
|
77428
|
-
__info__.hash = "
|
|
77463
|
+
__info__.version = "18.2.41";
|
|
77464
|
+
__info__.date = "2026-01-21T11:04:23.927Z";
|
|
77465
|
+
__info__.hash = "2d9316b";
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-01-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.2.41
|
|
6
|
+
* @date 2026-01-21T11:04:23.927Z
|
|
7
|
+
* @hash 2d9316b
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -33,7 +33,8 @@
|
|
|
33
33
|
return children
|
|
34
34
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
35
35
|
.flat()
|
|
36
|
-
.map(createAction)
|
|
36
|
+
.map(createAction)
|
|
37
|
+
.sort((a, b) => a.sequence - b.sequence);
|
|
37
38
|
}
|
|
38
39
|
: () => [],
|
|
39
40
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
@@ -303,6 +304,7 @@
|
|
|
303
304
|
fillColor: "",
|
|
304
305
|
textColor: "",
|
|
305
306
|
};
|
|
307
|
+
const DEFAULT_NUMBER_STYLE = { ...DEFAULT_STYLE, align: "right" };
|
|
306
308
|
const DEFAULT_VERTICAL_ALIGN = DEFAULT_STYLE.verticalAlign;
|
|
307
309
|
const DEFAULT_WRAPPING_MODE = DEFAULT_STYLE.wrapping;
|
|
308
310
|
// Fonts
|
|
@@ -6492,11 +6494,20 @@
|
|
|
6492
6494
|
/**
|
|
6493
6495
|
* Get the default height of the cell given its style.
|
|
6494
6496
|
*/
|
|
6495
|
-
function getDefaultCellHeight(ctx, cell, colSize) {
|
|
6497
|
+
function getDefaultCellHeight(ctx, cell, locale, colSize) {
|
|
6496
6498
|
if (!cell || (!cell.isFormula && !cell.content)) {
|
|
6497
6499
|
return DEFAULT_CELL_HEIGHT;
|
|
6498
6500
|
}
|
|
6499
|
-
|
|
6501
|
+
let content = "";
|
|
6502
|
+
try {
|
|
6503
|
+
if (!cell.isFormula) {
|
|
6504
|
+
const localeFormat = { format: cell.format, locale };
|
|
6505
|
+
content = formatValue(parseLiteral(cell.content, locale), localeFormat);
|
|
6506
|
+
}
|
|
6507
|
+
}
|
|
6508
|
+
catch {
|
|
6509
|
+
content = CellErrorType.GenericError;
|
|
6510
|
+
}
|
|
6500
6511
|
return getCellContentHeight(ctx, content, cell.style, colSize);
|
|
6501
6512
|
}
|
|
6502
6513
|
function getCellContentHeight(ctx, content, style, colSize) {
|
|
@@ -20892,7 +20903,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20892
20903
|
}
|
|
20893
20904
|
acceptToVectorize.push(!argDefinition.acceptMatrix);
|
|
20894
20905
|
}
|
|
20895
|
-
return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
|
|
20906
|
+
return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
|
|
20907
|
+
}
|
|
20908
|
+
function replaceErrorPlaceholderInResult(result) {
|
|
20909
|
+
if (!isMatrix(result)) {
|
|
20910
|
+
replaceFunctionNamePlaceholder(result, functionName);
|
|
20911
|
+
}
|
|
20912
|
+
else {
|
|
20913
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
20914
|
+
}
|
|
20915
|
+
return result;
|
|
20896
20916
|
}
|
|
20897
20917
|
function errorHandlingCompute(...args) {
|
|
20898
20918
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -20919,13 +20939,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
20919
20939
|
const result = descr.compute.apply(this, args);
|
|
20920
20940
|
if (!isMatrix(result)) {
|
|
20921
20941
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
20922
|
-
replaceFunctionNamePlaceholder(result, functionName);
|
|
20923
20942
|
return result;
|
|
20924
20943
|
}
|
|
20925
20944
|
return { value: result };
|
|
20926
20945
|
}
|
|
20927
20946
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
20928
|
-
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
20929
20947
|
return result;
|
|
20930
20948
|
}
|
|
20931
20949
|
return matrixMap(result, (row) => ({ value: row }));
|
|
@@ -24838,6 +24856,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
24838
24856
|
? V_ALIGNMENT_EXPORT_CONVERSION_MAP[style.verticalAlign]
|
|
24839
24857
|
: undefined,
|
|
24840
24858
|
wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
|
|
24859
|
+
shrinkToFit: style.wrapping === "clip" ? true : undefined,
|
|
24841
24860
|
},
|
|
24842
24861
|
};
|
|
24843
24862
|
styles.font["strike"] = !!style?.strikethrough || undefined;
|
|
@@ -24858,6 +24877,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
24858
24877
|
vertical: styles.alignment.vertical,
|
|
24859
24878
|
horizontal: styles.alignment.horizontal,
|
|
24860
24879
|
wrapText: styles.alignment.wrapText,
|
|
24880
|
+
shrinkToFit: styles.alignment.shrinkToFit,
|
|
24861
24881
|
},
|
|
24862
24882
|
};
|
|
24863
24883
|
return pushElement(style, construct.styles);
|
|
@@ -40550,7 +40570,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
40550
40570
|
});
|
|
40551
40571
|
dataRange = this.props.definition.dataRange;
|
|
40552
40572
|
get configurationErrorMessages() {
|
|
40553
|
-
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
|
|
40573
|
+
const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
40554
40574
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
40555
40575
|
}
|
|
40556
40576
|
get isDataRangeInvalid() {
|
|
@@ -41817,7 +41837,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
41817
41837
|
});
|
|
41818
41838
|
}
|
|
41819
41839
|
get designErrorMessages() {
|
|
41820
|
-
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
|
|
41840
|
+
const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
41821
41841
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
41822
41842
|
}
|
|
41823
41843
|
get isRangeMinInvalid() {
|
|
@@ -42138,7 +42158,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
42138
42158
|
const cancelledReasons = [
|
|
42139
42159
|
...(this.state.keyValueDispatchResult?.reasons || []),
|
|
42140
42160
|
...(this.state.baselineDispatchResult?.reasons || []),
|
|
42141
|
-
];
|
|
42161
|
+
].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
|
|
42142
42162
|
return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
|
|
42143
42163
|
}
|
|
42144
42164
|
get isKeyValueInvalid() {
|
|
@@ -55214,7 +55234,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55214
55234
|
for (const position of positions) {
|
|
55215
55235
|
const cell = this.getters.getCell(position);
|
|
55216
55236
|
const xc = toXC(position.col, position.row);
|
|
55217
|
-
const style = this.
|
|
55237
|
+
const style = this.extractCustomStyle(cell);
|
|
55218
55238
|
if (Object.keys(style).length) {
|
|
55219
55239
|
const styleId = getItemId(style, styles);
|
|
55220
55240
|
positionsByStyle[styleId] ??= [];
|
|
@@ -55260,10 +55280,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55260
55280
|
}
|
|
55261
55281
|
}
|
|
55262
55282
|
}
|
|
55263
|
-
|
|
55264
|
-
const cleanedStyle = { ...style };
|
|
55265
|
-
|
|
55266
|
-
|
|
55283
|
+
extractCustomStyle(cell) {
|
|
55284
|
+
const cleanedStyle = { ...cell.style };
|
|
55285
|
+
const defaultStyle = isNumber(cell.content, DEFAULT_LOCALE)
|
|
55286
|
+
? DEFAULT_NUMBER_STYLE
|
|
55287
|
+
: DEFAULT_STYLE;
|
|
55288
|
+
for (const property in cleanedStyle) {
|
|
55289
|
+
if ((property !== "align" || !cell.isFormula) &&
|
|
55290
|
+
cleanedStyle[property] === defaultStyle[property]) {
|
|
55267
55291
|
delete cleanedStyle[property];
|
|
55268
55292
|
}
|
|
55269
55293
|
}
|
|
@@ -61514,11 +61538,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61514
61538
|
return this.arrayFormulasToResults.get(formulasPosition);
|
|
61515
61539
|
}
|
|
61516
61540
|
/**
|
|
61517
|
-
* Remove a
|
|
61541
|
+
* Remove a spreading relation for a given array formula position
|
|
61542
|
+
* and its result zone
|
|
61518
61543
|
*/
|
|
61519
61544
|
removeNode(position) {
|
|
61545
|
+
const resultZone = this.arrayFormulasToResults.get(position);
|
|
61546
|
+
if (!resultZone) {
|
|
61547
|
+
return;
|
|
61548
|
+
}
|
|
61520
61549
|
this.resultsToArrayFormulas.remove({
|
|
61521
|
-
boundingBox: { sheetId: position.sheetId, zone:
|
|
61550
|
+
boundingBox: { sheetId: position.sheetId, zone: resultZone },
|
|
61522
61551
|
data: position,
|
|
61523
61552
|
});
|
|
61524
61553
|
this.arrayFormulasToResults.delete(position);
|
|
@@ -61806,6 +61835,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61806
61835
|
// empty matrix
|
|
61807
61836
|
return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
|
|
61808
61837
|
}
|
|
61838
|
+
if (nbRows === 1 && nbColumns === 1) {
|
|
61839
|
+
// single value matrix
|
|
61840
|
+
return createEvaluatedCell(nullValueToZeroValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
|
|
61841
|
+
}
|
|
61809
61842
|
const resultZone = {
|
|
61810
61843
|
top: formulaPosition.row,
|
|
61811
61844
|
bottom: formulaPosition.row + nbRows - 1,
|
|
@@ -63230,6 +63263,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
63230
63263
|
handle(cmd) {
|
|
63231
63264
|
switch (cmd.type) {
|
|
63232
63265
|
case "START":
|
|
63266
|
+
case "UPDATE_LOCALE":
|
|
63233
63267
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
63234
63268
|
this.initializeSheet(sheetId);
|
|
63235
63269
|
}
|
|
@@ -63335,7 +63369,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
63335
63369
|
}
|
|
63336
63370
|
const cell = this.getters.getCell(position);
|
|
63337
63371
|
const colSize = this.getters.getColSize(position.sheetId, position.col);
|
|
63338
|
-
return getDefaultCellHeight(this.ctx, cell, colSize);
|
|
63372
|
+
return getDefaultCellHeight(this.ctx, cell, this.getters.getLocale(), colSize);
|
|
63339
63373
|
}
|
|
63340
63374
|
isInMultiRowMerge(position) {
|
|
63341
63375
|
const merge = this.getters.getMerge(position);
|
|
@@ -75975,6 +76009,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
75975
76009
|
if (style.alignment && style.alignment.wrapText) {
|
|
75976
76010
|
alignAttrs.push(["wrapText", "1"]);
|
|
75977
76011
|
}
|
|
76012
|
+
if (style.alignment && style.alignment.shrinkToFit) {
|
|
76013
|
+
alignAttrs.push(["shrinkToFit", "1"]);
|
|
76014
|
+
}
|
|
75978
76015
|
if (alignAttrs.length > 0) {
|
|
75979
76016
|
attributes.push(["applyAlignment", "1"]); // for Libre Office
|
|
75980
76017
|
styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
|
|
@@ -77469,9 +77506,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
77469
77506
|
exports.tokenize = tokenize;
|
|
77470
77507
|
|
|
77471
77508
|
|
|
77472
|
-
__info__.version = "18.2.
|
|
77473
|
-
__info__.date = "2026-01-
|
|
77474
|
-
__info__.hash = "
|
|
77509
|
+
__info__.version = "18.2.41";
|
|
77510
|
+
__info__.date = "2026-01-21T11:04:23.927Z";
|
|
77511
|
+
__info__.hash = "2d9316b";
|
|
77475
77512
|
|
|
77476
77513
|
|
|
77477
77514
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|