@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.
@@ -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.40
6
- * @date 2026-01-14T09:59:34.210Z
7
- * @hash 755a787
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
- const content = cell.isFormula ? "" : cell.content;
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.removeDefaultStyleValues(cell.style);
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
- removeDefaultStyleValues(style) {
55263
- const cleanedStyle = { ...style };
55264
- for (const property in DEFAULT_STYLE) {
55265
- if (cleanedStyle[property] === DEFAULT_STYLE[property]) {
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 node, also remove it from other nodes adjacency list
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: positionToZone(position) },
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.40";
77427
- __info__.date = "2026-01-14T09:59:34.210Z";
77428
- __info__.hash = "755a787";
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.40
6
- * @date 2026-01-14T09:59:34.210Z
7
- * @hash 755a787
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
- const content = cell.isFormula ? "" : cell.content;
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.removeDefaultStyleValues(cell.style);
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
- removeDefaultStyleValues(style) {
55264
- const cleanedStyle = { ...style };
55265
- for (const property in DEFAULT_STYLE) {
55266
- if (cleanedStyle[property] === DEFAULT_STYLE[property]) {
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 node, also remove it from other nodes adjacency list
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: positionToZone(position) },
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.40";
77473
- __info__.date = "2026-01-14T09:59:34.210Z";
77474
- __info__.hash = "755a787";
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);