@odoo/o-spreadsheet 18.0.24 → 18.0.26

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.0.24
6
- * @date 2025-04-18T16:23:09.320Z
7
- * @hash aa18758
5
+ * @version 18.0.26
6
+ * @date 2025-05-02T12:30:31.966Z
7
+ * @hash 5bdf504
8
8
  */
9
9
 
10
10
  'use strict';
@@ -3593,6 +3593,7 @@ exports.CommandResult = void 0;
3593
3593
  CommandResult["ValueCellIsInvalidFormula"] = "ValueCellIsInvalidFormula";
3594
3594
  CommandResult["InvalidDefinition"] = "InvalidDefinition";
3595
3595
  CommandResult["InvalidColor"] = "InvalidColor";
3596
+ CommandResult["InvalidPivotDataSet"] = "InvalidPivotDataSet";
3596
3597
  })(exports.CommandResult || (exports.CommandResult = {}));
3597
3598
 
3598
3599
  const DEFAULT_LOCALES = [
@@ -3665,11 +3666,13 @@ const CellErrorType = {
3665
3666
  NullError: "#NULL!",
3666
3667
  };
3667
3668
  const errorTypes = new Set(Object.values(CellErrorType));
3668
- class EvaluationError extends Error {
3669
+ class EvaluationError {
3670
+ message;
3669
3671
  value;
3670
3672
  constructor(message = _t("Error"), value = CellErrorType.GenericError) {
3671
- super(message);
3673
+ this.message = message;
3672
3674
  this.value = value;
3675
+ this.message = message.toString();
3673
3676
  }
3674
3677
  }
3675
3678
  class BadExpressionError extends EvaluationError {
@@ -15668,9 +15671,11 @@ const GAUGE_TITLE_PADDING_LEFT = SCORECARD_GAUGE_CHART_PADDING;
15668
15671
  const GAUGE_TITLE_PADDING_TOP = SCORECARD_GAUGE_CHART_PADDING;
15669
15672
  function drawGaugeChart(canvas, runtime) {
15670
15673
  const canvasBoundingRect = canvas.getBoundingClientRect();
15671
- canvas.width = canvasBoundingRect.width;
15672
- canvas.height = canvasBoundingRect.height;
15674
+ const dpr = window.devicePixelRatio || 1;
15675
+ canvas.width = dpr * canvasBoundingRect.width;
15676
+ canvas.height = dpr * canvasBoundingRect.height;
15673
15677
  const ctx = canvas.getContext("2d");
15678
+ ctx.scale(dpr, dpr);
15674
15679
  const config = getGaugeRenderingConfig(canvasBoundingRect, runtime, ctx);
15675
15680
  drawBackground(ctx, config);
15676
15681
  drawGauge(ctx, config);
@@ -16232,9 +16237,11 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
16232
16237
  };
16233
16238
  function drawScoreChart(structure, canvas) {
16234
16239
  const ctx = canvas.getContext("2d");
16235
- canvas.width = structure.canvas.width;
16236
- const availableWidth = canvas.width - DEFAULT_CHART_PADDING;
16237
- canvas.height = structure.canvas.height;
16240
+ const dpr = window.devicePixelRatio || 1;
16241
+ canvas.width = dpr * structure.canvas.width;
16242
+ canvas.height = dpr * structure.canvas.height;
16243
+ ctx.scale(dpr, dpr);
16244
+ const availableWidth = structure.canvas.width - DEFAULT_CHART_PADDING;
16238
16245
  ctx.fillStyle = structure.canvas.backgroundColor;
16239
16246
  ctx.fillRect(0, 0, structure.canvas.width, structure.canvas.height);
16240
16247
  if (structure.title) {
@@ -16911,6 +16918,7 @@ class ChartJsComponent extends owl.Component {
16911
16918
  canvas = owl.useRef("graphContainer");
16912
16919
  chart;
16913
16920
  currentRuntime;
16921
+ currentDevicePixelRatio = window.devicePixelRatio;
16914
16922
  get background() {
16915
16923
  return this.chartRuntime.background;
16916
16924
  }
@@ -16944,6 +16952,10 @@ class ChartJsComponent extends owl.Component {
16944
16952
  }
16945
16953
  this.currentRuntime = runtime;
16946
16954
  }
16955
+ else if (this.currentDevicePixelRatio !== window.devicePixelRatio) {
16956
+ this.currentDevicePixelRatio = window.devicePixelRatio;
16957
+ this.updateChartJs(deepCopy(this.currentRuntime));
16958
+ }
16947
16959
  });
16948
16960
  }
16949
16961
  createChart(chartData) {
@@ -16986,7 +16998,7 @@ class ScorecardChart extends owl.Component {
16986
16998
  owl.useEffect(this.createChart.bind(this), () => {
16987
16999
  const canvas = this.canvas.el;
16988
17000
  const rect = canvas.getBoundingClientRect();
16989
- return [rect.width, rect.height, this.runtime, this.canvas.el];
17001
+ return [rect.width, rect.height, this.runtime, this.canvas.el, window.devicePixelRatio];
16990
17002
  });
16991
17003
  }
16992
17004
  createChart() {
@@ -17454,7 +17466,7 @@ const MINVERSE = {
17454
17466
  assertSquareMatrix(_t("The argument square_matrix must have the same number of columns and rows."), _matrix);
17455
17467
  const { inverted } = invertMatrix(_matrix);
17456
17468
  if (!inverted) {
17457
- throw new EvaluationError(_t("The matrix is not invertible."));
17469
+ return new EvaluationError(_t("The matrix is not invertible."));
17458
17470
  }
17459
17471
  return inverted;
17460
17472
  },
@@ -17614,7 +17626,7 @@ const TOCOL = {
17614
17626
  .flat()
17615
17627
  .filter(shouldKeepValue(_ignore));
17616
17628
  if (result.length === 0) {
17617
- throw new NotAvailableError(_t("No results for the given arguments of TOCOL."));
17629
+ return new NotAvailableError(_t("No results for the given arguments of TOCOL."));
17618
17630
  }
17619
17631
  return [result];
17620
17632
  },
@@ -17635,7 +17647,7 @@ const TOROW = {
17635
17647
  .filter(shouldKeepValue(_ignore))
17636
17648
  .map((item) => [item]);
17637
17649
  if (result.length === 0 || result[0].length === 0) {
17638
- throw new NotAvailableError(_t("No results for the given arguments of TOROW."));
17650
+ return new NotAvailableError(_t("No results for the given arguments of TOROW."));
17639
17651
  }
17640
17652
  return result;
17641
17653
  },
@@ -18482,7 +18494,7 @@ const PRODUCT = {
18482
18494
  count += 1;
18483
18495
  }
18484
18496
  if (isEvaluationError(f)) {
18485
- throw j;
18497
+ return j;
18486
18498
  }
18487
18499
  }
18488
18500
  }
@@ -19385,7 +19397,7 @@ const MATTHEWS = {
19385
19397
  const flatY = dataY.flat();
19386
19398
  assertSameNumberOfElements(flatX, flatY);
19387
19399
  if (flatX.length === 0) {
19388
- throw new EvaluationError(_t("[[FUNCTION_NAME]] expects non-empty ranges for both parameters."));
19400
+ return new EvaluationError(_t("[[FUNCTION_NAME]] expects non-empty ranges for both parameters."));
19389
19401
  }
19390
19402
  const n = flatX.length;
19391
19403
  let trueN = 0, trueP = 0, falseP = 0, falseN = 0;
@@ -19748,7 +19760,7 @@ const RANK = {
19748
19760
  }
19749
19761
  }
19750
19762
  if (!found) {
19751
- throw new NotAvailableError(_t("Value not found in the given data."));
19763
+ return new NotAvailableError(_t("Value not found in the given data."));
19752
19764
  }
19753
19765
  return rank;
19754
19766
  },
@@ -21373,7 +21385,7 @@ const FILTER = {
21373
21385
  }
21374
21386
  }
21375
21387
  if (!result.length) {
21376
- throw new NotAvailableError(_t("No match found in FILTER evaluation"));
21388
+ return new NotAvailableError(_t("No match found in FILTER evaluation"));
21377
21389
  }
21378
21390
  return mode === "row" ? transposeMatrix(result) : result;
21379
21391
  },
@@ -21502,7 +21514,7 @@ const UNIQUE = {
21502
21514
  result.push(row.data);
21503
21515
  }
21504
21516
  if (!result.length)
21505
- throw new EvaluationError(_t("No unique values found"));
21517
+ return new EvaluationError(_t("No unique values found"));
21506
21518
  return _byColumn ? result : transposeMatrix(result);
21507
21519
  },
21508
21520
  isExported: true,
@@ -24428,7 +24440,7 @@ const IFS = {
24428
24440
  return result;
24429
24441
  }
24430
24442
  }
24431
- throw new EvaluationError(_t("No match."));
24443
+ return new EvaluationError(_t("No match."));
24432
24444
  },
24433
24445
  isExported: true,
24434
24446
  };
@@ -24619,7 +24631,7 @@ const COLUMN = {
24619
24631
  ],
24620
24632
  compute: function (cellReference) {
24621
24633
  if (isEvaluationError(cellReference?.value)) {
24622
- throw cellReference;
24634
+ return cellReference;
24623
24635
  }
24624
24636
  const column = cellReference === undefined
24625
24637
  ? this.__originCellPosition?.col
@@ -24637,7 +24649,7 @@ const COLUMNS = {
24637
24649
  args: [arg("range (meta)", _t("The range whose column count will be returned."))],
24638
24650
  compute: function (range) {
24639
24651
  if (isEvaluationError(range?.value)) {
24640
- throw range;
24652
+ return range;
24641
24653
  }
24642
24654
  const zone = toZone(range.value);
24643
24655
  return zone.right - zone.left + 1;
@@ -24715,11 +24727,11 @@ const INDIRECT = {
24715
24727
  compute: function (reference, useA1Notation = { value: true }) {
24716
24728
  let _reference = reference?.value?.toString();
24717
24729
  if (!_reference) {
24718
- throw new InvalidReferenceError(_t("Reference should be defined."));
24730
+ return new InvalidReferenceError(_t("Reference should be defined."));
24719
24731
  }
24720
24732
  const _useA1Notation = toBoolean(useA1Notation);
24721
24733
  if (!_useA1Notation) {
24722
- throw new EvaluationError(_t("R1C1 notation is not supported."));
24734
+ return new EvaluationError(_t("R1C1 notation is not supported."));
24723
24735
  }
24724
24736
  const sheetId = this.__originSheetId;
24725
24737
  const originPosition = this.__originCellPosition;
@@ -24731,7 +24743,7 @@ const INDIRECT = {
24731
24743
  }
24732
24744
  const range = this.getters.getRangeFromSheetXC(sheetId, _reference);
24733
24745
  if (range === undefined || range.invalidXc || range.invalidSheetName) {
24734
- throw new InvalidReferenceError();
24746
+ return new InvalidReferenceError();
24735
24747
  }
24736
24748
  if (originPosition) {
24737
24749
  this.addDependencies?.(originPosition, [range]);
@@ -24842,7 +24854,7 @@ const ROW = {
24842
24854
  ],
24843
24855
  compute: function (cellReference) {
24844
24856
  if (isEvaluationError(cellReference?.value)) {
24845
- throw cellReference;
24857
+ return cellReference;
24846
24858
  }
24847
24859
  const row = cellReference === undefined
24848
24860
  ? this.__originCellPosition?.row
@@ -24860,7 +24872,7 @@ const ROWS = {
24860
24872
  args: [arg("range (meta)", _t("The range whose row count will be returned."))],
24861
24873
  compute: function (range) {
24862
24874
  if (isEvaluationError(range?.value)) {
24863
- throw range;
24875
+ return range;
24864
24876
  }
24865
24877
  const zone = toZone(range.value);
24866
24878
  return zone.bottom - zone.top + 1;
@@ -25046,11 +25058,11 @@ const PIVOT = {
25046
25058
  const _pivotFormulaId = toString(pivotFormulaId);
25047
25059
  const _rowCount = toNumber(rowCount, this.locale);
25048
25060
  if (_rowCount < 0) {
25049
- throw new EvaluationError(_t("The number of rows must be positive."));
25061
+ return new EvaluationError(_t("The number of rows must be positive."));
25050
25062
  }
25051
25063
  const _columnCount = toNumber(columnCount, this.locale);
25052
25064
  if (_columnCount < 0) {
25053
- throw new EvaluationError(_t("The number of columns must be positive."));
25065
+ return new EvaluationError(_t("The number of columns must be positive."));
25054
25066
  }
25055
25067
  const _includeColumnHeaders = toBoolean(includeColumnHeaders);
25056
25068
  const _includedTotal = toBoolean(includeTotal);
@@ -25118,7 +25130,7 @@ const OFFSET = {
25118
25130
  }
25119
25131
  const _cellReference = cellReference?.value;
25120
25132
  if (!_cellReference) {
25121
- throw new Error("In this context, the function OFFSET needs to have a cell or range in parameter.");
25133
+ return new EvaluationError("In this context, the function OFFSET needs to have a cell or range in parameter.");
25122
25134
  }
25123
25135
  const zone = toZone(_cellReference);
25124
25136
  let offsetHeight = zone.bottom - zone.top + 1;
@@ -28924,7 +28936,7 @@ class GaugeChartComponent extends owl.Component {
28924
28936
  owl.useEffect(() => drawGaugeChart(this.canvas.el, this.runtime), () => {
28925
28937
  const canvas = this.canvas.el;
28926
28938
  const rect = canvas.getBoundingClientRect();
28927
- return [rect.width, rect.height, this.runtime, this.canvas.el];
28939
+ return [rect.width, rect.height, this.runtime, this.canvas.el, window.devicePixelRatio];
28928
28940
  });
28929
28941
  }
28930
28942
  }
@@ -29049,9 +29061,6 @@ class BarChart extends AbstractChart {
29049
29061
  };
29050
29062
  }
29051
29063
  getDefinitionForExcel() {
29052
- // Excel does not support aggregating labels
29053
- if (this.aggregated)
29054
- return undefined;
29055
29064
  const dataSets = this.dataSets
29056
29065
  .map((ds) => toExcelDataset(this.getters, ds))
29057
29066
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -30292,9 +30301,6 @@ class LineChart extends AbstractChart {
30292
30301
  return new LineChart(definition, this.sheetId, this.getters);
30293
30302
  }
30294
30303
  getDefinitionForExcel() {
30295
- // Excel does not support aggregating labels
30296
- if (this.aggregated)
30297
- return undefined;
30298
30304
  const dataSets = this.dataSets
30299
30305
  .map((ds) => toExcelDataset(this.getters, ds))
30300
30306
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -30405,9 +30411,6 @@ class PieChart extends AbstractChart {
30405
30411
  return new PieChart(definition, sheetId, this.getters);
30406
30412
  }
30407
30413
  getDefinitionForExcel() {
30408
- // Excel does not support aggregating labels
30409
- if (this.aggregated)
30410
- return undefined;
30411
30414
  const dataSets = this.dataSets
30412
30415
  .map((ds) => toExcelDataset(this.getters, ds))
30413
30416
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -32626,18 +32629,28 @@ linkMenuRegistry.add("sheet", {
32626
32629
  function useInterval(callback, delay) {
32627
32630
  let intervalId;
32628
32631
  const { setInterval, clearInterval } = window;
32632
+ const pause = () => {
32633
+ clearInterval(intervalId);
32634
+ intervalId = undefined;
32635
+ };
32636
+ const safeCallback = () => {
32637
+ try {
32638
+ callback();
32639
+ }
32640
+ catch (e) {
32641
+ pause();
32642
+ throw e;
32643
+ }
32644
+ };
32629
32645
  owl.useEffect(() => {
32630
- intervalId = setInterval(callback, delay);
32646
+ intervalId = setInterval(safeCallback, delay);
32631
32647
  return () => clearInterval(intervalId);
32632
32648
  }, () => [delay]);
32633
32649
  return {
32634
- pause: () => {
32635
- clearInterval(intervalId);
32636
- intervalId = undefined;
32637
- },
32650
+ pause,
32638
32651
  resume: () => {
32639
32652
  if (intervalId === undefined) {
32640
- intervalId = setInterval(callback, delay);
32653
+ intervalId = setInterval(safeCallback, delay);
32641
32654
  }
32642
32655
  },
32643
32656
  };
@@ -37482,7 +37495,7 @@ class ColorPicker extends owl.Component {
37482
37495
  }
37483
37496
  setHexColor(ev) {
37484
37497
  // only support HEX code input
37485
- const val = ev.target.value.slice(0, 7);
37498
+ const val = ev.target.value.replace("##", "#").slice(0, 7);
37486
37499
  this.state.customHexColor = val;
37487
37500
  if (!isColorValid(val)) ;
37488
37501
  else {
@@ -48357,7 +48370,7 @@ css /* scss */ `
48357
48370
  position: absolute;
48358
48371
  top: 0;
48359
48372
  left: ${HEADER_WIDTH}px;
48360
- right: 0;
48373
+ right: ${SCROLLBAR_WIDTH}px;
48361
48374
  height: ${HEADER_HEIGHT}px;
48362
48375
  &.o-dragging {
48363
48376
  cursor: grabbing;
@@ -48523,9 +48536,8 @@ css /* scss */ `
48523
48536
  position: absolute;
48524
48537
  top: ${HEADER_HEIGHT}px;
48525
48538
  left: 0;
48526
- right: 0;
48539
+ bottom: ${SCROLLBAR_WIDTH}px;
48527
48540
  width: ${HEADER_WIDTH}px;
48528
- height: calc(100% - ${HEADER_HEIGHT + SCROLLBAR_WIDTH}px);
48529
48541
  &.o-dragging {
48530
48542
  cursor: grabbing;
48531
48543
  }
@@ -56610,6 +56622,15 @@ function adaptPivotRange(range, applyChange) {
56610
56622
  }
56611
56623
  }
56612
56624
  class SpreadsheetPivotCorePlugin extends CorePlugin {
56625
+ allowDispatch(cmd) {
56626
+ switch (cmd.type) {
56627
+ case "ADD_PIVOT":
56628
+ case "UPDATE_PIVOT":
56629
+ const definition = cmd.pivot;
56630
+ return this.checkDataSetValidity(definition);
56631
+ }
56632
+ return "Success" /* CommandResult.Success */;
56633
+ }
56613
56634
  adaptRanges(applyChange) {
56614
56635
  for (const pivotId of this.getters.getPivotIds()) {
56615
56636
  const definition = this.getters.getPivotCoreDefinition(pivotId);
@@ -56628,6 +56649,16 @@ class SpreadsheetPivotCorePlugin extends CorePlugin {
56628
56649
  }
56629
56650
  }
56630
56651
  }
56652
+ checkDataSetValidity(definition) {
56653
+ if (definition.type === "SPREADSHEET" && definition.dataSet) {
56654
+ const { zone, sheetId } = definition.dataSet;
56655
+ if (!sheetId || !this.getters.tryGetSheet(sheetId) || !zone || !isZoneValid(zone)) {
56656
+ return "InvalidDataSet" /* CommandResult.InvalidDataSet */;
56657
+ }
56658
+ return this.getters.checkZonesExistInSheet(sheetId, [zone]);
56659
+ }
56660
+ return "Success" /* CommandResult.Success */;
56661
+ }
56631
56662
  }
56632
56663
 
56633
56664
  class TableStylePlugin extends CorePlugin {
@@ -59465,7 +59496,7 @@ class DynamicTablesPlugin extends UIPlugin {
59465
59496
  tables = {};
59466
59497
  handle(cmd) {
59467
59498
  if (invalidateEvaluationCommands.has(cmd.type) ||
59468
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
59499
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
59469
59500
  cmd.type === "EVALUATE_CELLS") {
59470
59501
  this.tables = {};
59471
59502
  return;
@@ -59898,6 +59929,16 @@ function withPivotPresentationLayer (PivotClass) {
59898
59929
  }
59899
59930
  return values;
59900
59931
  }
59932
+ else if (rowDomain.length === this.definition.rows.length &&
59933
+ colDomain.length &&
59934
+ colDomain.length < this.definition.columns.length) {
59935
+ const colSubTree = this.getSubTreeMatchingDomain(table.getColTree(), colDomain);
59936
+ const domains = this.treeToLeafDomains(colSubTree, colDomain);
59937
+ for (const domain of domains) {
59938
+ values.push(this._getPivotCellValueAndFormat(measure.id, rowDomain.concat(domain)));
59939
+ }
59940
+ return values;
59941
+ }
59901
59942
  else {
59902
59943
  const tree = table.getRowTree();
59903
59944
  const subTree = this.getSubTreeMatchingDomain(tree, rowDomain);
@@ -63259,7 +63300,7 @@ class TableComputedStylePlugin extends UIPlugin {
63259
63300
  tableStyles = {};
63260
63301
  handle(cmd) {
63261
63302
  if (invalidateEvaluationCommands.has(cmd.type) ||
63262
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
63303
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
63263
63304
  cmd.type === "EVALUATE_CELLS") {
63264
63305
  this.tableStyles = {};
63265
63306
  return;
@@ -65223,6 +65264,8 @@ class GridSelectionPlugin extends UIPlugin {
65223
65264
  });
65224
65265
  this.selectCell(col, row);
65225
65266
  }
65267
+ const { col, row } = this.gridSelection.anchor.cell;
65268
+ this.moveClient({ sheetId: this.activeSheet.id, col, row });
65226
65269
  }
65227
65270
  /**
65228
65271
  * Ensure selections are not outside sheet boundaries.
@@ -65955,8 +65998,11 @@ class SheetViewPlugin extends UIPlugin {
65955
65998
  case "REMOVE_TABLE":
65956
65999
  case "UPDATE_TABLE":
65957
66000
  case "UPDATE_FILTER":
65958
- this.sheetsWithDirtyViewports.add(cmd.sheetId);
65959
- break;
66001
+ case "UNFREEZE_ROWS":
66002
+ case "UNFREEZE_COLUMNS":
66003
+ case "FREEZE_COLUMNS":
66004
+ case "FREEZE_ROWS":
66005
+ case "UNFREEZE_COLUMNS_ROWS":
65960
66006
  case "REMOVE_COLUMNS_ROWS":
65961
66007
  case "RESIZE_COLUMNS_ROWS":
65962
66008
  case "HIDE_COLUMNS_ROWS":
@@ -65969,11 +66015,9 @@ class SheetViewPlugin extends UIPlugin {
65969
66015
  case "FOLD_HEADER_GROUPS_IN_ZONE":
65970
66016
  case "UNFOLD_HEADER_GROUPS_IN_ZONE":
65971
66017
  case "UNFOLD_ALL_HEADER_GROUPS":
65972
- case "FOLD_ALL_HEADER_GROUPS": {
65973
- const sheetId = "sheetId" in cmd ? cmd.sheetId : this.getters.getActiveSheetId();
65974
- this.sheetsWithDirtyViewports.add(sheetId);
66018
+ case "FOLD_ALL_HEADER_GROUPS":
66019
+ this.sheetsWithDirtyViewports.add(cmd.sheetId);
65975
66020
  break;
65976
- }
65977
66021
  case "UPDATE_CELL":
65978
66022
  // update cell content or format can change hidden rows because of data filters
65979
66023
  if ("content" in cmd || "format" in cmd || cmd.style?.fontSize !== undefined) {
@@ -65989,13 +66033,6 @@ class SheetViewPlugin extends UIPlugin {
65989
66033
  case "ACTIVATE_SHEET":
65990
66034
  this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
65991
66035
  break;
65992
- case "UNFREEZE_ROWS":
65993
- case "UNFREEZE_COLUMNS":
65994
- case "FREEZE_COLUMNS":
65995
- case "FREEZE_ROWS":
65996
- case "UNFREEZE_COLUMNS_ROWS":
65997
- this.resetViewports(this.getters.getActiveSheetId());
65998
- break;
65999
66036
  case "DELETE_SHEET":
66000
66037
  this.sheetsWithDirtyViewports.delete(cmd.sheetId);
66001
66038
  break;
@@ -67175,7 +67212,7 @@ class AggregateStatisticsStore extends SpreadsheetStore {
67175
67212
  }
67176
67213
  handle(cmd) {
67177
67214
  if (invalidateEvaluationCommands.has(cmd.type) ||
67178
- (cmd.type === "UPDATE_CELL" && "content" in cmd)) {
67215
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd))) {
67179
67216
  this.isDirty = true;
67180
67217
  }
67181
67218
  switch (cmd.type) {
@@ -73757,6 +73794,6 @@ exports.tokenColors = tokenColors;
73757
73794
  exports.tokenize = tokenize;
73758
73795
 
73759
73796
 
73760
- __info__.version = "18.0.24";
73761
- __info__.date = "2025-04-18T16:23:09.320Z";
73762
- __info__.hash = "aa18758";
73797
+ __info__.version = "18.0.26";
73798
+ __info__.date = "2025-05-02T12:30:31.966Z";
73799
+ __info__.hash = "5bdf504";
@@ -2688,7 +2688,8 @@ declare const enum CommandResult {
2688
2688
  EmptyName = "EmptyName",
2689
2689
  ValueCellIsInvalidFormula = "ValueCellIsInvalidFormula",
2690
2690
  InvalidDefinition = "InvalidDefinition",
2691
- InvalidColor = "InvalidColor"
2691
+ InvalidColor = "InvalidColor",
2692
+ InvalidPivotDataSet = "InvalidPivotDataSet"
2692
2693
  }
2693
2694
  interface CommandHandler<T> {
2694
2695
  allowDispatch(command: T): CommandResult | CommandResult[];
@@ -8275,6 +8276,7 @@ declare class ChartJsComponent extends Component<Props$M, SpreadsheetChildEnv> {
8275
8276
  private canvas;
8276
8277
  private chart?;
8277
8278
  private currentRuntime;
8279
+ private currentDevicePixelRatio;
8278
8280
  get background(): string;
8279
8281
  get canvasStyle(): string;
8280
8282
  get chartRuntime(): ChartJSRuntime;
@@ -11111,7 +11113,8 @@ declare const CellErrorType: {
11111
11113
  readonly GenericError: "#ERROR";
11112
11114
  readonly NullError: "#NULL!";
11113
11115
  };
11114
- declare class EvaluationError extends Error {
11116
+ declare class EvaluationError {
11117
+ readonly message: string;
11115
11118
  readonly value: string;
11116
11119
  constructor(message?: string, value?: string);
11117
11120
  }