@odoo/o-spreadsheet 16.4.13 → 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] };
@@ -36525,22 +36531,20 @@ class EvaluationChartPlugin extends UIPlugin {
36525
36531
  invalidateCFEvaluationCommands.has(cmd.type) ||
36526
36532
  cmd.type === "EVALUATE_CELLS" ||
36527
36533
  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
- }
36534
+ for (const chartId in this.charts) {
36535
+ this.charts[chartId] = undefined;
36532
36536
  }
36533
36537
  }
36534
36538
  switch (cmd.type) {
36535
36539
  case "UPDATE_CHART":
36536
36540
  case "CREATE_CHART":
36537
36541
  case "DELETE_FIGURE":
36538
- this.history.update("charts", cmd.id, undefined);
36542
+ this.charts[cmd.id] = undefined;
36539
36543
  break;
36540
36544
  case "DELETE_SHEET":
36541
36545
  for (let chartId in this.charts) {
36542
36546
  if (!this.getters.isChartDefined(chartId)) {
36543
- this.history.update("charts", chartId, undefined);
36547
+ this.charts[chartId] = undefined;
36544
36548
  }
36545
36549
  }
36546
36550
  break;
@@ -36552,7 +36556,7 @@ class EvaluationChartPlugin extends UIPlugin {
36552
36556
  if (!chart) {
36553
36557
  throw new Error(`No chart for the given id: ${figureId}`);
36554
36558
  }
36555
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36559
+ this.charts[figureId] = this.createRuntimeChart(chart);
36556
36560
  }
36557
36561
  return this.charts[figureId];
36558
36562
  }
@@ -43016,6 +43020,8 @@ class FilterEvaluationPlugin extends UIPlugin {
43016
43020
  case "EVALUATE_CELLS":
43017
43021
  case "ACTIVATE_SHEET":
43018
43022
  case "REMOVE_FILTER_TABLE":
43023
+ case "ADD_COLUMNS_ROWS":
43024
+ case "REMOVE_COLUMNS_ROWS":
43019
43025
  this.isEvaluationDirty = true;
43020
43026
  break;
43021
43027
  case "START":
@@ -50772,6 +50778,6 @@ exports.setTranslationMethod = setTranslationMethod;
50772
50778
  exports.tokenize = tokenize;
50773
50779
 
50774
50780
 
50775
- __info__.version = '16.4.13';
50776
- __info__.date = '2023-11-03T12:21:08.124Z';
50777
- __info__.hash = '001985e';
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] };
@@ -36521,22 +36527,20 @@ class EvaluationChartPlugin extends UIPlugin {
36521
36527
  invalidateCFEvaluationCommands.has(cmd.type) ||
36522
36528
  cmd.type === "EVALUATE_CELLS" ||
36523
36529
  cmd.type === "UPDATE_CELL") {
36524
- if (cmd.type !== "UNDO" && cmd.type !== "REDO") {
36525
- for (const chartId in this.charts) {
36526
- this.history.update("charts", chartId, undefined);
36527
- }
36530
+ for (const chartId in this.charts) {
36531
+ this.charts[chartId] = undefined;
36528
36532
  }
36529
36533
  }
36530
36534
  switch (cmd.type) {
36531
36535
  case "UPDATE_CHART":
36532
36536
  case "CREATE_CHART":
36533
36537
  case "DELETE_FIGURE":
36534
- this.history.update("charts", cmd.id, undefined);
36538
+ this.charts[cmd.id] = undefined;
36535
36539
  break;
36536
36540
  case "DELETE_SHEET":
36537
36541
  for (let chartId in this.charts) {
36538
36542
  if (!this.getters.isChartDefined(chartId)) {
36539
- this.history.update("charts", chartId, undefined);
36543
+ this.charts[chartId] = undefined;
36540
36544
  }
36541
36545
  }
36542
36546
  break;
@@ -36548,7 +36552,7 @@ class EvaluationChartPlugin extends UIPlugin {
36548
36552
  if (!chart) {
36549
36553
  throw new Error(`No chart for the given id: ${figureId}`);
36550
36554
  }
36551
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36555
+ this.charts[figureId] = this.createRuntimeChart(chart);
36552
36556
  }
36553
36557
  return this.charts[figureId];
36554
36558
  }
@@ -43012,6 +43016,8 @@ class FilterEvaluationPlugin extends UIPlugin {
43012
43016
  case "EVALUATE_CELLS":
43013
43017
  case "ACTIVATE_SHEET":
43014
43018
  case "REMOVE_FILTER_TABLE":
43019
+ case "ADD_COLUMNS_ROWS":
43020
+ case "REMOVE_COLUMNS_ROWS":
43015
43021
  this.isEvaluationDirty = true;
43016
43022
  break;
43017
43023
  case "START":
@@ -50736,6 +50742,6 @@ const constants = {
50736
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 };
50737
50743
 
50738
50744
 
50739
- __info__.version = '16.4.13';
50740
- __info__.date = '2023-11-03T12:21:08.124Z';
50741
- __info__.hash = '001985e';
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] };
@@ -36522,22 +36528,20 @@
36522
36528
  invalidateCFEvaluationCommands.has(cmd.type) ||
36523
36529
  cmd.type === "EVALUATE_CELLS" ||
36524
36530
  cmd.type === "UPDATE_CELL") {
36525
- if (cmd.type !== "UNDO" && cmd.type !== "REDO") {
36526
- for (const chartId in this.charts) {
36527
- this.history.update("charts", chartId, undefined);
36528
- }
36531
+ for (const chartId in this.charts) {
36532
+ this.charts[chartId] = undefined;
36529
36533
  }
36530
36534
  }
36531
36535
  switch (cmd.type) {
36532
36536
  case "UPDATE_CHART":
36533
36537
  case "CREATE_CHART":
36534
36538
  case "DELETE_FIGURE":
36535
- this.history.update("charts", cmd.id, undefined);
36539
+ this.charts[cmd.id] = undefined;
36536
36540
  break;
36537
36541
  case "DELETE_SHEET":
36538
36542
  for (let chartId in this.charts) {
36539
36543
  if (!this.getters.isChartDefined(chartId)) {
36540
- this.history.update("charts", chartId, undefined);
36544
+ this.charts[chartId] = undefined;
36541
36545
  }
36542
36546
  }
36543
36547
  break;
@@ -36549,7 +36553,7 @@
36549
36553
  if (!chart) {
36550
36554
  throw new Error(`No chart for the given id: ${figureId}`);
36551
36555
  }
36552
- this.history.update("charts", figureId, this.createRuntimeChart(chart));
36556
+ this.charts[figureId] = this.createRuntimeChart(chart);
36553
36557
  }
36554
36558
  return this.charts[figureId];
36555
36559
  }
@@ -43013,6 +43017,8 @@
43013
43017
  case "EVALUATE_CELLS":
43014
43018
  case "ACTIVATE_SHEET":
43015
43019
  case "REMOVE_FILTER_TABLE":
43020
+ case "ADD_COLUMNS_ROWS":
43021
+ case "REMOVE_COLUMNS_ROWS":
43016
43022
  this.isEvaluationDirty = true;
43017
43023
  break;
43018
43024
  case "START":
@@ -50771,9 +50777,9 @@
50771
50777
  Object.defineProperty(exports, '__esModule', { value: true });
50772
50778
 
50773
50779
 
50774
- __info__.version = '16.4.13';
50775
- __info__.date = '2023-11-03T12:21:08.124Z';
50776
- __info__.hash = '001985e';
50780
+ __info__.version = '16.4.14';
50781
+ __info__.date = '2023-11-16T11:59:51.900Z';
50782
+ __info__.hash = '66c6f47';
50777
50783
 
50778
50784
 
50779
50785
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);