@odoo/o-spreadsheet 19.1.3 → 19.1.4

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 19.1.3
6
- * @date 2026-01-14T10:02:32.431Z
7
- * @hash 52a3e52
5
+ * @version 19.1.4
6
+ * @date 2026-01-21T11:07:17.372Z
7
+ * @hash ceae12a
8
8
  */
9
9
 
10
10
  (function (exports, owl) {
@@ -3842,7 +3842,11 @@
3842
3842
  if (operator === "<>" || operator === "=") {
3843
3843
  let result;
3844
3844
  if (typeof value === typeof operand) {
3845
- if (typeof value === "string" && typeof operand === "string") {
3845
+ if (value === "" && operand === "") {
3846
+ // fast path to avoid regex evaluation
3847
+ result = true;
3848
+ }
3849
+ else if (typeof value === "string" && typeof operand === "string") {
3846
3850
  result = wildcardToRegExp(operand).test(value);
3847
3851
  }
3848
3852
  else {
@@ -4196,7 +4200,16 @@
4196
4200
  }
4197
4201
  acceptToVectorize.push(!argDefinition.acceptMatrix);
4198
4202
  }
4199
- return applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize);
4203
+ return replaceErrorPlaceholderInResult(applyVectorization(errorHandlingCompute.bind(this), args, acceptToVectorize));
4204
+ }
4205
+ function replaceErrorPlaceholderInResult(result) {
4206
+ if (!isMatrix(result)) {
4207
+ replaceFunctionNamePlaceholder(result, descr.name);
4208
+ }
4209
+ else {
4210
+ matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
4211
+ }
4212
+ return result;
4200
4213
  }
4201
4214
  function errorHandlingCompute(...args) {
4202
4215
  for (let i = 0; i < args.length; i++) {
@@ -4225,13 +4238,12 @@
4225
4238
  const result = descr.compute.apply(this, args);
4226
4239
  if (!isMatrix(result)) {
4227
4240
  if (typeof result === "object" && result !== null && "value" in result) {
4228
- replaceFunctionNamePlaceholder(result, descr.name);
4229
4241
  return result;
4230
4242
  }
4243
+ descr.name;
4231
4244
  return { value: result };
4232
4245
  }
4233
4246
  if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
4234
- matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, descr.name));
4235
4247
  return result;
4236
4248
  }
4237
4249
  return matrixMap(result, (row) => ({ value: row }));
@@ -18342,7 +18354,8 @@
18342
18354
  return children
18343
18355
  .map((child) => (typeof child === "function" ? child(env) : child))
18344
18356
  .flat()
18345
- .map(createAction);
18357
+ .map(createAction)
18358
+ .sort((a, b) => a.sequence - b.sequence);
18346
18359
  }
18347
18360
  : () => [],
18348
18361
  isReadonlyAllowed: item.isReadonlyAllowed || false,
@@ -20003,7 +20016,7 @@ stores.inject(MyMetaStore, storeInstance);
20003
20016
  const groups = groupConsecutive(elements);
20004
20017
  return (range) => {
20005
20018
  if (range.sheetId !== cmd.sheetId) {
20006
- return { changeType: "NONE" };
20019
+ return { changeType: "NONE", range };
20007
20020
  }
20008
20021
  let newRange = range;
20009
20022
  let changeType = "NONE";
@@ -20030,10 +20043,7 @@ stores.inject(MyMetaStore, storeInstance);
20030
20043
  newRange = createAdaptedRange(newRange, dimension, changeType, -(max - min + 1));
20031
20044
  }
20032
20045
  }
20033
- if (changeType !== "NONE") {
20034
- return { changeType, range: newRange };
20035
- }
20036
- return { changeType: "NONE" };
20046
+ return { changeType, range: newRange };
20037
20047
  };
20038
20048
  }
20039
20049
  function getApplyRangeChangeAddColRow(cmd) {
@@ -20042,7 +20052,7 @@ stores.inject(MyMetaStore, storeInstance);
20042
20052
  const dimension = cmd.dimension === "COL" ? "columns" : "rows";
20043
20053
  return (range) => {
20044
20054
  if (range.sheetId !== cmd.sheetId) {
20045
- return { changeType: "NONE" };
20055
+ return { changeType: "NONE", range };
20046
20056
  }
20047
20057
  if (cmd.position === "after") {
20048
20058
  if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) {
@@ -20072,13 +20082,13 @@ stores.inject(MyMetaStore, storeInstance);
20072
20082
  };
20073
20083
  }
20074
20084
  }
20075
- return { changeType: "NONE" };
20085
+ return { changeType: "NONE", range };
20076
20086
  };
20077
20087
  }
20078
20088
  function getApplyRangeChangeDeleteSheet(cmd) {
20079
20089
  return (range) => {
20080
20090
  if (range.sheetId !== cmd.sheetId && range.invalidSheetName !== cmd.sheetName) {
20081
- return { changeType: "NONE" };
20091
+ return { changeType: "NONE", range };
20082
20092
  }
20083
20093
  const invalidSheetName = cmd.sheetName;
20084
20094
  range = {
@@ -20105,14 +20115,14 @@ stores.inject(MyMetaStore, storeInstance);
20105
20115
  const newRange = { ...range, sheetId, invalidSheetName };
20106
20116
  return { changeType: "CHANGE", range: newRange };
20107
20117
  }
20108
- return { changeType: "NONE" };
20118
+ return { changeType: "NONE", range };
20109
20119
  };
20110
20120
  }
20111
20121
  function getApplyRangeChangeMoveRange(cmd) {
20112
20122
  const originZone = cmd.target[0];
20113
20123
  return (range) => {
20114
20124
  if (range.sheetId !== cmd.sheetId || !isZoneInside(range.zone, originZone)) {
20115
- return { changeType: "NONE" };
20125
+ return { changeType: "NONE", range };
20116
20126
  }
20117
20127
  const targetSheetId = cmd.targetSheetId;
20118
20128
  const offsetX = cmd.col - originZone.left;
@@ -20233,11 +20243,20 @@ stores.inject(MyMetaStore, storeInstance);
20233
20243
  /**
20234
20244
  * Get the default height of the cell given its style.
20235
20245
  */
20236
- function getDefaultCellHeight(ctx, cell, style, colSize) {
20246
+ function getDefaultCellHeight(ctx, cell, style, locale, colSize) {
20237
20247
  if (!cell || (!cell.isFormula && !cell.content)) {
20238
20248
  return DEFAULT_CELL_HEIGHT;
20239
20249
  }
20240
- const content = cell.isFormula ? "" : cell.content;
20250
+ let content = "";
20251
+ try {
20252
+ if (!cell.isFormula) {
20253
+ const localeFormat = { format: cell.format, locale };
20254
+ content = formatValue(parseLiteral(cell.content, locale), localeFormat);
20255
+ }
20256
+ }
20257
+ catch {
20258
+ content = CellErrorType.GenericError;
20259
+ }
20241
20260
  return getCellContentHeight(ctx, content, style, colSize);
20242
20261
  }
20243
20262
  function getCellContentHeight(ctx, content, style, colSize) {
@@ -21104,7 +21123,7 @@ stores.inject(MyMetaStore, storeInstance);
21104
21123
  continue;
21105
21124
  }
21106
21125
  const sheetXC = tokens[tokenIdx].value;
21107
- const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange);
21126
+ const newSheetXC = adaptStringRange(defaultSheetId, sheetXC, applyChange).range;
21108
21127
  if (sheetXC !== newSheetXC) {
21109
21128
  tokens[tokenIdx] = {
21110
21129
  value: newSheetXC,
@@ -21114,23 +21133,30 @@ stores.inject(MyMetaStore, storeInstance);
21114
21133
  }
21115
21134
  return concat$1(tokens.map((token) => token.value));
21116
21135
  }
21117
- function adaptStringRange(defaultSheetId, sheetXC, applyChange) {
21136
+ function adaptStringRange(defaultSheetId, sheetXC, rangeAdapter) {
21118
21137
  const sheetName = splitReference(sheetXC).sheetName;
21119
21138
  if (sheetName
21120
- ? !isSheetNameEqual(sheetName, applyChange.sheetName.old)
21121
- : defaultSheetId !== applyChange.sheetId) {
21122
- return sheetXC;
21139
+ ? !isSheetNameEqual(sheetName, rangeAdapter.sheetName.old)
21140
+ : defaultSheetId !== rangeAdapter.sheetId) {
21141
+ return { changeType: "NONE", range: sheetXC };
21123
21142
  }
21124
- const sheetId = sheetName ? applyChange.sheetId : defaultSheetId;
21143
+ const sheetId = sheetName ? rangeAdapter.sheetId : defaultSheetId;
21125
21144
  const range = getRange(sheetXC, sheetId);
21126
21145
  if (range.invalidXc) {
21127
- return sheetXC;
21146
+ return { changeType: "NONE", range: sheetXC };
21128
21147
  }
21129
- const change = applyChange.applyChange(range);
21148
+ const change = rangeAdapter.applyChange(range);
21130
21149
  if (change.changeType === "NONE" || change.changeType === "REMOVE") {
21131
- return sheetXC;
21150
+ return { changeType: change.changeType, range: sheetXC };
21132
21151
  }
21133
- return getRangeString(change.range, defaultSheetId, getSheetNameGetter(applyChange));
21152
+ const rangeStr = getRangeString(change.range, defaultSheetId, getSheetNameGetter(rangeAdapter));
21153
+ if (rangeStr === CellErrorType.InvalidReference) {
21154
+ return { changeType: "REMOVE", range: rangeStr };
21155
+ }
21156
+ return {
21157
+ changeType: change.changeType,
21158
+ range: rangeStr,
21159
+ };
21134
21160
  }
21135
21161
  function getSheetNameGetter(applyChange) {
21136
21162
  return (sheetId) => {
@@ -21235,8 +21261,6 @@ stores.inject(MyMetaStore, storeInstance);
21235
21261
  }
21236
21262
  const change = applyChange(range);
21237
21263
  switch (change.changeType) {
21238
- case "NONE":
21239
- return range;
21240
21264
  case "REMOVE":
21241
21265
  return undefined;
21242
21266
  default:
@@ -21388,16 +21412,16 @@ stores.inject(MyMetaStore, storeInstance);
21388
21412
  function transformChartDefinitionWithDataSetsWithZone(chartSheetId, definition, applyChange) {
21389
21413
  let labelRange;
21390
21414
  if (definition.labelRange) {
21391
- const adaptedRange = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
21392
- if (adaptedRange !== CellErrorType.InvalidReference) {
21415
+ const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.labelRange, applyChange);
21416
+ if (changeType !== "REMOVE") {
21393
21417
  labelRange = adaptedRange;
21394
21418
  }
21395
21419
  }
21396
21420
  const dataSets = [];
21397
21421
  for (const dataSet of definition.dataSets) {
21398
21422
  const newDataSet = { ...dataSet };
21399
- const adaptedRange = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
21400
- if (adaptedRange !== CellErrorType.InvalidReference) {
21423
+ const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, dataSet.dataRange, applyChange);
21424
+ if (changeType !== "REMOVE") {
21401
21425
  newDataSet.dataRange = adaptedRange;
21402
21426
  dataSets.push(newDataSet);
21403
21427
  }
@@ -31891,7 +31915,7 @@ stores.inject(MyMetaStore, storeInstance);
31891
31915
  cmd.cf.rule = {
31892
31916
  ...rule,
31893
31917
  rangeValues: rule.rangeValues
31894
- ? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange)
31918
+ ? adaptStringRange(cmd.sheetId, rule.rangeValues, applyChange).range
31895
31919
  : undefined,
31896
31920
  };
31897
31921
  }
@@ -34513,6 +34537,7 @@ stores.inject(MyMetaStore, storeInstance);
34513
34537
  : undefined,
34514
34538
  wrapText: style.wrapping === "wrap" || content?.includes(NEWLINE) ? true : undefined,
34515
34539
  textRotation: style.rotation ? rotationToXLSX(style.rotation) : undefined,
34540
+ shrinkToFit: style.wrapping === "clip" ? true : undefined,
34516
34541
  },
34517
34542
  };
34518
34543
  styles.font["strike"] = !!style?.strikethrough || undefined;
@@ -34557,6 +34582,7 @@ stores.inject(MyMetaStore, storeInstance);
34557
34582
  horizontal: styles.alignment.horizontal,
34558
34583
  wrapText: styles.alignment.wrapText,
34559
34584
  textRotation: styles.alignment.textRotation,
34585
+ shrinkToFit: styles.alignment.shrinkToFit,
34560
34586
  },
34561
34587
  };
34562
34588
  return pushElement(style, construct.styles);
@@ -38844,7 +38870,7 @@ stores.inject(MyMetaStore, storeInstance);
38844
38870
  * @param sheetId an sheetId to adapt either range of that sheet specifically, or ranges pointing to that sheet
38845
38871
  * @param sheetName couple of old and new sheet names to adapt ranges pointing to that sheet
38846
38872
  */
38847
- adaptRanges(applyChange, sheetId, sheetName) { }
38873
+ adaptRanges(rangeAdapterFunctions, sheetId, sheetName) { }
38848
38874
  }
38849
38875
 
38850
38876
  class BordersPlugin extends CorePlugin {
@@ -38918,7 +38944,7 @@ stores.inject(MyMetaStore, storeInstance);
38918
38944
  }
38919
38945
  }
38920
38946
  }
38921
- adaptRanges(applyChange, sheetId) {
38947
+ adaptRanges({ applyChange }, sheetId) {
38922
38948
  const newBorders = [];
38923
38949
  for (const border of this.borders[sheetId] ?? []) {
38924
38950
  const change = applyChange(this.getters.getRangeFromZone(sheetId, border.zone));
@@ -39399,7 +39425,7 @@ stores.inject(MyMetaStore, storeInstance);
39399
39425
  ];
39400
39426
  nextId = 1;
39401
39427
  cells = {};
39402
- adaptRanges(applyChange, sheetId, sheetName) {
39428
+ adaptRanges({ applyChange }, sheetId, sheetName) {
39403
39429
  for (const sheet of Object.keys(this.cells)) {
39404
39430
  for (const cell of Object.values(this.cells[sheet] || {})) {
39405
39431
  if (cell.isFormula) {
@@ -39960,12 +39986,12 @@ stores.inject(MyMetaStore, storeInstance);
39960
39986
  charts = {};
39961
39987
  createChart = chartFactory(this.getters);
39962
39988
  validateChartDefinition = (cmd) => validateChartDefinition(this, cmd.definition);
39963
- adaptRanges(applyChange, sheetId, adaptSheetName) {
39989
+ adaptRanges(rangeAdapters) {
39964
39990
  for (const [chartId, chart] of Object.entries(this.charts)) {
39965
39991
  if (!chart) {
39966
39992
  continue;
39967
39993
  }
39968
- const newChart = chart.chart.updateRanges(applyChange, sheetId, adaptSheetName);
39994
+ const newChart = chart.chart.updateRanges(rangeAdapters);
39969
39995
  this.history.update("charts", chartId, newChart ? { figureId: chart.figureId, chart: newChart } : undefined);
39970
39996
  }
39971
39997
  }
@@ -40786,7 +40812,7 @@ stores.inject(MyMetaStore, storeInstance);
40786
40812
  "getAdaptedCfRanges",
40787
40813
  ];
40788
40814
  cfRules = {};
40789
- adaptCFFormulas(applyChange) {
40815
+ adaptCFFormulas({ applyChange, adaptFormulaString }) {
40790
40816
  for (const sheetId in this.cfRules) {
40791
40817
  for (const rule of this.cfRules[sheetId]) {
40792
40818
  if (rule.rule.type === "DataBarRule" && rule.rule.rangeValues) {
@@ -40810,7 +40836,7 @@ stores.inject(MyMetaStore, storeInstance);
40810
40836
  for (let i = 0; i < rule.rule.values.length; i++) {
40811
40837
  this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
40812
40838
  //@ts-expect-error
40813
- "values", i, this.getters.adaptFormulaStringDependencies(sheetId, rule.rule.values[i], applyChange));
40839
+ "values", i, adaptFormulaString(sheetId, rule.rule.values[i]));
40814
40840
  }
40815
40841
  }
40816
40842
  else if (rule.rule.type === "IconSetRule") {
@@ -40818,7 +40844,7 @@ stores.inject(MyMetaStore, storeInstance);
40818
40844
  if (rule.rule[inflectionPoint].type === "formula") {
40819
40845
  this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
40820
40846
  //@ts-expect-error
40821
- inflectionPoint, "value", this.getters.adaptFormulaStringDependencies(sheetId, rule.rule[inflectionPoint].value, applyChange));
40847
+ inflectionPoint, "value", adaptFormulaString(sheetId, rule.rule[inflectionPoint].value));
40822
40848
  }
40823
40849
  }
40824
40850
  }
@@ -40828,14 +40854,14 @@ stores.inject(MyMetaStore, storeInstance);
40828
40854
  if (ruleValue?.type === "formula" && ruleValue?.value) {
40829
40855
  this.history.update("cfRules", sheetId, this.cfRules[sheetId].indexOf(rule), "rule",
40830
40856
  //@ts-expect-error
40831
- value, "value", this.getters.adaptFormulaStringDependencies(sheetId, ruleValue.value, applyChange));
40857
+ value, "value", adaptFormulaString(sheetId, ruleValue.value));
40832
40858
  }
40833
40859
  }
40834
40860
  }
40835
40861
  }
40836
40862
  }
40837
40863
  }
40838
- adaptCFRanges(sheetId, applyChange) {
40864
+ adaptCFRanges(sheetId, { applyChange }) {
40839
40865
  for (const rule of this.cfRules[sheetId]) {
40840
40866
  for (const range of rule.ranges) {
40841
40867
  const change = applyChange(range);
@@ -40859,12 +40885,12 @@ stores.inject(MyMetaStore, storeInstance);
40859
40885
  }
40860
40886
  }
40861
40887
  }
40862
- adaptRanges(applyChange, sheetId) {
40888
+ adaptRanges(rangeAdapters, sheetId) {
40863
40889
  const sheetIds = sheetId ? [sheetId] : Object.keys(this.cfRules);
40864
40890
  for (const sheetId of sheetIds) {
40865
- this.adaptCFRanges(sheetId, applyChange);
40891
+ this.adaptCFRanges(sheetId, rangeAdapters);
40866
40892
  }
40867
- this.adaptCFFormulas(applyChange);
40893
+ this.adaptCFFormulas(rangeAdapters);
40868
40894
  }
40869
40895
  // ---------------------------------------------------------------------------
40870
40896
  // Command Handling
@@ -41241,23 +41267,23 @@ stores.inject(MyMetaStore, storeInstance);
41241
41267
  "getValidationRuleForCell",
41242
41268
  ];
41243
41269
  rules = {};
41244
- adaptRanges(applyChange, sheetId) {
41245
- this.adaptDVRanges(sheetId, applyChange);
41246
- this.adaptDVFormulas(applyChange);
41270
+ adaptRanges(rangeAdapters, sheetId) {
41271
+ this.adaptDVRanges(sheetId, rangeAdapters);
41272
+ this.adaptDVFormulas(rangeAdapters);
41247
41273
  }
41248
- adaptDVFormulas(applyChange) {
41274
+ adaptDVFormulas({ adaptFormulaString }) {
41249
41275
  for (const sheetId in this.rules) {
41250
41276
  const rules = this.rules[sheetId];
41251
41277
  for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
41252
41278
  const rule = this.rules[sheetId][ruleIndex];
41253
41279
  for (let valueIndex = 0; valueIndex < rule.criterion.values.length; valueIndex++) {
41254
- const value = this.getters.adaptFormulaStringDependencies(sheetId, rule.criterion.values[valueIndex], applyChange);
41280
+ const value = adaptFormulaString(sheetId, rule.criterion.values[valueIndex]);
41255
41281
  this.history.update("rules", sheetId, ruleIndex, "criterion", "values", valueIndex, value);
41256
41282
  }
41257
41283
  }
41258
41284
  }
41259
41285
  }
41260
- adaptDVRanges(sheetId, applyChange) {
41286
+ adaptDVRanges(sheetId, { applyChange }) {
41261
41287
  const rules = this.rules[sheetId];
41262
41288
  for (let ruleIndex = rules.length - 1; ruleIndex >= 0; ruleIndex--) {
41263
41289
  const rule = this.rules[sheetId][ruleIndex];
@@ -41531,7 +41557,7 @@ stores.inject(MyMetaStore, storeInstance);
41531
41557
  // ---------------------------------------------------------------------------
41532
41558
  // Command Handling
41533
41559
  // ---------------------------------------------------------------------------
41534
- adaptRanges(applyChange, sheetId) {
41560
+ adaptRanges({ applyChange }, sheetId) {
41535
41561
  for (const figure of this.getFigures(sheetId)) {
41536
41562
  const change = applyChange(this.getters.getRangeFromZone(sheetId, {
41537
41563
  left: figure.col,
@@ -42771,8 +42797,8 @@ stores.inject(MyMetaStore, storeInstance);
42771
42797
  break;
42772
42798
  }
42773
42799
  }
42774
- adaptRanges(applyChange, sheetId) {
42775
- this.applyRangeChangeOnSheet(sheetId, applyChange);
42800
+ adaptRanges(rangeAdapters, sheetId) {
42801
+ this.applyRangeChangeOnSheet(sheetId, rangeAdapters);
42776
42802
  }
42777
42803
  // ---------------------------------------------------------------------------
42778
42804
  // Getters
@@ -43072,7 +43098,7 @@ stores.inject(MyMetaStore, storeInstance);
43072
43098
  /**
43073
43099
  * Apply a range change on merges of a particular sheet.
43074
43100
  */
43075
- applyRangeChangeOnSheet(sheetId, applyChange) {
43101
+ applyRangeChangeOnSheet(sheetId, { applyChange }) {
43076
43102
  const merges = Object.entries(this.merges[sheetId] || {});
43077
43103
  for (const [mergeId, range] of merges) {
43078
43104
  if (range) {
@@ -44691,8 +44717,6 @@ stores.inject(MyMetaStore, storeInstance);
44691
44717
  }
44692
44718
  const change = applyChange(range);
44693
44719
  switch (change.changeType) {
44694
- case "NONE":
44695
- return range;
44696
44720
  case "REMOVE":
44697
44721
  return undefined;
44698
44722
  default:
@@ -44801,7 +44825,7 @@ stores.inject(MyMetaStore, storeInstance);
44801
44825
  }
44802
44826
  }
44803
44827
  }
44804
- adaptRanges(applyChange) {
44828
+ adaptRanges({ applyChange, adaptFormulaString }) {
44805
44829
  for (const pivotId in this.pivots) {
44806
44830
  const definition = deepCopy(this.pivots[pivotId]?.definition);
44807
44831
  if (!definition) {
@@ -44821,19 +44845,13 @@ stores.inject(MyMetaStore, storeInstance);
44821
44845
  continue;
44822
44846
  }
44823
44847
  const sheetId = measure.computedBy.sheetId;
44824
- const compiledFormula = this.compiledMeasureFormulas[pivotId][measureId].formula;
44825
- const newDependencies = [];
44826
- for (const range of compiledFormula.dependencies) {
44827
- const change = applyChange(range);
44828
- if (change.changeType === "NONE") {
44829
- newDependencies.push(range);
44830
- }
44831
- else {
44832
- newDependencies.push(change.range);
44833
- }
44834
- }
44835
- const newFormulaString = this.getters.getFormulaString(sheetId, compiledFormula.tokens, newDependencies);
44848
+ const { formula: compiledFormula, dependencies: indirectDependencies } = this.compiledMeasureFormulas[pivotId][measureId];
44849
+ // adapt direct dependencies
44850
+ this.history.update("compiledMeasureFormulas", pivotId, measureId, "formula", "dependencies", compiledFormula.dependencies.map((range) => applyChange(range).range));
44851
+ // adapt all dependencies (including indirect)
44852
+ this.history.update("compiledMeasureFormulas", pivotId, measure.id, "dependencies", indirectDependencies.map((range) => applyChange(range).range));
44836
44853
  const oldFormulaString = measure.computedBy.formula;
44854
+ const newFormulaString = adaptFormulaString(sheetId, oldFormulaString);
44837
44855
  if (newFormulaString !== oldFormulaString) {
44838
44856
  this.replaceMeasureFormula(pivotId, measure, newFormulaString);
44839
44857
  }
@@ -44995,7 +45013,6 @@ stores.inject(MyMetaStore, storeInstance);
44995
45013
  formula: newFormulaString,
44996
45014
  sheetId: measure.computedBy.sheetId,
44997
45015
  });
44998
- this.compileCalculatedMeasures(pivotId, pivot.definition.measures);
44999
45016
  }
45000
45017
  checkSortedColumnInMeasures(definition) {
45001
45018
  const measures = definition.measures.map((measure) => measure.id);
@@ -46082,7 +46099,7 @@ stores.inject(MyMetaStore, storeInstance);
46082
46099
  break;
46083
46100
  }
46084
46101
  }
46085
- adaptRanges(applyChange, sheetId) {
46102
+ adaptRanges({ applyChange }, sheetId) {
46086
46103
  const newStyles = [];
46087
46104
  for (const style of this.styles[sheetId] ?? []) {
46088
46105
  const change = applyChange(this.getters.getRangeFromZone(sheetId, style.zone));
@@ -46595,7 +46612,7 @@ stores.inject(MyMetaStore, storeInstance);
46595
46612
  static getters = ["getCoreTable", "getCoreTables", "getCoreTableMatchingTopLeft"];
46596
46613
  tables = {};
46597
46614
  nextTableId = 1;
46598
- adaptRanges(applyChange, sheetId) {
46615
+ adaptRanges({ applyChange }, sheetId) {
46599
46616
  for (const table of this.getCoreTables(sheetId)) {
46600
46617
  this.applyRangeChangeOnTable(sheetId, table, applyChange);
46601
46618
  }
@@ -48427,11 +48444,16 @@ stores.inject(MyMetaStore, storeInstance);
48427
48444
  return this.arrayFormulasToResults.get(formulasPosition);
48428
48445
  }
48429
48446
  /**
48430
- * Remove a node, also remove it from other nodes adjacency list
48447
+ * Remove a spreading relation for a given array formula position
48448
+ * and its result zone
48431
48449
  */
48432
48450
  removeNode(position) {
48451
+ const resultZone = this.arrayFormulasToResults.get(position);
48452
+ if (!resultZone) {
48453
+ return;
48454
+ }
48433
48455
  this.resultsToArrayFormulas.remove({
48434
- boundingBox: { sheetId: position.sheetId, zone: positionToZone(position) },
48456
+ boundingBox: { sheetId: position.sheetId, zone: resultZone },
48435
48457
  data: position,
48436
48458
  });
48437
48459
  this.arrayFormulasToResults.delete(position);
@@ -48758,6 +48780,10 @@ stores.inject(MyMetaStore, storeInstance);
48758
48780
  // empty matrix
48759
48781
  return createEvaluatedCell({ value: 0 }, this.getters.getLocale(), cellData);
48760
48782
  }
48783
+ if (nbRows === 1 && nbColumns === 1) {
48784
+ // single value matrix
48785
+ return createEvaluatedCell(validateNumberValue(formulaReturn[0][0]), this.getters.getLocale(), cellData);
48786
+ }
48761
48787
  const resultZone = {
48762
48788
  top: formulaPosition.row,
48763
48789
  bottom: formulaPosition.row + nbRows - 1,
@@ -50363,14 +50389,14 @@ stores.inject(MyMetaStore, storeInstance);
50363
50389
  let baseline;
50364
50390
  let keyValue;
50365
50391
  if (definition.baseline) {
50366
- const adaptedRange = adaptStringRange(chartSheetId, definition.baseline, applyChange);
50367
- if (adaptedRange !== CellErrorType.InvalidReference) {
50392
+ const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.baseline, applyChange);
50393
+ if (changeType !== "REMOVE") {
50368
50394
  baseline = adaptedRange;
50369
50395
  }
50370
50396
  }
50371
50397
  if (definition.keyValue) {
50372
- const adaptedRange = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
50373
- if (adaptedRange !== CellErrorType.InvalidReference) {
50398
+ const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.keyValue, applyChange);
50399
+ if (changeType !== "REMOVE") {
50374
50400
  keyValue = adaptedRange;
50375
50401
  }
50376
50402
  }
@@ -50427,7 +50453,7 @@ stores.inject(MyMetaStore, storeInstance);
50427
50453
  // This kind of graph is not exportable in Excel
50428
50454
  return undefined;
50429
50455
  }
50430
- updateRanges(applyChange) {
50456
+ updateRanges({ applyChange }) {
50431
50457
  const baseline = adaptChartRange(this.baseline, applyChange);
50432
50458
  const keyValue = adaptChartRange(this.keyValue, applyChange);
50433
50459
  if (this.baseline === baseline && this.keyValue === keyValue) {
@@ -50880,15 +50906,15 @@ stores.inject(MyMetaStore, storeInstance);
50880
50906
  if (!extensionsLoaded) {
50881
50907
  registerChartJSExtensions();
50882
50908
  }
50883
- if (!globalThis.Chart.registry.controllers.get(type)) {
50884
- console.log(`Chart of type "${type}" is not registered in Chart.js library.`);
50909
+ const config = deepCopy(runtime.chartJsConfig);
50910
+ config.plugins = [backgroundColorChartJSPlugin];
50911
+ if (!globalThis.Chart.registry.controllers.get(config.type)) {
50912
+ console.log(`Chart of type "${config.type}" is not registered in Chart.js library.`);
50885
50913
  if (!extensionsLoaded) {
50886
50914
  unregisterChartJsExtensions();
50887
50915
  }
50888
50916
  return imageUrl;
50889
50917
  }
50890
- const config = deepCopy(runtime.chartJsConfig);
50891
- config.plugins = [backgroundColorChartJSPlugin];
50892
50918
  const chart = new globalThis.Chart(canvas, config);
50893
50919
  try {
50894
50920
  imageUrl = await canvasToObjectUrl(canvas);
@@ -50928,15 +50954,15 @@ stores.inject(MyMetaStore, storeInstance);
50928
50954
  if (!extensionsLoaded) {
50929
50955
  registerChartJSExtensions();
50930
50956
  }
50931
- if (!globalThis.Chart.registry.controllers.get(type)) {
50932
- console.log(`Chart of type "${type}" is not registered in Chart.js library.`);
50957
+ const config = deepCopy(runtime.chartJsConfig);
50958
+ config.plugins = [backgroundColorChartJSPlugin];
50959
+ if (!globalThis.Chart.registry.controllers.get(config.type)) {
50960
+ console.log(`Chart of type "${config.type}" is not registered in Chart.js library.`);
50933
50961
  if (!extensionsLoaded) {
50934
50962
  unregisterChartJsExtensions();
50935
50963
  }
50936
50964
  return chartBlob;
50937
50965
  }
50938
- const config = deepCopy(runtime.chartJsConfig);
50939
- config.plugins = [backgroundColorChartJSPlugin];
50940
50966
  const chart = new globalThis.Chart(canvas, config);
50941
50967
  try {
50942
50968
  chartBlob = await canvasToBlob(canvas);
@@ -51601,6 +51627,7 @@ stores.inject(MyMetaStore, storeInstance);
51601
51627
  handle(cmd) {
51602
51628
  switch (cmd.type) {
51603
51629
  case "START":
51630
+ case "UPDATE_LOCALE":
51604
51631
  for (const sheetId of this.getters.getSheetIds()) {
51605
51632
  this.initializeSheet(sheetId);
51606
51633
  }
@@ -51738,7 +51765,7 @@ stores.inject(MyMetaStore, storeInstance);
51738
51765
  const cell = this.getters.getCell(position);
51739
51766
  const style = this.getters.getCellStyle(position);
51740
51767
  const colSize = this.getters.getColSize(position.sheetId, position.col);
51741
- return getDefaultCellHeight(this.ctx, cell, style, colSize);
51768
+ return getDefaultCellHeight(this.ctx, cell, style, this.getters.getLocale(), colSize);
51742
51769
  }
51743
51770
  isInMultiRowMerge(position) {
51744
51771
  const merge = this.getters.getMerge(position);
@@ -59330,7 +59357,7 @@ stores.inject(MyMetaStore, storeInstance);
59330
59357
  .add("pivot_ui", PivotUIPlugin)
59331
59358
  .add("cell_icon", CellIconPlugin);
59332
59359
 
59333
- class RangeAdapter {
59360
+ class RangeAdapterPlugin {
59334
59361
  getters;
59335
59362
  providers = [];
59336
59363
  isAdaptingRanges = false;
@@ -59338,7 +59365,6 @@ stores.inject(MyMetaStore, storeInstance);
59338
59365
  this.getters = getters;
59339
59366
  }
59340
59367
  static getters = [
59341
- "adaptFormulaStringDependencies",
59342
59368
  "copyFormulaStringForSheet",
59343
59369
  "extendRange",
59344
59370
  "getRangeString",
@@ -59369,8 +59395,8 @@ stores.inject(MyMetaStore, storeInstance);
59369
59395
  throw new Error("Plugins cannot dispatch commands during adaptRanges phase");
59370
59396
  }
59371
59397
  const rangeAdapter = getRangeAdapter(cmd);
59372
- if (rangeAdapter?.applyChange) {
59373
- this.executeOnAllRanges(rangeAdapter.applyChange, rangeAdapter.sheetId, rangeAdapter.sheetName);
59398
+ if (rangeAdapter) {
59399
+ this.executeOnAllRanges(rangeAdapter);
59374
59400
  }
59375
59401
  }
59376
59402
  finalize() { }
@@ -59389,11 +59415,15 @@ stores.inject(MyMetaStore, storeInstance);
59389
59415
  return result;
59390
59416
  };
59391
59417
  }
59392
- executeOnAllRanges(adaptRange, sheetId, sheetName) {
59418
+ executeOnAllRanges(rangeAdapter) {
59393
59419
  this.isAdaptingRanges = true;
59394
- const func = this.verifyRangeRemoved(adaptRange);
59420
+ const adapterFunctions = {
59421
+ applyChange: this.verifyRangeRemoved(rangeAdapter.applyChange),
59422
+ adaptRangeString: (defaultSheetId, sheetXC) => adaptStringRange(defaultSheetId, sheetXC, rangeAdapter),
59423
+ adaptFormulaString: (defaultSheetId, formula) => adaptFormulaStringRanges(defaultSheetId, formula, rangeAdapter),
59424
+ };
59395
59425
  for (const provider of this.providers) {
59396
- provider(func, sheetId, sheetName);
59426
+ provider(adapterFunctions, rangeAdapter.sheetId, rangeAdapter.sheetName);
59397
59427
  }
59398
59428
  this.isAdaptingRanges = false;
59399
59429
  }
@@ -59561,18 +59591,6 @@ stores.inject(MyMetaStore, storeInstance);
59561
59591
  const unionOfZones = unionUnboundedZones(...zones);
59562
59592
  return this.getRangeFromZone(ranges[0].sheetId, unionOfZones);
59563
59593
  }
59564
- adaptFormulaStringDependencies(sheetId, formula, applyChange) {
59565
- if (!formula.startsWith("=")) {
59566
- return formula;
59567
- }
59568
- const compiledFormula = compile(formula);
59569
- const updatedDependencies = compiledFormula.dependencies.map((dep) => {
59570
- const range = this.getters.getRangeFromSheetXC(sheetId, dep);
59571
- const changedRange = applyChange(range);
59572
- return changedRange.changeType === "NONE" ? range : changedRange.range;
59573
- });
59574
- return this.getters.getFormulaString(sheetId, compiledFormula.tokens, updatedDependencies);
59575
- }
59576
59594
  /**
59577
59595
  * Copy a formula string to another sheet.
59578
59596
  *
@@ -62017,6 +62035,9 @@ stores.inject(MyMetaStore, storeInstance);
62017
62035
  if (style.alignment && style.alignment.textRotation) {
62018
62036
  alignAttrs.push(["textRotation", style.alignment.textRotation]);
62019
62037
  }
62038
+ if (style.alignment && style.alignment.shrinkToFit) {
62039
+ alignAttrs.push(["shrinkToFit", "1"]);
62040
+ }
62020
62041
  if (alignAttrs.length > 0) {
62021
62042
  attributes.push(["applyAlignment", "1"]); // for Libre Office
62022
62043
  styleNodes.push(escapeXml /*xml*/ `<xf ${formatAttributes(attributes)}><alignment ${formatAttributes(alignAttrs)} /></xf> `);
@@ -62811,7 +62832,7 @@ stores.inject(MyMetaStore, storeInstance);
62811
62832
  this.config = this.setupConfig(config);
62812
62833
  this.session = this.setupSession(workbookData.revisionId);
62813
62834
  this.coreGetters = {};
62814
- this.range = new RangeAdapter(this.coreGetters);
62835
+ this.range = new RangeAdapterPlugin(this.coreGetters);
62815
62836
  this.coreGetters.getRangeString = this.range.getRangeString.bind(this.range);
62816
62837
  this.coreGetters.getRangeFromSheetXC = this.range.getRangeFromSheetXC.bind(this.range);
62817
62838
  this.coreGetters.createAdaptedRanges = this.range.createAdaptedRanges.bind(this.range);
@@ -62825,8 +62846,6 @@ stores.inject(MyMetaStore, storeInstance);
62825
62846
  this.coreGetters.extendRange = this.range.extendRange.bind(this.range);
62826
62847
  this.coreGetters.getRangesUnion = this.range.getRangesUnion.bind(this.range);
62827
62848
  this.coreGetters.removeRangesSheetPrefix = this.range.removeRangesSheetPrefix.bind(this.range);
62828
- this.coreGetters.adaptFormulaStringDependencies =
62829
- this.range.adaptFormulaStringDependencies.bind(this.range);
62830
62849
  this.coreGetters.copyFormulaStringForSheet = this.range.copyFormulaStringForSheet.bind(this.range);
62831
62850
  this.getters = {
62832
62851
  isReadonly: () => this.config.mode === "readonly" || this.config.mode === "dashboard",
@@ -66954,7 +66973,7 @@ stores.inject(MyMetaStore, storeInstance);
66954
66973
  verticalAxis: getDefinedAxis(definition),
66955
66974
  };
66956
66975
  }
66957
- updateRanges(applyChange) {
66976
+ updateRanges({ applyChange }) {
66958
66977
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
66959
66978
  if (!isStale) {
66960
66979
  return this;
@@ -67065,8 +67084,8 @@ stores.inject(MyMetaStore, storeInstance);
67065
67084
  static transformDefinition(chartSheetId, definition, applyChange) {
67066
67085
  let dataRange;
67067
67086
  if (definition.dataRange) {
67068
- const adaptedRange = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
67069
- if (adaptedRange !== CellErrorType.InvalidReference) {
67087
+ const { changeType, range: adaptedRange } = adaptStringRange(chartSheetId, definition.dataRange, applyChange);
67088
+ if (changeType !== "REMOVE") {
67070
67089
  dataRange = adaptedRange;
67071
67090
  }
67072
67091
  }
@@ -67143,13 +67162,9 @@ stores.inject(MyMetaStore, storeInstance);
67143
67162
  : undefined,
67144
67163
  };
67145
67164
  }
67146
- updateRanges(applyChange, sheetId, adaptSheetName) {
67165
+ updateRanges({ applyChange, adaptFormulaString }) {
67147
67166
  const dataRange = adaptChartRange(this.dataRange, applyChange);
67148
- const adaptFormula = (formula) => adaptFormulaStringRanges(this.sheetId, formula, {
67149
- applyChange,
67150
- sheetId,
67151
- sheetName: adaptSheetName,
67152
- });
67167
+ const adaptFormula = (formula) => adaptFormulaString(this.sheetId, formula);
67153
67168
  const sectionRule = adaptSectionRuleFormulas(this.sectionRule, adaptFormula);
67154
67169
  const definition = this.getDefinitionWithSpecificRanges(dataRange, sectionRule);
67155
67170
  return new GaugeChart(definition, this.sheetId, this.getters);
@@ -67391,7 +67406,7 @@ stores.inject(MyMetaStore, storeInstance);
67391
67406
  : undefined,
67392
67407
  };
67393
67408
  }
67394
- updateRanges(applyChange) {
67409
+ updateRanges({ applyChange }) {
67395
67410
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
67396
67411
  if (!isStale) {
67397
67412
  return this;
@@ -67548,7 +67563,7 @@ stores.inject(MyMetaStore, storeInstance);
67548
67563
  labelRange,
67549
67564
  };
67550
67565
  }
67551
- updateRanges(applyChange) {
67566
+ updateRanges({ applyChange }) {
67552
67567
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
67553
67568
  if (!isStale) {
67554
67569
  return this;
@@ -67713,7 +67728,7 @@ stores.inject(MyMetaStore, storeInstance);
67713
67728
  // TODO: implement export excel
67714
67729
  return undefined;
67715
67730
  }
67716
- updateRanges(applyChange) {
67731
+ updateRanges({ applyChange }) {
67717
67732
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
67718
67733
  if (!isStale) {
67719
67734
  return this;
@@ -72089,7 +72104,6 @@ stores.inject(MyMetaStore, storeInstance);
72089
72104
  });
72090
72105
  }
72091
72106
  handleEvent(event) {
72092
- this.hideHelp();
72093
72107
  const sheetId = this.getters.getActiveSheetId();
72094
72108
  let unboundedZone;
72095
72109
  if (event.options.unbounded) {
@@ -72411,6 +72425,7 @@ stores.inject(MyMetaStore, storeInstance);
72411
72425
  this.colorIndexByRange = {};
72412
72426
  this.hoveredTokens = [];
72413
72427
  this.hoveredContentEvaluation = "";
72428
+ this.hideHelp();
72414
72429
  }
72415
72430
  /**
72416
72431
  * Reset the current content to the active cell content
@@ -84437,7 +84452,7 @@ stores.inject(MyMetaStore, storeInstance);
84437
84452
  });
84438
84453
  dataRange = this.props.definition.dataRange;
84439
84454
  get configurationErrorMessages() {
84440
- const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])];
84455
+ const cancelledReasons = [...(this.state.dataRangeDispatchResult?.reasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
84441
84456
  return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
84442
84457
  }
84443
84458
  get isDataRangeInvalid() {
@@ -84479,7 +84494,7 @@ stores.inject(MyMetaStore, storeInstance);
84479
84494
  });
84480
84495
  }
84481
84496
  get designErrorMessages() {
84482
- const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])];
84497
+ const cancelledReasons = [...(this.state.sectionRuleCancelledReasons || [])].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
84483
84498
  return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
84484
84499
  }
84485
84500
  get isRangeMinInvalid() {
@@ -84855,7 +84870,7 @@ stores.inject(MyMetaStore, storeInstance);
84855
84870
  : undefined,
84856
84871
  };
84857
84872
  }
84858
- updateRanges(applyChange) {
84873
+ updateRanges({ applyChange }) {
84859
84874
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
84860
84875
  if (!isStale) {
84861
84876
  return this;
@@ -84960,7 +84975,7 @@ stores.inject(MyMetaStore, storeInstance);
84960
84975
  const cancelledReasons = [
84961
84976
  ...(this.state.keyValueDispatchResult?.reasons || []),
84962
84977
  ...(this.state.baselineDispatchResult?.reasons || []),
84963
- ];
84978
+ ].filter((reason) => reason !== "NoChanges" /* CommandResult.NoChanges */);
84964
84979
  return cancelledReasons.map((error) => ChartTerms.Errors[error] || ChartTerms.Errors.Unexpected);
84965
84980
  }
84966
84981
  get isKeyValueInvalid() {
@@ -95474,7 +95489,7 @@ stores.inject(MyMetaStore, storeInstance);
95474
95489
  getDefinitionForExcel() {
95475
95490
  return undefined;
95476
95491
  }
95477
- updateRanges(applyChange) {
95492
+ updateRanges({ applyChange }) {
95478
95493
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
95479
95494
  if (!isStale) {
95480
95495
  return this;
@@ -95602,7 +95617,7 @@ stores.inject(MyMetaStore, storeInstance);
95602
95617
  verticalAxis: getDefinedAxis(definition),
95603
95618
  };
95604
95619
  }
95605
- updateRanges(applyChange) {
95620
+ updateRanges({ applyChange }) {
95606
95621
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
95607
95622
  if (!isStale) {
95608
95623
  return this;
@@ -95778,7 +95793,7 @@ stores.inject(MyMetaStore, storeInstance);
95778
95793
  getDefinitionForExcel() {
95779
95794
  return undefined;
95780
95795
  }
95781
- updateRanges(applyChange) {
95796
+ updateRanges({ applyChange }) {
95782
95797
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
95783
95798
  if (!isStale) {
95784
95799
  return this;
@@ -95909,7 +95924,7 @@ stores.inject(MyMetaStore, storeInstance);
95909
95924
  getDefinitionForExcel() {
95910
95925
  return undefined;
95911
95926
  }
95912
- updateRanges(applyChange) {
95927
+ updateRanges({ applyChange }) {
95913
95928
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
95914
95929
  if (!isStale) {
95915
95930
  return this;
@@ -96060,7 +96075,7 @@ stores.inject(MyMetaStore, storeInstance);
96060
96075
  maxValue,
96061
96076
  };
96062
96077
  }
96063
- updateRanges(applyChange) {
96078
+ updateRanges({ applyChange }) {
96064
96079
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
96065
96080
  if (!isStale) {
96066
96081
  return this;
@@ -96210,7 +96225,7 @@ stores.inject(MyMetaStore, storeInstance);
96210
96225
  labelRange,
96211
96226
  };
96212
96227
  }
96213
- updateRanges(applyChange) {
96228
+ updateRanges({ applyChange }) {
96214
96229
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
96215
96230
  if (!isStale) {
96216
96231
  return this;
@@ -96347,7 +96362,7 @@ stores.inject(MyMetaStore, storeInstance);
96347
96362
  getDefinitionForExcel() {
96348
96363
  return undefined;
96349
96364
  }
96350
- updateRanges(applyChange) {
96365
+ updateRanges({ applyChange }) {
96351
96366
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
96352
96367
  if (!isStale) {
96353
96368
  return this;
@@ -96497,7 +96512,7 @@ stores.inject(MyMetaStore, storeInstance);
96497
96512
  getDefinitionForExcel() {
96498
96513
  return undefined;
96499
96514
  }
96500
- updateRanges(applyChange) {
96515
+ updateRanges({ applyChange }) {
96501
96516
  const { dataSets, labelRange, isStale } = updateChartRangesWithDataSets(this.getters, applyChange, this.dataSets, this.labelRange);
96502
96517
  if (!isStale) {
96503
96518
  return this;
@@ -98087,9 +98102,9 @@ stores.inject(MyMetaStore, storeInstance);
98087
98102
  exports.tokenize = tokenize;
98088
98103
 
98089
98104
 
98090
- __info__.version = "19.1.3";
98091
- __info__.date = "2026-01-14T10:02:32.431Z";
98092
- __info__.hash = "52a3e52";
98105
+ __info__.version = "19.1.4";
98106
+ __info__.date = "2026-01-21T11:07:17.372Z";
98107
+ __info__.hash = "ceae12a";
98093
98108
 
98094
98109
 
98095
98110
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);