@odoo/o-spreadsheet 16.2.14 → 16.2.16

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.
@@ -991,13 +991,17 @@ function getAddHeaderStartIndex(position, base) {
991
991
  return position === "after" ? base + 1 : base;
992
992
  }
993
993
  /**
994
- * Compare two objects.
994
+ * Compares two objects.
995
995
  */
996
996
  function deepEquals(o1, o2) {
997
997
  if (o1 === o2)
998
998
  return true;
999
999
  if ((o1 && !o2) || (o2 && !o1))
1000
1000
  return false;
1001
+ if (typeof o1 !== typeof o2)
1002
+ return false;
1003
+ if (typeof o1 !== "object")
1004
+ return o1 === o2;
1001
1005
  // Objects can have different keys if the values are undefined
1002
1006
  const keys = new Set();
1003
1007
  Object.keys(o1).forEach((key) => keys.add(key));
@@ -4683,6 +4687,7 @@ css /* scss */ `
4683
4687
  padding: 10px;
4684
4688
  width: ${ERROR_TOOLTIP_WIDTH}px;
4685
4689
  box-sizing: border-box !important;
4690
+ overflow-wrap: break-word;
4686
4691
  }
4687
4692
  `;
4688
4693
  class ErrorToolTip extends owl.Component {
@@ -7245,6 +7250,7 @@ class LineChart extends AbstractChart {
7245
7250
  this.labelsAsText = definition.labelsAsText;
7246
7251
  this.stacked = definition.stacked;
7247
7252
  this.aggregated = definition.aggregated;
7253
+ this.cumulative = definition.cumulative;
7248
7254
  }
7249
7255
  static validateChartDefinition(validator, definition) {
7250
7256
  return validator.checkValidations(definition, checkDataset, checkLabelRange);
@@ -7265,6 +7271,7 @@ class LineChart extends AbstractChart {
7265
7271
  labelRange: context.auxiliaryRange || undefined,
7266
7272
  stacked: false,
7267
7273
  aggregated: false,
7274
+ cumulative: false,
7268
7275
  };
7269
7276
  }
7270
7277
  getDefinition() {
@@ -7285,6 +7292,7 @@ class LineChart extends AbstractChart {
7285
7292
  labelsAsText: this.labelsAsText,
7286
7293
  stacked: this.stacked,
7287
7294
  aggregated: this.aggregated,
7295
+ cumulative: this.cumulative,
7288
7296
  };
7289
7297
  }
7290
7298
  getContextCreation() {
@@ -7488,6 +7496,16 @@ function createLineChartRuntime(chart, getters) {
7488
7496
  if (chart.stacked) {
7489
7497
  backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
7490
7498
  }
7499
+ if (chart.cumulative) {
7500
+ let accumulator = 0;
7501
+ data = data.map((value) => {
7502
+ if (!isNaN(value)) {
7503
+ accumulator += parseFloat(value);
7504
+ return accumulator;
7505
+ }
7506
+ return value;
7507
+ });
7508
+ }
7491
7509
  const backgroundColor = rgbaToHex(backgroundRGBA);
7492
7510
  const dataset = {
7493
7511
  label,
@@ -8270,6 +8288,7 @@ function getSmartChartDefinition(zone, getters) {
8270
8288
  labelsAsText: false,
8271
8289
  stacked: false,
8272
8290
  aggregated: false,
8291
+ cumulative: false,
8273
8292
  labelRange: labelRangeXc,
8274
8293
  type: "line",
8275
8294
  dataSetsHaveTitle,
@@ -8632,6 +8651,13 @@ const REMOVE_ROWS_ACTION = (env) => {
8632
8651
  elements: rows,
8633
8652
  });
8634
8653
  };
8654
+ const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
8655
+ const sheetId = env.model.getters.getActiveSheetId();
8656
+ const selectedElements = env.model.getters.getElementsFromSelection(dimension);
8657
+ const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
8658
+ const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
8659
+ return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
8660
+ };
8635
8661
  const REMOVE_COLUMNS_NAME = (env) => {
8636
8662
  if (env.model.getters.getSelectedZones().length > 1) {
8637
8663
  return _lt("Delete columns");
@@ -9222,11 +9248,7 @@ colMenuRegistry
9222
9248
  name: REMOVE_COLUMNS_NAME,
9223
9249
  sequence: 90,
9224
9250
  action: REMOVE_COLUMNS_ACTION,
9225
- isVisible: (env) => {
9226
- const sheetId = env.model.getters.getActiveSheetId();
9227
- const selectedCols = env.model.getters.getElementsFromSelection("COL");
9228
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
9229
- },
9251
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
9230
9252
  })
9231
9253
  .add("clear_column", {
9232
9254
  name: DELETE_CONTENT_COLUMNS_NAME,
@@ -9240,7 +9262,7 @@ colMenuRegistry
9240
9262
  isVisible: (env) => {
9241
9263
  const sheetId = env.model.getters.getActiveSheetId();
9242
9264
  const selectedCols = env.model.getters.getElementsFromSelection("COL");
9243
- return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
9265
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
9244
9266
  },
9245
9267
  separator: true,
9246
9268
  })
@@ -9314,11 +9336,7 @@ rowMenuRegistry
9314
9336
  name: REMOVE_ROWS_NAME,
9315
9337
  sequence: 70,
9316
9338
  action: REMOVE_ROWS_ACTION,
9317
- isVisible: (env) => {
9318
- const sheetId = env.model.getters.getActiveSheetId();
9319
- const selectedRows = env.model.getters.getElementsFromSelection("ROW");
9320
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
9321
- },
9339
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
9322
9340
  })
9323
9341
  .add("clear_row", {
9324
9342
  name: DELETE_CONTENT_ROWS_NAME,
@@ -9332,7 +9350,7 @@ rowMenuRegistry
9332
9350
  isVisible: (env) => {
9333
9351
  const sheetId = env.model.getters.getActiveSheetId();
9334
9352
  const selectedRows = env.model.getters.getElementsFromSelection("ROW");
9335
- return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
9353
+ return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
9336
9354
  },
9337
9355
  separator: true,
9338
9356
  })
@@ -16178,11 +16196,13 @@ topbarMenuRegistry
16178
16196
  name: REMOVE_ROWS_NAME,
16179
16197
  sequence: 80,
16180
16198
  action: REMOVE_ROWS_ACTION,
16199
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
16181
16200
  })
16182
16201
  .addChild("edit_delete_column", ["edit"], {
16183
16202
  name: REMOVE_COLUMNS_NAME,
16184
16203
  sequence: 90,
16185
16204
  action: REMOVE_COLUMNS_ACTION,
16205
+ isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
16186
16206
  })
16187
16207
  .addChild("edit_delete_cell_shift_up", ["edit"], {
16188
16208
  name: _lt("Delete cell and shift up"),
@@ -17495,6 +17515,11 @@ class LineConfigPanel extends LineBarPieConfigPanel {
17495
17515
  aggregated: ev.target.checked,
17496
17516
  });
17497
17517
  }
17518
+ onUpdateCumulative(ev) {
17519
+ this.props.updateChart(this.props.figureId, {
17520
+ cumulative: ev.target.checked,
17521
+ });
17522
+ }
17498
17523
  }
17499
17524
  LineConfigPanel.template = "o-spreadsheet-LineConfigPanel";
17500
17525
 
@@ -20854,9 +20879,11 @@ function useCellHovered(env, gridRef, callback) {
20854
20879
  }
20855
20880
  }
20856
20881
  function updateMousePosition(e) {
20857
- x = e.offsetX;
20858
- y = e.offsetY;
20859
- lastMoved = Date.now();
20882
+ if (gridRef.el === e.target) {
20883
+ x = e.offsetX;
20884
+ y = e.offsetY;
20885
+ lastMoved = Date.now();
20886
+ }
20860
20887
  }
20861
20888
  function recompute() {
20862
20889
  const { col, row } = getPosition();
@@ -24969,6 +24996,7 @@ function convertChartData(chartData) {
24969
24996
  legendPosition: chartData.legendPosition,
24970
24997
  stacked: chartData.stacked || false,
24971
24998
  aggregated: false,
24999
+ cumulative: chartData.cumulative || false,
24972
25000
  labelsAsText: false,
24973
25001
  };
24974
25002
  }
@@ -29623,7 +29651,7 @@ class HeaderVisibilityPlugin extends CorePlugin {
29623
29651
  if (!this.getters.tryGetSheet(cmd.sheetId)) {
29624
29652
  return 27 /* CommandResult.InvalidSheetId */;
29625
29653
  }
29626
- if (!this.canRemoveHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
29654
+ if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
29627
29655
  return 8 /* CommandResult.NotEnoughElements */;
29628
29656
  }
29629
29657
  return 0 /* CommandResult.Success */;
@@ -29673,9 +29701,9 @@ class HeaderVisibilityPlugin extends CorePlugin {
29673
29701
  }
29674
29702
  return;
29675
29703
  }
29676
- canRemoveHeaders(sheetId, dimension, elements) {
29704
+ checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
29677
29705
  const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
29678
- return !includesAll(elements, visibleHeaders);
29706
+ return includesAll(elements, visibleHeaders);
29679
29707
  }
29680
29708
  isRowHiddenByUser(sheetId, index) {
29681
29709
  return this.hiddenHeaders[sheetId].ROW[index];
@@ -29771,7 +29799,7 @@ class HeaderVisibilityPlugin extends CorePlugin {
29771
29799
  }
29772
29800
  }
29773
29801
  HeaderVisibilityPlugin.getters = [
29774
- "canRemoveHeaders",
29802
+ "checkElementsIncludeAllVisibleHeaders",
29775
29803
  "getHiddenColsGroups",
29776
29804
  "getHiddenRowsGroups",
29777
29805
  "isRowHiddenByUser",
@@ -30808,6 +30836,9 @@ class SheetPlugin extends CorePlugin {
30808
30836
  if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
30809
30837
  return 86 /* CommandResult.InvalidHeaderIndex */;
30810
30838
  }
30839
+ else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
30840
+ return 8 /* CommandResult.NotEnoughElements */;
30841
+ }
30811
30842
  else {
30812
30843
  return 0 /* CommandResult.Success */;
30813
30844
  }
@@ -31094,6 +31125,20 @@ class SheetPlugin extends CorePlugin {
31094
31125
  }
31095
31126
  this.history.update("sheets", sheetId, "panes", panes);
31096
31127
  }
31128
+ /**
31129
+ * Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
31130
+ * This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
31131
+ */
31132
+ checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
31133
+ const paneDivisions = this.getters.getPaneDivisions(sheetId);
31134
+ const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
31135
+ const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
31136
+ if (!startIndex) {
31137
+ return false;
31138
+ }
31139
+ const indicesToCheck = range(startIndex, endIndex);
31140
+ return includesAll(elements, indicesToCheck);
31141
+ }
31097
31142
  // ---------------------------------------------------------------------------
31098
31143
  // Row/Col manipulation
31099
31144
  // ---------------------------------------------------------------------------
@@ -31622,6 +31667,7 @@ SheetPlugin.getters = [
31622
31667
  "getSheetSize",
31623
31668
  "getSheetZone",
31624
31669
  "getPaneDivisions",
31670
+ "checkElementsIncludeAllNonFrozenHeaders",
31625
31671
  ];
31626
31672
 
31627
31673
  /**
@@ -32188,6 +32234,7 @@ class EvaluationConditionalFormatPlugin extends UIPlugin {
32188
32234
  // stores the computed styles in the format of computedStyles.sheetName[col][row] = Style
32189
32235
  this.computedStyles = {};
32190
32236
  this.computedIcons = {};
32237
+ this.uuidGenerator = new UuidGenerator();
32191
32238
  /**
32192
32239
  * Execute the predicate to know if a conditional formatting rule should be applied to a cell
32193
32240
  */
@@ -32540,13 +32587,20 @@ class EvaluationConditionalFormatPlugin extends UIPlugin {
32540
32587
  this.adaptRules(origin.sheetId, cf, [xc], toRemoveRange);
32541
32588
  }
32542
32589
  else {
32543
- this.adaptRules(target.sheetId, cf, [xc], []);
32544
32590
  this.adaptRules(origin.sheetId, cf, [], toRemoveRange);
32591
+ const cfToCopyTo = this.getCFToCopyTo(target.sheetId, cf);
32592
+ this.adaptRules(target.sheetId, cfToCopyTo, [xc], []);
32545
32593
  }
32546
32594
  }
32547
32595
  }
32548
32596
  }
32549
32597
  }
32598
+ getCFToCopyTo(targetSheetId, originCF) {
32599
+ const cfInTarget = this.getters
32600
+ .getConditionalFormats(targetSheetId)
32601
+ .find((cf) => cf.stopIfTrue === originCF.stopIfTrue && deepEquals(cf.rule, originCF.rule));
32602
+ return cfInTarget ? cfInTarget : { ...originCF, id: this.uuidGenerator.uuidv4(), ranges: [] };
32603
+ }
32550
32604
  }
32551
32605
  EvaluationConditionalFormatPlugin.getters = ["getConditionalIcon", "getCellComputedStyle"];
32552
32606
 
@@ -33068,6 +33122,9 @@ class InternalViewport {
33068
33122
  const sheetId = this.sheetId;
33069
33123
  this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
33070
33124
  this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
33125
+ if (this.left === -1) {
33126
+ this.left = this.boundaries.left;
33127
+ }
33071
33128
  if (this.right === -1) {
33072
33129
  this.right = this.getters.getNumberCols(sheetId) - 1;
33073
33130
  }
@@ -33081,6 +33138,9 @@ class InternalViewport {
33081
33138
  const sheetId = this.sheetId;
33082
33139
  this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
33083
33140
  this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
33141
+ if (this.top === -1) {
33142
+ this.top = this.boundaries.top;
33143
+ }
33084
33144
  if (this.bottom === -1) {
33085
33145
  this.bottom = this.getters.getNumberRows(sheetId) - 1;
33086
33146
  }
@@ -38002,7 +38062,7 @@ class ClipboardPlugin extends UIPlugin {
38002
38062
  allowDispatch(cmd) {
38003
38063
  switch (cmd.type) {
38004
38064
  case "CUT":
38005
- const zones = cmd.target || this.getters.getSelectedZones();
38065
+ const zones = this.getters.getSelectedZones();
38006
38066
  const state = this.getClipboardState(zones, cmd.type);
38007
38067
  return state.isCutAllowed(zones);
38008
38068
  case "PASTE":
@@ -38033,7 +38093,7 @@ class ClipboardPlugin extends UIPlugin {
38033
38093
  switch (cmd.type) {
38034
38094
  case "COPY":
38035
38095
  case "CUT":
38036
- const zones = ("target" in cmd && cmd.target) || this.getters.getSelectedZones();
38096
+ const zones = this.getters.getSelectedZones();
38037
38097
  this.state = this.getClipboardState(zones, cmd.type);
38038
38098
  this.status = "visible";
38039
38099
  break;
@@ -39413,26 +39473,24 @@ class GridSelectionPlugin extends UIPlugin {
39413
39473
  const isBasedBefore = cmd.base < start;
39414
39474
  const deltaCol = isBasedBefore && isCol ? thickness : 0;
39415
39475
  const deltaRow = isBasedBefore && !isCol ? thickness : 0;
39416
- this.dispatch("CUT", {
39417
- target: [
39418
- {
39419
- left: isCol ? start + deltaCol : 0,
39420
- right: isCol ? end + deltaCol : this.getters.getNumberCols(cmd.sheetId) - 1,
39421
- top: !isCol ? start + deltaRow : 0,
39422
- bottom: !isCol ? end + deltaRow : this.getters.getNumberRows(cmd.sheetId) - 1,
39423
- },
39424
- ],
39425
- });
39426
- this.dispatch("PASTE", {
39427
- target: [
39428
- {
39429
- left: isCol ? cmd.base : 0,
39430
- right: isCol ? cmd.base + thickness - 1 : this.getters.getNumberCols(cmd.sheetId) - 1,
39431
- top: !isCol ? cmd.base : 0,
39432
- bottom: !isCol ? cmd.base + thickness - 1 : this.getters.getNumberRows(cmd.sheetId) - 1,
39433
- },
39434
- ],
39435
- });
39476
+ const target = [
39477
+ {
39478
+ left: isCol ? start + deltaCol : 0,
39479
+ right: isCol ? end + deltaCol : this.getters.getNumberCols(cmd.sheetId) - 1,
39480
+ top: !isCol ? start + deltaRow : 0,
39481
+ bottom: !isCol ? end + deltaRow : this.getters.getNumberRows(cmd.sheetId) - 1,
39482
+ },
39483
+ ];
39484
+ const state = new ClipboardCellsState(target, "CUT", this.getters, this.dispatch, this.selection);
39485
+ const pasteTarget = [
39486
+ {
39487
+ left: isCol ? cmd.base : 0,
39488
+ right: isCol ? cmd.base + thickness - 1 : this.getters.getNumberCols(cmd.sheetId) - 1,
39489
+ top: !isCol ? cmd.base : 0,
39490
+ bottom: !isCol ? cmd.base + thickness - 1 : this.getters.getNumberRows(cmd.sheetId) - 1,
39491
+ },
39492
+ ];
39493
+ state.paste(pasteTarget, { selectTarget: true });
39436
39494
  const toRemove = isBasedBefore ? cmd.elements.map((el) => el + thickness) : cmd.elements;
39437
39495
  let currentIndex = cmd.base;
39438
39496
  for (const element of toRemove) {
@@ -45400,6 +45458,6 @@ exports.setTranslationMethod = setTranslationMethod;
45400
45458
  exports.tokenize = tokenize;
45401
45459
 
45402
45460
 
45403
- __info__.version = '16.2.14';
45404
- __info__.date = '2023-08-29T13:54:14.962Z';
45405
- __info__.hash = 'ad037b1';
45461
+ __info__.version = '16.2.16';
45462
+ __info__.date = '2023-09-21T15:56:53.639Z';
45463
+ __info__.hash = '1a70819';
@@ -466,6 +466,7 @@ interface LineChartDefinition {
466
466
  readonly labelsAsText: boolean;
467
467
  readonly stacked: boolean;
468
468
  readonly aggregated?: boolean;
469
+ readonly cumulative: boolean;
469
470
  }
470
471
  type LineChartRuntime = {
471
472
  chartJsConfig: ChartConfiguration;
@@ -532,6 +533,7 @@ interface ExcelChartDefinition {
532
533
  readonly verticalAxisPosition: VerticalAxisPosition;
533
534
  readonly legendPosition: LegendPosition;
534
535
  readonly stacked?: boolean;
536
+ readonly cumulative?: boolean;
535
537
  }
536
538
  interface ChartCreationContext {
537
539
  readonly range?: string[];
@@ -1680,8 +1682,6 @@ interface CopyCommand {
1680
1682
  }
1681
1683
  interface CutCommand {
1682
1684
  type: "CUT";
1683
- /** Zones to cut. If none were given, will copy the zones in the selection*/
1684
- target?: Zone[];
1685
1685
  }
1686
1686
  interface PasteCommand {
1687
1687
  type: "PASTE";
@@ -3389,11 +3389,11 @@ declare class HeaderSizePlugin extends CorePlugin<HeaderSizeState> implements He
3389
3389
  }
3390
3390
 
3391
3391
  declare class HeaderVisibilityPlugin extends CorePlugin {
3392
- static getters: readonly ["canRemoveHeaders", "getHiddenColsGroups", "getHiddenRowsGroups", "isRowHiddenByUser", "isColHiddenByUser"];
3392
+ static getters: readonly ["checkElementsIncludeAllVisibleHeaders", "getHiddenColsGroups", "getHiddenRowsGroups", "isRowHiddenByUser", "isColHiddenByUser"];
3393
3393
  private readonly hiddenHeaders;
3394
3394
  allowDispatch(cmd: Command): CommandResult.Success | CommandResult.NotEnoughElements | CommandResult.InvalidSheetId | CommandResult.TooManyHiddenElements | CommandResult.InvalidHeaderIndex;
3395
3395
  handle(cmd: Command): void;
3396
- canRemoveHeaders(sheetId: UID, dimension: Dimension, elements: HeaderIndex[]): boolean;
3396
+ checkElementsIncludeAllVisibleHeaders(sheetId: UID, dimension: Dimension, elements: HeaderIndex[]): boolean;
3397
3397
  isRowHiddenByUser(sheetId: UID, index: HeaderIndex): boolean;
3398
3398
  isColHiddenByUser(sheetId: UID, index: HeaderIndex): boolean;
3399
3399
  getHiddenColsGroups(sheetId: UID): ConsecutiveIndexes[];
@@ -3516,7 +3516,7 @@ interface SheetState$1 {
3516
3516
  readonly cellPosition: Record<UID, CellPosition | undefined>;
3517
3517
  }
3518
3518
  declare class SheetPlugin extends CorePlugin<SheetState$1> implements SheetState$1 {
3519
- static getters: readonly ["getSheetName", "tryGetSheetName", "getSheet", "tryGetSheet", "getSheetIdByName", "getSheetIds", "getVisibleSheetIds", "isSheetVisible", "getEvaluationSheets", "doesHeaderExist", "getCell", "getCellPosition", "getColsZone", "getRowCells", "getRowsZone", "getNumberCols", "getNumberRows", "getNumberHeaders", "getGridLinesVisibility", "getNextSheetName", "isEmpty", "getSheetSize", "getSheetZone", "getPaneDivisions"];
3519
+ static getters: readonly ["getSheetName", "tryGetSheetName", "getSheet", "tryGetSheet", "getSheetIdByName", "getSheetIds", "getVisibleSheetIds", "isSheetVisible", "getEvaluationSheets", "doesHeaderExist", "getCell", "getCellPosition", "getColsZone", "getRowCells", "getRowsZone", "getNumberCols", "getNumberRows", "getNumberHeaders", "getGridLinesVisibility", "getNextSheetName", "isEmpty", "getSheetSize", "getSheetZone", "getPaneDivisions", "checkElementsIncludeAllNonFrozenHeaders"];
3520
3520
  readonly sheetIdsMapName: Record<string, UID | undefined>;
3521
3521
  readonly orderedSheetIds: UID[];
3522
3522
  readonly sheets: Record<UID, Sheet | undefined>;
@@ -3558,6 +3558,11 @@ declare class SheetPlugin extends CorePlugin<SheetState$1> implements SheetState
3558
3558
  getSheetZone(sheetId: UID): Zone;
3559
3559
  getPaneDivisions(sheetId: UID): Readonly<PaneDivision>;
3560
3560
  private setPaneDivisions;
3561
+ /**
3562
+ * Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
3563
+ * This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
3564
+ */
3565
+ checkElementsIncludeAllNonFrozenHeaders(sheetId: UID, dimension: Dimension, elements: HeaderIndex[]): boolean;
3561
3566
  /**
3562
3567
  * Check if a zone only contains empty cells
3563
3568
  */
@@ -3742,6 +3747,7 @@ declare class EvaluationConditionalFormatPlugin extends UIPlugin {
3742
3747
  private isStale;
3743
3748
  private computedStyles;
3744
3749
  private computedIcons;
3750
+ private uuidGenerator;
3745
3751
  handle(cmd: Command): void;
3746
3752
  finalize(): void;
3747
3753
  getCellComputedStyle(position: CellPosition): Style;
@@ -3772,6 +3778,7 @@ declare class EvaluationConditionalFormatPlugin extends UIPlugin {
3772
3778
  */
3773
3779
  private adaptRules;
3774
3780
  private pasteCf;
3781
+ private getCFToCopyTo;
3775
3782
  }
3776
3783
 
3777
3784
  declare class FilterEvaluationPlugin extends UIPlugin {
@@ -5137,6 +5144,7 @@ declare class LineConfigPanel extends LineBarPieConfigPanel {
5137
5144
  onUpdateLabelsAsText(ev: any): void;
5138
5145
  onUpdateStacked(ev: any): void;
5139
5146
  onUpdateAggregated(ev: any): void;
5147
+ onUpdateCumulative(ev: any): void;
5140
5148
  }
5141
5149
 
5142
5150
  interface Props$v {