@odoo/o-spreadsheet 18.3.32 → 18.3.33

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