@odoo/o-spreadsheet 16.4.12 → 16.4.14

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.
@@ -18569,6 +18569,17 @@ const SELECTION_CONTAINS_FILTER = (env) => {
18569
18569
  //------------------------------------------------------------------------------
18570
18570
  const IS_ONLY_ONE_RANGE = (env) => {
18571
18571
  return env.model.getters.getSelectedZones().length === 1;
18572
+ };
18573
+ const CAN_INSERT_HEADER = (env, dimension) => {
18574
+ if (!IS_ONLY_ONE_RANGE(env)) {
18575
+ return false;
18576
+ }
18577
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
18578
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
18579
+ const sheetId = env.model.getters.getActiveSheetId();
18580
+ const zone = env.model.getters.getSelectedZone();
18581
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
18582
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
18572
18583
  };
18573
18584
 
18574
18585
  const undo = {
@@ -18758,9 +18769,7 @@ const insertRow = {
18758
18769
  const number = getRowsNumber(env);
18759
18770
  return number === 1 ? _lt("Insert row") : _lt("Insert %s rows", number.toString());
18760
18771
  },
18761
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18762
- IS_ONLY_ONE_RANGE(env) &&
18763
- env.model.getters.getActiveCols().size === 0,
18772
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18764
18773
  icon: "o-spreadsheet-Icon.INSERT_ROW",
18765
18774
  };
18766
18775
  const rowInsertRowBefore = {
@@ -18769,9 +18778,7 @@ const rowInsertRowBefore = {
18769
18778
  return number === 1 ? _lt("Insert row above") : _lt("Insert %s rows above", number.toString());
18770
18779
  },
18771
18780
  execute: INSERT_ROWS_BEFORE_ACTION,
18772
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18773
- IS_ONLY_ONE_RANGE(env) &&
18774
- env.model.getters.getActiveCols().size === 0,
18781
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18775
18782
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
18776
18783
  };
18777
18784
  const topBarInsertRowsBefore = {
@@ -18802,9 +18809,7 @@ const rowInsertRowsAfter = {
18802
18809
  const number = getRowsNumber(env);
18803
18810
  return number === 1 ? _lt("Insert row below") : _lt("Insert %s rows below", number.toString());
18804
18811
  },
18805
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18806
- IS_ONLY_ONE_RANGE(env) &&
18807
- env.model.getters.getActiveCols().size === 0,
18812
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18808
18813
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
18809
18814
  };
18810
18815
  const topBarInsertRowsAfter = {
@@ -18822,9 +18827,7 @@ const insertCol = {
18822
18827
  const number = getColumnsNumber(env);
18823
18828
  return number === 1 ? _lt("Insert column") : _lt("Insert %s columns", number.toString());
18824
18829
  },
18825
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18826
- IS_ONLY_ONE_RANGE(env) &&
18827
- env.model.getters.getActiveRows().size === 0,
18830
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18828
18831
  icon: "o-spreadsheet-Icon.INSERT_COL",
18829
18832
  };
18830
18833
  const colInsertColsBefore = {
@@ -18835,9 +18838,7 @@ const colInsertColsBefore = {
18835
18838
  : _lt("Insert %s columns left", number.toString());
18836
18839
  },
18837
18840
  execute: INSERT_COLUMNS_BEFORE_ACTION,
18838
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18839
- IS_ONLY_ONE_RANGE(env) &&
18840
- env.model.getters.getActiveRows().size === 0,
18841
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18841
18842
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
18842
18843
  };
18843
18844
  const topBarInsertColsBefore = {
@@ -18870,9 +18871,7 @@ const colInsertColsAfter = {
18870
18871
  : _lt("Insert %s columns right", number.toString());
18871
18872
  },
18872
18873
  execute: INSERT_COLUMNS_AFTER_ACTION,
18873
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18874
- IS_ONLY_ONE_RANGE(env) &&
18875
- env.model.getters.getActiveRows().size === 0,
18874
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18876
18875
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
18877
18876
  };
18878
18877
  const topBarInsertColsAfter = {
@@ -22830,7 +22829,7 @@ css /* scss */ `
22830
22829
  }
22831
22830
  .o-input-count {
22832
22831
  width: fit-content;
22833
- padding: 4 0 4 4;
22832
+ padding: 4px 0 4px 4px;
22834
22833
  }
22835
22834
  }
22836
22835
  }
@@ -33077,6 +33076,13 @@ class FiltersPlugin extends CorePlugin {
33077
33076
  }
33078
33077
  onDeleteColumnsRows(cmd) {
33079
33078
  for (const table of this.getFilterTables(cmd.sheetId)) {
33079
+ // Remove the filter tables whose data filter headers are in the removed rows.
33080
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
33081
+ const tables = { ...this.tables[cmd.sheetId] };
33082
+ delete tables[table.id];
33083
+ this.history.update("tables", cmd.sheetId, tables);
33084
+ continue;
33085
+ }
33080
33086
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
33081
33087
  if (!zone) {
33082
33088
  const tables = { ...this.tables[cmd.sheetId] };
@@ -35812,9 +35818,6 @@ class Evaluator {
35812
35818
  }
35813
35819
  }
35814
35820
  setEvaluatedCell(positionId, evaluatedCell) {
35815
- if (this.nextPositionsToUpdate.has(positionId)) {
35816
- this.nextPositionsToUpdate.delete(positionId);
35817
- }
35818
35821
  this.evaluatedCells.set(positionId, evaluatedCell);
35819
35822
  }
35820
35823
  computeCell(positionId) {
@@ -36528,22 +36531,20 @@ class EvaluationChartPlugin extends UIPlugin {
36528
36531
  invalidateCFEvaluationCommands.has(cmd.type) ||
36529
36532
  cmd.type === "EVALUATE_CELLS" ||
36530
36533
  cmd.type === "UPDATE_CELL") {
36531
- if (cmd.type !== "UNDO" && cmd.type !== "REDO") {
36532
- for (const chartId in this.charts) {
36533
- this.history.update("charts", chartId, undefined);
36534
- }
36534
+ for (const chartId in this.charts) {
36535
+ this.charts[chartId] = undefined;
36535
36536
  }
36536
36537
  }
36537
36538
  switch (cmd.type) {
36538
36539
  case "UPDATE_CHART":
36539
36540
  case "CREATE_CHART":
36540
36541
  case "DELETE_FIGURE":
36541
- this.history.update("charts", cmd.id, undefined);
36542
+ this.charts[cmd.id] = undefined;
36542
36543
  break;
36543
36544
  case "DELETE_SHEET":
36544
36545
  for (let chartId in this.charts) {
36545
36546
  if (!this.getters.isChartDefined(chartId)) {
36546
- this.history.update("charts", chartId, undefined);
36547
+ this.charts[chartId] = undefined;
36547
36548
  }
36548
36549
  }
36549
36550
  break;
@@ -36555,7 +36556,7 @@ class EvaluationChartPlugin extends UIPlugin {
36555
36556
  if (!chart) {
36556
36557
  throw new Error(`No chart for the given id: ${figureId}`);
36557
36558
  }
36558
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36559
+ this.charts[figureId] = this.createRuntimeChart(chart);
36559
36560
  }
36560
36561
  return this.charts[figureId];
36561
36562
  }
@@ -43019,6 +43020,8 @@ class FilterEvaluationPlugin extends UIPlugin {
43019
43020
  case "EVALUATE_CELLS":
43020
43021
  case "ACTIVATE_SHEET":
43021
43022
  case "REMOVE_FILTER_TABLE":
43023
+ case "ADD_COLUMNS_ROWS":
43024
+ case "REMOVE_COLUMNS_ROWS":
43022
43025
  this.isEvaluationDirty = true;
43023
43026
  break;
43024
43027
  case "START":
@@ -50775,6 +50778,6 @@ exports.setTranslationMethod = setTranslationMethod;
50775
50778
  exports.tokenize = tokenize;
50776
50779
 
50777
50780
 
50778
- __info__.version = '16.4.12';
50779
- __info__.date = '2023-11-02T09:32:52.766Z';
50780
- __info__.hash = '7fdc589';
50781
+ __info__.version = '16.4.14';
50782
+ __info__.date = '2023-11-16T11:59:51.900Z';
50783
+ __info__.hash = '66c6f47';
@@ -3819,11 +3819,11 @@ declare class CustomColorsPlugin extends UIPlugin<CustomColorState> {
3819
3819
  }
3820
3820
 
3821
3821
  interface EvaluationChartState {
3822
- readonly charts: Immutable<Record<UID, ChartRuntime | undefined>>;
3822
+ charts: Record<UID, ChartRuntime | undefined>;
3823
3823
  }
3824
3824
  declare class EvaluationChartPlugin extends UIPlugin<EvaluationChartState> {
3825
3825
  static getters: readonly ["getChartRuntime", "getBackgroundOfSingleCellChart"];
3826
- readonly charts: Immutable<Record<UID, ChartRuntime | undefined>>;
3826
+ charts: Record<UID, ChartRuntime | undefined>;
3827
3827
  private createRuntimeChart;
3828
3828
  handle(cmd: CoreViewCommand): void;
3829
3829
  getChartRuntime(figureId: UID): ChartRuntime;
@@ -18565,6 +18565,17 @@ const SELECTION_CONTAINS_FILTER = (env) => {
18565
18565
  //------------------------------------------------------------------------------
18566
18566
  const IS_ONLY_ONE_RANGE = (env) => {
18567
18567
  return env.model.getters.getSelectedZones().length === 1;
18568
+ };
18569
+ const CAN_INSERT_HEADER = (env, dimension) => {
18570
+ if (!IS_ONLY_ONE_RANGE(env)) {
18571
+ return false;
18572
+ }
18573
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
18574
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
18575
+ const sheetId = env.model.getters.getActiveSheetId();
18576
+ const zone = env.model.getters.getSelectedZone();
18577
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
18578
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
18568
18579
  };
18569
18580
 
18570
18581
  const undo = {
@@ -18754,9 +18765,7 @@ const insertRow = {
18754
18765
  const number = getRowsNumber(env);
18755
18766
  return number === 1 ? _lt("Insert row") : _lt("Insert %s rows", number.toString());
18756
18767
  },
18757
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18758
- IS_ONLY_ONE_RANGE(env) &&
18759
- env.model.getters.getActiveCols().size === 0,
18768
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18760
18769
  icon: "o-spreadsheet-Icon.INSERT_ROW",
18761
18770
  };
18762
18771
  const rowInsertRowBefore = {
@@ -18765,9 +18774,7 @@ const rowInsertRowBefore = {
18765
18774
  return number === 1 ? _lt("Insert row above") : _lt("Insert %s rows above", number.toString());
18766
18775
  },
18767
18776
  execute: INSERT_ROWS_BEFORE_ACTION,
18768
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18769
- IS_ONLY_ONE_RANGE(env) &&
18770
- env.model.getters.getActiveCols().size === 0,
18777
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18771
18778
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
18772
18779
  };
18773
18780
  const topBarInsertRowsBefore = {
@@ -18798,9 +18805,7 @@ const rowInsertRowsAfter = {
18798
18805
  const number = getRowsNumber(env);
18799
18806
  return number === 1 ? _lt("Insert row below") : _lt("Insert %s rows below", number.toString());
18800
18807
  },
18801
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18802
- IS_ONLY_ONE_RANGE(env) &&
18803
- env.model.getters.getActiveCols().size === 0,
18808
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18804
18809
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
18805
18810
  };
18806
18811
  const topBarInsertRowsAfter = {
@@ -18818,9 +18823,7 @@ const insertCol = {
18818
18823
  const number = getColumnsNumber(env);
18819
18824
  return number === 1 ? _lt("Insert column") : _lt("Insert %s columns", number.toString());
18820
18825
  },
18821
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18822
- IS_ONLY_ONE_RANGE(env) &&
18823
- env.model.getters.getActiveRows().size === 0,
18826
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18824
18827
  icon: "o-spreadsheet-Icon.INSERT_COL",
18825
18828
  };
18826
18829
  const colInsertColsBefore = {
@@ -18831,9 +18834,7 @@ const colInsertColsBefore = {
18831
18834
  : _lt("Insert %s columns left", number.toString());
18832
18835
  },
18833
18836
  execute: INSERT_COLUMNS_BEFORE_ACTION,
18834
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18835
- IS_ONLY_ONE_RANGE(env) &&
18836
- env.model.getters.getActiveRows().size === 0,
18837
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18837
18838
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
18838
18839
  };
18839
18840
  const topBarInsertColsBefore = {
@@ -18866,9 +18867,7 @@ const colInsertColsAfter = {
18866
18867
  : _lt("Insert %s columns right", number.toString());
18867
18868
  },
18868
18869
  execute: INSERT_COLUMNS_AFTER_ACTION,
18869
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18870
- IS_ONLY_ONE_RANGE(env) &&
18871
- env.model.getters.getActiveRows().size === 0,
18870
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18872
18871
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
18873
18872
  };
18874
18873
  const topBarInsertColsAfter = {
@@ -22826,7 +22825,7 @@ css /* scss */ `
22826
22825
  }
22827
22826
  .o-input-count {
22828
22827
  width: fit-content;
22829
- padding: 4 0 4 4;
22828
+ padding: 4px 0 4px 4px;
22830
22829
  }
22831
22830
  }
22832
22831
  }
@@ -33073,6 +33072,13 @@ class FiltersPlugin extends CorePlugin {
33073
33072
  }
33074
33073
  onDeleteColumnsRows(cmd) {
33075
33074
  for (const table of this.getFilterTables(cmd.sheetId)) {
33075
+ // Remove the filter tables whose data filter headers are in the removed rows.
33076
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
33077
+ const tables = { ...this.tables[cmd.sheetId] };
33078
+ delete tables[table.id];
33079
+ this.history.update("tables", cmd.sheetId, tables);
33080
+ continue;
33081
+ }
33076
33082
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
33077
33083
  if (!zone) {
33078
33084
  const tables = { ...this.tables[cmd.sheetId] };
@@ -35808,9 +35814,6 @@ class Evaluator {
35808
35814
  }
35809
35815
  }
35810
35816
  setEvaluatedCell(positionId, evaluatedCell) {
35811
- if (this.nextPositionsToUpdate.has(positionId)) {
35812
- this.nextPositionsToUpdate.delete(positionId);
35813
- }
35814
35817
  this.evaluatedCells.set(positionId, evaluatedCell);
35815
35818
  }
35816
35819
  computeCell(positionId) {
@@ -36524,22 +36527,20 @@ class EvaluationChartPlugin extends UIPlugin {
36524
36527
  invalidateCFEvaluationCommands.has(cmd.type) ||
36525
36528
  cmd.type === "EVALUATE_CELLS" ||
36526
36529
  cmd.type === "UPDATE_CELL") {
36527
- if (cmd.type !== "UNDO" && cmd.type !== "REDO") {
36528
- for (const chartId in this.charts) {
36529
- this.history.update("charts", chartId, undefined);
36530
- }
36530
+ for (const chartId in this.charts) {
36531
+ this.charts[chartId] = undefined;
36531
36532
  }
36532
36533
  }
36533
36534
  switch (cmd.type) {
36534
36535
  case "UPDATE_CHART":
36535
36536
  case "CREATE_CHART":
36536
36537
  case "DELETE_FIGURE":
36537
- this.history.update("charts", cmd.id, undefined);
36538
+ this.charts[cmd.id] = undefined;
36538
36539
  break;
36539
36540
  case "DELETE_SHEET":
36540
36541
  for (let chartId in this.charts) {
36541
36542
  if (!this.getters.isChartDefined(chartId)) {
36542
- this.history.update("charts", chartId, undefined);
36543
+ this.charts[chartId] = undefined;
36543
36544
  }
36544
36545
  }
36545
36546
  break;
@@ -36551,7 +36552,7 @@ class EvaluationChartPlugin extends UIPlugin {
36551
36552
  if (!chart) {
36552
36553
  throw new Error(`No chart for the given id: ${figureId}`);
36553
36554
  }
36554
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36555
+ this.charts[figureId] = this.createRuntimeChart(chart);
36555
36556
  }
36556
36557
  return this.charts[figureId];
36557
36558
  }
@@ -43015,6 +43016,8 @@ class FilterEvaluationPlugin extends UIPlugin {
43015
43016
  case "EVALUATE_CELLS":
43016
43017
  case "ACTIVATE_SHEET":
43017
43018
  case "REMOVE_FILTER_TABLE":
43019
+ case "ADD_COLUMNS_ROWS":
43020
+ case "REMOVE_COLUMNS_ROWS":
43018
43021
  this.isEvaluationDirty = true;
43019
43022
  break;
43020
43023
  case "START":
@@ -50739,6 +50742,6 @@ const constants = {
50739
50742
  export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
50740
50743
 
50741
50744
 
50742
- __info__.version = '16.4.12';
50743
- __info__.date = '2023-11-02T09:32:52.766Z';
50744
- __info__.hash = '7fdc589';
50745
+ __info__.version = '16.4.14';
50746
+ __info__.date = '2023-11-16T11:59:51.900Z';
50747
+ __info__.hash = '66c6f47';
@@ -18566,6 +18566,17 @@
18566
18566
  //------------------------------------------------------------------------------
18567
18567
  const IS_ONLY_ONE_RANGE = (env) => {
18568
18568
  return env.model.getters.getSelectedZones().length === 1;
18569
+ };
18570
+ const CAN_INSERT_HEADER = (env, dimension) => {
18571
+ if (!IS_ONLY_ONE_RANGE(env)) {
18572
+ return false;
18573
+ }
18574
+ const activeHeaders = dimension === "COL" ? env.model.getters.getActiveCols() : env.model.getters.getActiveRows();
18575
+ const ortogonalActiveHeaders = dimension === "COL" ? env.model.getters.getActiveRows() : env.model.getters.getActiveCols();
18576
+ const sheetId = env.model.getters.getActiveSheetId();
18577
+ const zone = env.model.getters.getSelectedZone();
18578
+ const allSheetSelected = isEqual(zone, env.model.getters.getSheetZone(sheetId));
18579
+ return isConsecutive(activeHeaders) && (ortogonalActiveHeaders.size === 0 || allSheetSelected);
18569
18580
  };
18570
18581
 
18571
18582
  const undo = {
@@ -18755,9 +18766,7 @@
18755
18766
  const number = getRowsNumber(env);
18756
18767
  return number === 1 ? _lt("Insert row") : _lt("Insert %s rows", number.toString());
18757
18768
  },
18758
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18759
- IS_ONLY_ONE_RANGE(env) &&
18760
- env.model.getters.getActiveCols().size === 0,
18769
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18761
18770
  icon: "o-spreadsheet-Icon.INSERT_ROW",
18762
18771
  };
18763
18772
  const rowInsertRowBefore = {
@@ -18766,9 +18775,7 @@
18766
18775
  return number === 1 ? _lt("Insert row above") : _lt("Insert %s rows above", number.toString());
18767
18776
  },
18768
18777
  execute: INSERT_ROWS_BEFORE_ACTION,
18769
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18770
- IS_ONLY_ONE_RANGE(env) &&
18771
- env.model.getters.getActiveCols().size === 0,
18778
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18772
18779
  icon: "o-spreadsheet-Icon.INSERT_ROW_BEFORE",
18773
18780
  };
18774
18781
  const topBarInsertRowsBefore = {
@@ -18799,9 +18806,7 @@
18799
18806
  const number = getRowsNumber(env);
18800
18807
  return number === 1 ? _lt("Insert row below") : _lt("Insert %s rows below", number.toString());
18801
18808
  },
18802
- isVisible: (env) => isConsecutive(env.model.getters.getActiveRows()) &&
18803
- IS_ONLY_ONE_RANGE(env) &&
18804
- env.model.getters.getActiveCols().size === 0,
18809
+ isVisible: (env) => CAN_INSERT_HEADER(env, "ROW"),
18805
18810
  icon: "o-spreadsheet-Icon.INSERT_ROW_AFTER",
18806
18811
  };
18807
18812
  const topBarInsertRowsAfter = {
@@ -18819,9 +18824,7 @@
18819
18824
  const number = getColumnsNumber(env);
18820
18825
  return number === 1 ? _lt("Insert column") : _lt("Insert %s columns", number.toString());
18821
18826
  },
18822
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18823
- IS_ONLY_ONE_RANGE(env) &&
18824
- env.model.getters.getActiveRows().size === 0,
18827
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18825
18828
  icon: "o-spreadsheet-Icon.INSERT_COL",
18826
18829
  };
18827
18830
  const colInsertColsBefore = {
@@ -18832,9 +18835,7 @@
18832
18835
  : _lt("Insert %s columns left", number.toString());
18833
18836
  },
18834
18837
  execute: INSERT_COLUMNS_BEFORE_ACTION,
18835
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18836
- IS_ONLY_ONE_RANGE(env) &&
18837
- env.model.getters.getActiveRows().size === 0,
18838
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18838
18839
  icon: "o-spreadsheet-Icon.INSERT_COL_BEFORE",
18839
18840
  };
18840
18841
  const topBarInsertColsBefore = {
@@ -18867,9 +18868,7 @@
18867
18868
  : _lt("Insert %s columns right", number.toString());
18868
18869
  },
18869
18870
  execute: INSERT_COLUMNS_AFTER_ACTION,
18870
- isVisible: (env) => isConsecutive(env.model.getters.getActiveCols()) &&
18871
- IS_ONLY_ONE_RANGE(env) &&
18872
- env.model.getters.getActiveRows().size === 0,
18871
+ isVisible: (env) => CAN_INSERT_HEADER(env, "COL"),
18873
18872
  icon: "o-spreadsheet-Icon.INSERT_COL_AFTER",
18874
18873
  };
18875
18874
  const topBarInsertColsAfter = {
@@ -22827,7 +22826,7 @@
22827
22826
  }
22828
22827
  .o-input-count {
22829
22828
  width: fit-content;
22830
- padding: 4 0 4 4;
22829
+ padding: 4px 0 4px 4px;
22831
22830
  }
22832
22831
  }
22833
22832
  }
@@ -33074,6 +33073,13 @@
33074
33073
  }
33075
33074
  onDeleteColumnsRows(cmd) {
33076
33075
  for (const table of this.getFilterTables(cmd.sheetId)) {
33076
+ // Remove the filter tables whose data filter headers are in the removed rows.
33077
+ if (cmd.dimension === "ROW" && cmd.elements.includes(table.zone.top)) {
33078
+ const tables = { ...this.tables[cmd.sheetId] };
33079
+ delete tables[table.id];
33080
+ this.history.update("tables", cmd.sheetId, tables);
33081
+ continue;
33082
+ }
33077
33083
  const zone = reduceZoneOnDeletion(table.zone, cmd.dimension === "COL" ? "left" : "top", cmd.elements);
33078
33084
  if (!zone) {
33079
33085
  const tables = { ...this.tables[cmd.sheetId] };
@@ -35809,9 +35815,6 @@
35809
35815
  }
35810
35816
  }
35811
35817
  setEvaluatedCell(positionId, evaluatedCell) {
35812
- if (this.nextPositionsToUpdate.has(positionId)) {
35813
- this.nextPositionsToUpdate.delete(positionId);
35814
- }
35815
35818
  this.evaluatedCells.set(positionId, evaluatedCell);
35816
35819
  }
35817
35820
  computeCell(positionId) {
@@ -36525,22 +36528,20 @@
36525
36528
  invalidateCFEvaluationCommands.has(cmd.type) ||
36526
36529
  cmd.type === "EVALUATE_CELLS" ||
36527
36530
  cmd.type === "UPDATE_CELL") {
36528
- if (cmd.type !== "UNDO" && cmd.type !== "REDO") {
36529
- for (const chartId in this.charts) {
36530
- this.history.update("charts", chartId, undefined);
36531
- }
36531
+ for (const chartId in this.charts) {
36532
+ this.charts[chartId] = undefined;
36532
36533
  }
36533
36534
  }
36534
36535
  switch (cmd.type) {
36535
36536
  case "UPDATE_CHART":
36536
36537
  case "CREATE_CHART":
36537
36538
  case "DELETE_FIGURE":
36538
- this.history.update("charts", cmd.id, undefined);
36539
+ this.charts[cmd.id] = undefined;
36539
36540
  break;
36540
36541
  case "DELETE_SHEET":
36541
36542
  for (let chartId in this.charts) {
36542
36543
  if (!this.getters.isChartDefined(chartId)) {
36543
- this.history.update("charts", chartId, undefined);
36544
+ this.charts[chartId] = undefined;
36544
36545
  }
36545
36546
  }
36546
36547
  break;
@@ -36552,7 +36553,7 @@
36552
36553
  if (!chart) {
36553
36554
  throw new Error(`No chart for the given id: ${figureId}`);
36554
36555
  }
36555
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36556
+ this.charts[figureId] = this.createRuntimeChart(chart);
36556
36557
  }
36557
36558
  return this.charts[figureId];
36558
36559
  }
@@ -43016,6 +43017,8 @@
43016
43017
  case "EVALUATE_CELLS":
43017
43018
  case "ACTIVATE_SHEET":
43018
43019
  case "REMOVE_FILTER_TABLE":
43020
+ case "ADD_COLUMNS_ROWS":
43021
+ case "REMOVE_COLUMNS_ROWS":
43019
43022
  this.isEvaluationDirty = true;
43020
43023
  break;
43021
43024
  case "START":
@@ -50774,9 +50777,9 @@
50774
50777
  Object.defineProperty(exports, '__esModule', { value: true });
50775
50778
 
50776
50779
 
50777
- __info__.version = '16.4.12';
50778
- __info__.date = '2023-11-02T09:32:52.766Z';
50779
- __info__.hash = '7fdc589';
50780
+ __info__.version = '16.4.14';
50781
+ __info__.date = '2023-11-16T11:59:51.900Z';
50782
+ __info__.hash = '66c6f47';
50780
50783
 
50781
50784
 
50782
50785
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);