@odoo/o-spreadsheet 17.4.32 → 17.4.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 17.4.32
6
- * @date 2025-04-25T08:06:59.937Z
7
- * @hash c370ddf
5
+ * @version 17.4.33
6
+ * @date 2025-05-02T12:30:31.263Z
7
+ * @hash 3ba00e6
8
8
  */
9
9
 
10
10
  'use strict';
@@ -2362,6 +2362,7 @@ exports.CommandResult = void 0;
2362
2362
  CommandResult["InvalidTableResize"] = "InvalidTableResize";
2363
2363
  CommandResult["PivotIdNotFound"] = "PivotIdNotFound";
2364
2364
  CommandResult["EmptyName"] = "EmptyName";
2365
+ CommandResult["InvalidPivotDataSet"] = "InvalidPivotDataSet";
2365
2366
  })(exports.CommandResult || (exports.CommandResult = {}));
2366
2367
 
2367
2368
  const PLAIN_TEXT_FORMAT = "@"; // see OpenXML spec §18.8.31
@@ -12243,6 +12244,7 @@ class ChartJsComponent extends owl.Component {
12243
12244
  canvas = owl.useRef("graphContainer");
12244
12245
  chart;
12245
12246
  currentRuntime;
12247
+ currentDevicePixelRatio = window.devicePixelRatio;
12246
12248
  get background() {
12247
12249
  return this.chartRuntime.background;
12248
12250
  }
@@ -12276,11 +12278,11 @@ class ChartJsComponent extends owl.Component {
12276
12278
  }
12277
12279
  this.currentRuntime = runtime;
12278
12280
  }
12281
+ else if (this.currentDevicePixelRatio !== window.devicePixelRatio) {
12282
+ this.currentDevicePixelRatio = window.devicePixelRatio;
12283
+ this.updateChartJs(deepCopy(this.currentRuntime));
12284
+ }
12279
12285
  });
12280
- owl.useEffect(() => {
12281
- this.currentRuntime = this.chartRuntime;
12282
- this.updateChartJs(deepCopy(this.currentRuntime));
12283
- }, () => [window.devicePixelRatio]);
12284
12286
  }
12285
12287
  createChart(chartData) {
12286
12288
  const canvas = this.canvas.el;
@@ -22742,18 +22744,28 @@ linkMenuRegistry.add("sheet", {
22742
22744
  function useInterval(callback, delay) {
22743
22745
  let intervalId;
22744
22746
  const { setInterval, clearInterval } = window;
22747
+ const pause = () => {
22748
+ clearInterval(intervalId);
22749
+ intervalId = undefined;
22750
+ };
22751
+ const safeCallback = () => {
22752
+ try {
22753
+ callback();
22754
+ }
22755
+ catch (e) {
22756
+ pause();
22757
+ throw e;
22758
+ }
22759
+ };
22745
22760
  owl.useEffect(() => {
22746
- intervalId = setInterval(callback, delay);
22761
+ intervalId = setInterval(safeCallback, delay);
22747
22762
  return () => clearInterval(intervalId);
22748
22763
  }, () => [delay]);
22749
22764
  return {
22750
- pause: () => {
22751
- clearInterval(intervalId);
22752
- intervalId = undefined;
22753
- },
22765
+ pause,
22754
22766
  resume: () => {
22755
22767
  if (intervalId === undefined) {
22756
- intervalId = setInterval(callback, delay);
22768
+ intervalId = setInterval(safeCallback, delay);
22757
22769
  }
22758
22770
  },
22759
22771
  };
@@ -25336,9 +25348,6 @@ class BarChart extends AbstractChart {
25336
25348
  };
25337
25349
  }
25338
25350
  getDefinitionForExcel() {
25339
- // Excel does not support aggregating labels
25340
- if (this.aggregated)
25341
- return undefined;
25342
25351
  const dataSets = this.dataSets
25343
25352
  .map((ds) => toExcelDataset(this.getters, ds))
25344
25353
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -26415,9 +26424,6 @@ class LineChart extends AbstractChart {
26415
26424
  return new LineChart(definition, this.sheetId, this.getters);
26416
26425
  }
26417
26426
  getDefinitionForExcel() {
26418
- // Excel does not support aggregating labels
26419
- if (this.aggregated)
26420
- return undefined;
26421
26427
  const dataSets = this.dataSets
26422
26428
  .map((ds) => toExcelDataset(this.getters, ds))
26423
26429
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -26528,9 +26534,6 @@ class PieChart extends AbstractChart {
26528
26534
  return new PieChart(definition, sheetId, this.getters);
26529
26535
  }
26530
26536
  getDefinitionForExcel() {
26531
- // Excel does not support aggregating labels
26532
- if (this.aggregated)
26533
- return undefined;
26534
26537
  const dataSets = this.dataSets
26535
26538
  .map((ds) => toExcelDataset(this.getters, ds))
26536
26539
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -41000,7 +41003,7 @@ css /* scss */ `
41000
41003
  position: absolute;
41001
41004
  top: 0;
41002
41005
  left: ${HEADER_WIDTH}px;
41003
- right: 0;
41006
+ right: ${SCROLLBAR_WIDTH}px;
41004
41007
  height: ${HEADER_HEIGHT}px;
41005
41008
  &.o-dragging {
41006
41009
  cursor: grabbing;
@@ -41166,9 +41169,8 @@ css /* scss */ `
41166
41169
  position: absolute;
41167
41170
  top: ${HEADER_HEIGHT}px;
41168
41171
  left: 0;
41169
- right: 0;
41172
+ bottom: ${SCROLLBAR_WIDTH}px;
41170
41173
  width: ${HEADER_WIDTH}px;
41171
- height: calc(100% - ${HEADER_HEIGHT + SCROLLBAR_WIDTH}px);
41172
41174
  &.o-dragging {
41173
41175
  cursor: grabbing;
41174
41176
  }
@@ -53133,6 +53135,15 @@ function adaptPivotRange(range, applyChange) {
53133
53135
  }
53134
53136
  }
53135
53137
  class SpreadsheetPivotCorePlugin extends CorePlugin {
53138
+ allowDispatch(cmd) {
53139
+ switch (cmd.type) {
53140
+ case "ADD_PIVOT":
53141
+ case "UPDATE_PIVOT":
53142
+ const definition = cmd.pivot;
53143
+ return this.checkDataSetValidity(definition);
53144
+ }
53145
+ return "Success" /* CommandResult.Success */;
53146
+ }
53136
53147
  adaptRanges(applyChange) {
53137
53148
  for (const pivotId of this.getters.getPivotIds()) {
53138
53149
  const definition = this.getters.getPivotCoreDefinition(pivotId);
@@ -53151,6 +53162,16 @@ class SpreadsheetPivotCorePlugin extends CorePlugin {
53151
53162
  }
53152
53163
  }
53153
53164
  }
53165
+ checkDataSetValidity(definition) {
53166
+ if (definition.type === "SPREADSHEET" && definition.dataSet) {
53167
+ const { zone, sheetId } = definition.dataSet;
53168
+ if (!sheetId || !this.getters.tryGetSheet(sheetId) || !zone || !isZoneValid(zone)) {
53169
+ return "InvalidDataSet" /* CommandResult.InvalidDataSet */;
53170
+ }
53171
+ return this.getters.checkZonesExistInSheet(sheetId, [zone]);
53172
+ }
53173
+ return "Success" /* CommandResult.Success */;
53174
+ }
53154
53175
  }
53155
53176
 
53156
53177
  class TableStylePlugin extends CorePlugin {
@@ -55986,7 +56007,7 @@ class DynamicTablesPlugin extends UIPlugin {
55986
56007
  tables = {};
55987
56008
  handle(cmd) {
55988
56009
  if (invalidateEvaluationCommands.has(cmd.type) ||
55989
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
56010
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
55990
56011
  cmd.type === "EVALUATE_CELLS") {
55991
56012
  this.tables = {};
55992
56013
  return;
@@ -59123,7 +59144,7 @@ class TableComputedStylePlugin extends UIPlugin {
59123
59144
  tableStyles = {};
59124
59145
  handle(cmd) {
59125
59146
  if (invalidateEvaluationCommands.has(cmd.type) ||
59126
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
59147
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
59127
59148
  cmd.type === "EVALUATE_CELLS") {
59128
59149
  this.tableStyles = {};
59129
59150
  return;
@@ -61094,6 +61115,8 @@ class GridSelectionPlugin extends UIPlugin {
61094
61115
  });
61095
61116
  this.selectCell(col, row);
61096
61117
  }
61118
+ const { col, row } = this.gridSelection.anchor.cell;
61119
+ this.moveClient({ sheetId: this.activeSheet.id, col, row });
61097
61120
  }
61098
61121
  /**
61099
61122
  * Ensure selections are not outside sheet boundaries.
@@ -61826,8 +61849,11 @@ class SheetViewPlugin extends UIPlugin {
61826
61849
  case "REMOVE_TABLE":
61827
61850
  case "UPDATE_TABLE":
61828
61851
  case "UPDATE_FILTER":
61829
- this.sheetsWithDirtyViewports.add(cmd.sheetId);
61830
- break;
61852
+ case "UNFREEZE_ROWS":
61853
+ case "UNFREEZE_COLUMNS":
61854
+ case "FREEZE_COLUMNS":
61855
+ case "FREEZE_ROWS":
61856
+ case "UNFREEZE_COLUMNS_ROWS":
61831
61857
  case "REMOVE_COLUMNS_ROWS":
61832
61858
  case "RESIZE_COLUMNS_ROWS":
61833
61859
  case "HIDE_COLUMNS_ROWS":
@@ -61840,11 +61866,9 @@ class SheetViewPlugin extends UIPlugin {
61840
61866
  case "FOLD_HEADER_GROUPS_IN_ZONE":
61841
61867
  case "UNFOLD_HEADER_GROUPS_IN_ZONE":
61842
61868
  case "UNFOLD_ALL_HEADER_GROUPS":
61843
- case "FOLD_ALL_HEADER_GROUPS": {
61844
- const sheetId = "sheetId" in cmd ? cmd.sheetId : this.getters.getActiveSheetId();
61845
- this.sheetsWithDirtyViewports.add(sheetId);
61869
+ case "FOLD_ALL_HEADER_GROUPS":
61870
+ this.sheetsWithDirtyViewports.add(cmd.sheetId);
61846
61871
  break;
61847
- }
61848
61872
  case "UPDATE_CELL":
61849
61873
  // update cell content or format can change hidden rows because of data filters
61850
61874
  if ("content" in cmd || "format" in cmd || cmd.style?.fontSize !== undefined) {
@@ -61860,13 +61884,6 @@ class SheetViewPlugin extends UIPlugin {
61860
61884
  case "ACTIVATE_SHEET":
61861
61885
  this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
61862
61886
  break;
61863
- case "UNFREEZE_ROWS":
61864
- case "UNFREEZE_COLUMNS":
61865
- case "FREEZE_COLUMNS":
61866
- case "FREEZE_ROWS":
61867
- case "UNFREEZE_COLUMNS_ROWS":
61868
- this.resetViewports(this.getters.getActiveSheetId());
61869
- break;
61870
61887
  case "DELETE_SHEET":
61871
61888
  this.sheetsWithDirtyViewports.delete(cmd.sheetId);
61872
61889
  break;
@@ -63022,7 +63039,7 @@ class AggregateStatisticsStore extends SpreadsheetStore {
63022
63039
  }
63023
63040
  handle(cmd) {
63024
63041
  if (invalidateEvaluationCommands.has(cmd.type) ||
63025
- (cmd.type === "UPDATE_CELL" && "content" in cmd)) {
63042
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd))) {
63026
63043
  this.isDirty = true;
63027
63044
  }
63028
63045
  switch (cmd.type) {
@@ -69389,6 +69406,6 @@ exports.tokenColors = tokenColors;
69389
69406
  exports.tokenize = tokenize;
69390
69407
 
69391
69408
 
69392
- __info__.version = "17.4.32";
69393
- __info__.date = "2025-04-25T08:06:59.937Z";
69394
- __info__.hash = "c370ddf";
69409
+ __info__.version = "17.4.33";
69410
+ __info__.date = "2025-05-02T12:30:31.263Z";
69411
+ __info__.hash = "3ba00e6";
@@ -1462,7 +1462,8 @@ declare const enum CommandResult {
1462
1462
  SheetIsHidden = "SheetIsHidden",
1463
1463
  InvalidTableResize = "InvalidTableResize",
1464
1464
  PivotIdNotFound = "PivotIdNotFound",
1465
- EmptyName = "EmptyName"
1465
+ EmptyName = "EmptyName",
1466
+ InvalidPivotDataSet = "InvalidPivotDataSet"
1466
1467
  }
1467
1468
  interface CommandHandler<T> {
1468
1469
  allowDispatch(command: T): CommandResult | CommandResult[];
@@ -7989,6 +7990,7 @@ declare class ChartJsComponent extends Component<Props$J, SpreadsheetChildEnv> {
7989
7990
  private canvas;
7990
7991
  private chart?;
7991
7992
  private currentRuntime;
7993
+ private currentDevicePixelRatio;
7992
7994
  get background(): string;
7993
7995
  get canvasStyle(): string;
7994
7996
  get chartRuntime(): ChartJSRuntime;
@@ -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 17.4.32
6
- * @date 2025-04-25T08:06:59.937Z
7
- * @hash c370ddf
5
+ * @version 17.4.33
6
+ * @date 2025-05-02T12:30:31.263Z
7
+ * @hash 3ba00e6
8
8
  */
9
9
 
10
10
  import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
@@ -2360,6 +2360,7 @@ var CommandResult;
2360
2360
  CommandResult["InvalidTableResize"] = "InvalidTableResize";
2361
2361
  CommandResult["PivotIdNotFound"] = "PivotIdNotFound";
2362
2362
  CommandResult["EmptyName"] = "EmptyName";
2363
+ CommandResult["InvalidPivotDataSet"] = "InvalidPivotDataSet";
2363
2364
  })(CommandResult || (CommandResult = {}));
2364
2365
 
2365
2366
  const PLAIN_TEXT_FORMAT = "@"; // see OpenXML spec §18.8.31
@@ -12241,6 +12242,7 @@ class ChartJsComponent extends Component {
12241
12242
  canvas = useRef("graphContainer");
12242
12243
  chart;
12243
12244
  currentRuntime;
12245
+ currentDevicePixelRatio = window.devicePixelRatio;
12244
12246
  get background() {
12245
12247
  return this.chartRuntime.background;
12246
12248
  }
@@ -12274,11 +12276,11 @@ class ChartJsComponent extends Component {
12274
12276
  }
12275
12277
  this.currentRuntime = runtime;
12276
12278
  }
12279
+ else if (this.currentDevicePixelRatio !== window.devicePixelRatio) {
12280
+ this.currentDevicePixelRatio = window.devicePixelRatio;
12281
+ this.updateChartJs(deepCopy(this.currentRuntime));
12282
+ }
12277
12283
  });
12278
- useEffect(() => {
12279
- this.currentRuntime = this.chartRuntime;
12280
- this.updateChartJs(deepCopy(this.currentRuntime));
12281
- }, () => [window.devicePixelRatio]);
12282
12284
  }
12283
12285
  createChart(chartData) {
12284
12286
  const canvas = this.canvas.el;
@@ -22740,18 +22742,28 @@ linkMenuRegistry.add("sheet", {
22740
22742
  function useInterval(callback, delay) {
22741
22743
  let intervalId;
22742
22744
  const { setInterval, clearInterval } = window;
22745
+ const pause = () => {
22746
+ clearInterval(intervalId);
22747
+ intervalId = undefined;
22748
+ };
22749
+ const safeCallback = () => {
22750
+ try {
22751
+ callback();
22752
+ }
22753
+ catch (e) {
22754
+ pause();
22755
+ throw e;
22756
+ }
22757
+ };
22743
22758
  useEffect(() => {
22744
- intervalId = setInterval(callback, delay);
22759
+ intervalId = setInterval(safeCallback, delay);
22745
22760
  return () => clearInterval(intervalId);
22746
22761
  }, () => [delay]);
22747
22762
  return {
22748
- pause: () => {
22749
- clearInterval(intervalId);
22750
- intervalId = undefined;
22751
- },
22763
+ pause,
22752
22764
  resume: () => {
22753
22765
  if (intervalId === undefined) {
22754
- intervalId = setInterval(callback, delay);
22766
+ intervalId = setInterval(safeCallback, delay);
22755
22767
  }
22756
22768
  },
22757
22769
  };
@@ -25334,9 +25346,6 @@ class BarChart extends AbstractChart {
25334
25346
  };
25335
25347
  }
25336
25348
  getDefinitionForExcel() {
25337
- // Excel does not support aggregating labels
25338
- if (this.aggregated)
25339
- return undefined;
25340
25349
  const dataSets = this.dataSets
25341
25350
  .map((ds) => toExcelDataset(this.getters, ds))
25342
25351
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -26413,9 +26422,6 @@ class LineChart extends AbstractChart {
26413
26422
  return new LineChart(definition, this.sheetId, this.getters);
26414
26423
  }
26415
26424
  getDefinitionForExcel() {
26416
- // Excel does not support aggregating labels
26417
- if (this.aggregated)
26418
- return undefined;
26419
26425
  const dataSets = this.dataSets
26420
26426
  .map((ds) => toExcelDataset(this.getters, ds))
26421
26427
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -26526,9 +26532,6 @@ class PieChart extends AbstractChart {
26526
26532
  return new PieChart(definition, sheetId, this.getters);
26527
26533
  }
26528
26534
  getDefinitionForExcel() {
26529
- // Excel does not support aggregating labels
26530
- if (this.aggregated)
26531
- return undefined;
26532
26535
  const dataSets = this.dataSets
26533
26536
  .map((ds) => toExcelDataset(this.getters, ds))
26534
26537
  .filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
@@ -40998,7 +41001,7 @@ css /* scss */ `
40998
41001
  position: absolute;
40999
41002
  top: 0;
41000
41003
  left: ${HEADER_WIDTH}px;
41001
- right: 0;
41004
+ right: ${SCROLLBAR_WIDTH}px;
41002
41005
  height: ${HEADER_HEIGHT}px;
41003
41006
  &.o-dragging {
41004
41007
  cursor: grabbing;
@@ -41164,9 +41167,8 @@ css /* scss */ `
41164
41167
  position: absolute;
41165
41168
  top: ${HEADER_HEIGHT}px;
41166
41169
  left: 0;
41167
- right: 0;
41170
+ bottom: ${SCROLLBAR_WIDTH}px;
41168
41171
  width: ${HEADER_WIDTH}px;
41169
- height: calc(100% - ${HEADER_HEIGHT + SCROLLBAR_WIDTH}px);
41170
41172
  &.o-dragging {
41171
41173
  cursor: grabbing;
41172
41174
  }
@@ -53131,6 +53133,15 @@ function adaptPivotRange(range, applyChange) {
53131
53133
  }
53132
53134
  }
53133
53135
  class SpreadsheetPivotCorePlugin extends CorePlugin {
53136
+ allowDispatch(cmd) {
53137
+ switch (cmd.type) {
53138
+ case "ADD_PIVOT":
53139
+ case "UPDATE_PIVOT":
53140
+ const definition = cmd.pivot;
53141
+ return this.checkDataSetValidity(definition);
53142
+ }
53143
+ return "Success" /* CommandResult.Success */;
53144
+ }
53134
53145
  adaptRanges(applyChange) {
53135
53146
  for (const pivotId of this.getters.getPivotIds()) {
53136
53147
  const definition = this.getters.getPivotCoreDefinition(pivotId);
@@ -53149,6 +53160,16 @@ class SpreadsheetPivotCorePlugin extends CorePlugin {
53149
53160
  }
53150
53161
  }
53151
53162
  }
53163
+ checkDataSetValidity(definition) {
53164
+ if (definition.type === "SPREADSHEET" && definition.dataSet) {
53165
+ const { zone, sheetId } = definition.dataSet;
53166
+ if (!sheetId || !this.getters.tryGetSheet(sheetId) || !zone || !isZoneValid(zone)) {
53167
+ return "InvalidDataSet" /* CommandResult.InvalidDataSet */;
53168
+ }
53169
+ return this.getters.checkZonesExistInSheet(sheetId, [zone]);
53170
+ }
53171
+ return "Success" /* CommandResult.Success */;
53172
+ }
53152
53173
  }
53153
53174
 
53154
53175
  class TableStylePlugin extends CorePlugin {
@@ -55984,7 +56005,7 @@ class DynamicTablesPlugin extends UIPlugin {
55984
56005
  tables = {};
55985
56006
  handle(cmd) {
55986
56007
  if (invalidateEvaluationCommands.has(cmd.type) ||
55987
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
56008
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
55988
56009
  cmd.type === "EVALUATE_CELLS") {
55989
56010
  this.tables = {};
55990
56011
  return;
@@ -59121,7 +59142,7 @@ class TableComputedStylePlugin extends UIPlugin {
59121
59142
  tableStyles = {};
59122
59143
  handle(cmd) {
59123
59144
  if (invalidateEvaluationCommands.has(cmd.type) ||
59124
- (cmd.type === "UPDATE_CELL" && "content" in cmd) ||
59145
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
59125
59146
  cmd.type === "EVALUATE_CELLS") {
59126
59147
  this.tableStyles = {};
59127
59148
  return;
@@ -61092,6 +61113,8 @@ class GridSelectionPlugin extends UIPlugin {
61092
61113
  });
61093
61114
  this.selectCell(col, row);
61094
61115
  }
61116
+ const { col, row } = this.gridSelection.anchor.cell;
61117
+ this.moveClient({ sheetId: this.activeSheet.id, col, row });
61095
61118
  }
61096
61119
  /**
61097
61120
  * Ensure selections are not outside sheet boundaries.
@@ -61824,8 +61847,11 @@ class SheetViewPlugin extends UIPlugin {
61824
61847
  case "REMOVE_TABLE":
61825
61848
  case "UPDATE_TABLE":
61826
61849
  case "UPDATE_FILTER":
61827
- this.sheetsWithDirtyViewports.add(cmd.sheetId);
61828
- break;
61850
+ case "UNFREEZE_ROWS":
61851
+ case "UNFREEZE_COLUMNS":
61852
+ case "FREEZE_COLUMNS":
61853
+ case "FREEZE_ROWS":
61854
+ case "UNFREEZE_COLUMNS_ROWS":
61829
61855
  case "REMOVE_COLUMNS_ROWS":
61830
61856
  case "RESIZE_COLUMNS_ROWS":
61831
61857
  case "HIDE_COLUMNS_ROWS":
@@ -61838,11 +61864,9 @@ class SheetViewPlugin extends UIPlugin {
61838
61864
  case "FOLD_HEADER_GROUPS_IN_ZONE":
61839
61865
  case "UNFOLD_HEADER_GROUPS_IN_ZONE":
61840
61866
  case "UNFOLD_ALL_HEADER_GROUPS":
61841
- case "FOLD_ALL_HEADER_GROUPS": {
61842
- const sheetId = "sheetId" in cmd ? cmd.sheetId : this.getters.getActiveSheetId();
61843
- this.sheetsWithDirtyViewports.add(sheetId);
61867
+ case "FOLD_ALL_HEADER_GROUPS":
61868
+ this.sheetsWithDirtyViewports.add(cmd.sheetId);
61844
61869
  break;
61845
- }
61846
61870
  case "UPDATE_CELL":
61847
61871
  // update cell content or format can change hidden rows because of data filters
61848
61872
  if ("content" in cmd || "format" in cmd || cmd.style?.fontSize !== undefined) {
@@ -61858,13 +61882,6 @@ class SheetViewPlugin extends UIPlugin {
61858
61882
  case "ACTIVATE_SHEET":
61859
61883
  this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
61860
61884
  break;
61861
- case "UNFREEZE_ROWS":
61862
- case "UNFREEZE_COLUMNS":
61863
- case "FREEZE_COLUMNS":
61864
- case "FREEZE_ROWS":
61865
- case "UNFREEZE_COLUMNS_ROWS":
61866
- this.resetViewports(this.getters.getActiveSheetId());
61867
- break;
61868
61885
  case "DELETE_SHEET":
61869
61886
  this.sheetsWithDirtyViewports.delete(cmd.sheetId);
61870
61887
  break;
@@ -63020,7 +63037,7 @@ class AggregateStatisticsStore extends SpreadsheetStore {
63020
63037
  }
63021
63038
  handle(cmd) {
63022
63039
  if (invalidateEvaluationCommands.has(cmd.type) ||
63023
- (cmd.type === "UPDATE_CELL" && "content" in cmd)) {
63040
+ (cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd))) {
63024
63041
  this.isDirty = true;
63025
63042
  }
63026
63043
  switch (cmd.type) {
@@ -69344,6 +69361,6 @@ const constants = {
69344
69361
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
69345
69362
 
69346
69363
 
69347
- __info__.version = "17.4.32";
69348
- __info__.date = "2025-04-25T08:06:59.937Z";
69349
- __info__.hash = "c370ddf";
69364
+ __info__.version = "17.4.33";
69365
+ __info__.date = "2025-05-02T12:30:31.263Z";
69366
+ __info__.hash = "3ba00e6";