@odoo/o-spreadsheet 16.2.10 → 16.2.12

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.
@@ -109,7 +109,7 @@ const SELECTION_BORDER_COLOR = "#3266ca";
109
109
  const HEADER_BORDER_COLOR = "#C0C0C0";
110
110
  const CELL_BORDER_COLOR = "#E2E3E3";
111
111
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
112
- const MENU_ITEM_DISABLED_COLOR = "#CACACA";
112
+ const DISABLED_TEXT_COLOR = "#CACACA";
113
113
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
114
114
  const LINK_COLOR = "#01666b";
115
115
  const FILTERS_COLOR = "#188038";
@@ -4104,7 +4104,6 @@ const readonlyAllowedCommands = new Set([
4104
4104
  "SET_VIEWPORT_OFFSET",
4105
4105
  "SELECT_SEARCH_NEXT_MATCH",
4106
4106
  "SELECT_SEARCH_PREVIOUS_MATCH",
4107
- "REFRESH_SEARCH",
4108
4107
  "UPDATE_SEARCH",
4109
4108
  "CLEAR_SEARCH",
4110
4109
  "EVALUATE_CELLS",
@@ -5423,7 +5422,7 @@ css /* scss */ `
5423
5422
  }
5424
5423
  }
5425
5424
  &.disabled {
5426
- color: ${MENU_ITEM_DISABLED_COLOR};
5425
+ color: ${DISABLED_TEXT_COLOR};
5427
5426
  cursor: not-allowed;
5428
5427
  }
5429
5428
  }
@@ -18685,11 +18684,16 @@ class FindAndReplacePanel extends owl.Component {
18685
18684
  }
18686
18685
  setup() {
18687
18686
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
18687
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
18688
18688
  owl.onMounted(() => this.focusInput());
18689
18689
  owl.onWillUnmount(() => {
18690
18690
  this.env.model.dispatch("CLEAR_SEARCH");
18691
18691
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
18692
18692
  });
18693
+ owl.useEffect(() => {
18694
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
18695
+ this.searchFormulas();
18696
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
18693
18697
  }
18694
18698
  onInput(ev) {
18695
18699
  this.state.toSearch = ev.target.value;
@@ -18709,10 +18713,6 @@ class FindAndReplacePanel extends owl.Component {
18709
18713
  this.replace();
18710
18714
  }
18711
18715
  }
18712
- onFocusSidePanel() {
18713
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
18714
- this.env.model.dispatch("REFRESH_SEARCH");
18715
- }
18716
18716
  searchFormulas() {
18717
18717
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
18718
18718
  show: this.state.searchOptions.searchFormulas,
@@ -18731,13 +18731,6 @@ class FindAndReplacePanel extends owl.Component {
18731
18731
  searchOptions: this.state.searchOptions,
18732
18732
  });
18733
18733
  }
18734
- debouncedUpdateSearch() {
18735
- clearTimeout(this.debounceTimeoutId);
18736
- this.debounceTimeoutId = setTimeout(() => {
18737
- this.updateSearch();
18738
- this.debounceTimeoutId = undefined;
18739
- }, 400);
18740
- }
18741
18734
  replace() {
18742
18735
  this.env.model.dispatch("REPLACE_SEARCH", {
18743
18736
  replaceWith: this.state.replaceWith,
@@ -20723,6 +20716,14 @@ class FiguresContainer extends owl.Component {
20723
20716
  if (dirY < 0) {
20724
20717
  this.dnd.y = dndInitialY + figure.height * fraction;
20725
20718
  }
20719
+ if (this.dnd.x < 0) {
20720
+ this.dnd.width += this.dnd.x;
20721
+ this.dnd.x = 0;
20722
+ }
20723
+ if (this.dnd.y < 0) {
20724
+ this.dnd.height += this.dnd.y;
20725
+ this.dnd.y = 0;
20726
+ }
20726
20727
  };
20727
20728
  }
20728
20729
  else {
@@ -20738,6 +20739,14 @@ class FiguresContainer extends owl.Component {
20738
20739
  if (dirY < 0) {
20739
20740
  this.dnd.y = dndInitialY - deltaY;
20740
20741
  }
20742
+ if (this.dnd.x < 0) {
20743
+ this.dnd.width += this.dnd.x;
20744
+ this.dnd.x = 0;
20745
+ }
20746
+ if (this.dnd.y < 0) {
20747
+ this.dnd.height += this.dnd.y;
20748
+ this.dnd.y = 0;
20749
+ }
20741
20750
  };
20742
20751
  }
20743
20752
  const onMouseUp = (ev) => {
@@ -29351,7 +29360,7 @@ class HeaderSizePlugin extends CorePlugin {
29351
29360
  this.sizes = {};
29352
29361
  }
29353
29362
  handle(cmd) {
29354
- var _a, _b, _c;
29363
+ var _a, _b;
29355
29364
  switch (cmd.type) {
29356
29365
  case "CREATE_SHEET": {
29357
29366
  const computedSizes = this.computeSheetSizes(cmd.sheetId);
@@ -29439,7 +29448,8 @@ class HeaderSizePlugin extends CorePlugin {
29439
29448
  }
29440
29449
  break;
29441
29450
  case "UPDATE_CELL":
29442
- if (!((_c = (_b = (_a = this.sizes[cmd.sheetId]) === null || _a === void 0 ? void 0 : _a["ROW"]) === null || _b === void 0 ? void 0 : _b[cmd.row]) === null || _c === void 0 ? void 0 : _c.manualSize)) {
29451
+ const row = (_b = (_a = this.sizes[cmd.sheetId]) === null || _a === void 0 ? void 0 : _a["ROW"]) === null || _b === void 0 ? void 0 : _b[cmd.row];
29452
+ if (row && !row.manualSize) {
29443
29453
  const { sheetId, row } = cmd;
29444
29454
  this.history.update("sizes", sheetId, "ROW", row, "computedSize", lazy(() => this.getRowTallestCellSize(sheetId, row)));
29445
29455
  }
@@ -34489,6 +34499,7 @@ class FindAndReplacePlugin extends UIPlugin {
34489
34499
  searchFormulas: false,
34490
34500
  };
34491
34501
  this.toSearch = "";
34502
+ this.isSearchDirty = false;
34492
34503
  }
34493
34504
  // ---------------------------------------------------------------------------
34494
34505
  // Command Handling
@@ -34513,18 +34524,33 @@ class FindAndReplacePlugin extends UIPlugin {
34513
34524
  case "REPLACE_ALL_SEARCH":
34514
34525
  this.replaceAll(cmd.replaceWith);
34515
34526
  break;
34527
+ case "EVALUATE_CELLS":
34528
+ case "UPDATE_CELL":
34529
+ case "REMOVE_FILTER_TABLE":
34530
+ case "UPDATE_FILTER":
34531
+ this.isSearchDirty = true;
34532
+ break;
34516
34533
  case "UNDO":
34517
34534
  case "REDO":
34518
34535
  case "REMOVE_COLUMNS_ROWS":
34536
+ case "HIDE_COLUMNS_ROWS":
34537
+ case "UNHIDE_COLUMNS_ROWS":
34519
34538
  case "ADD_COLUMNS_ROWS":
34520
- this.clearSearch();
34539
+ case "EVALUATE_CELLS":
34540
+ case "UPDATE_CELL":
34541
+ this.isSearchDirty = true;
34521
34542
  break;
34522
34543
  case "ACTIVATE_SHEET":
34523
- case "REFRESH_SEARCH":
34524
34544
  this.refreshSearch();
34525
34545
  break;
34526
34546
  }
34527
34547
  }
34548
+ finalize() {
34549
+ if (this.isSearchDirty) {
34550
+ this.refreshSearch();
34551
+ this.isSearchDirty = false;
34552
+ }
34553
+ }
34528
34554
  // ---------------------------------------------------------------------------
34529
34555
  // Getters
34530
34556
  // ---------------------------------------------------------------------------
@@ -34580,6 +34606,11 @@ class FindAndReplacePlugin extends UIPlugin {
34580
34606
  if (this.toSearch) {
34581
34607
  for (const cell of Object.values(cells)) {
34582
34608
  const { col, row } = this.getters.getCellPosition(cell.id);
34609
+ const isColHidden = this.getters.isColHidden(sheetId, col);
34610
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
34611
+ if (isColHidden || isRowHidden) {
34612
+ continue;
34613
+ }
34583
34614
  if (cell &&
34584
34615
  this.currentSearchRegex &&
34585
34616
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -34639,37 +34670,31 @@ class FindAndReplacePlugin extends UIPlugin {
34639
34670
  // ---------------------------------------------------------------------------
34640
34671
  // Replace
34641
34672
  // ---------------------------------------------------------------------------
34642
- /**
34643
- * Replace the value of the currently selected match
34644
- */
34645
- replace(replaceWith) {
34646
- if (this.selectedMatchIndex === null || !this.currentSearchRegex) {
34673
+ replaceMatch(selectedMatch, replaceWith) {
34674
+ if (!this.currentSearchRegex) {
34647
34675
  return;
34648
34676
  }
34649
- const matches = this.searchMatches;
34650
- const selectedMatch = matches[this.selectedMatchIndex];
34651
34677
  const sheetId = this.getters.getActiveSheetId();
34652
34678
  const cell = this.getters.getCell({ sheetId, ...selectedMatch });
34679
+ const { col, row } = selectedMatch;
34653
34680
  if ((cell === null || cell === void 0 ? void 0 : cell.isFormula) && !this.searchOptions.searchFormulas) {
34654
- this.selectNextCell(Direction.next);
34681
+ return;
34655
34682
  }
34656
- else {
34657
- const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
34658
- const toReplace = this.getSearchableString({
34659
- sheetId,
34660
- col: selectedMatch.col,
34661
- row: selectedMatch.row,
34662
- });
34663
- const newContent = toReplace.replace(replaceRegex, replaceWith);
34664
- this.dispatch("UPDATE_CELL", {
34665
- sheetId: this.getters.getActiveSheetId(),
34666
- col: selectedMatch.col,
34667
- row: selectedMatch.row,
34668
- content: newContent,
34669
- });
34670
- this.searchMatches.splice(this.selectedMatchIndex, 1);
34671
- this.selectNextCell(Direction.current);
34683
+ const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
34684
+ const toReplace = this.getSearchableString({ sheetId, col, row });
34685
+ const content = toReplace.replace(replaceRegex, replaceWith);
34686
+ this.dispatch("UPDATE_CELL", { sheetId, col, row, content });
34687
+ }
34688
+ /**
34689
+ * Replace the value of the currently selected match
34690
+ */
34691
+ replace(replaceWith) {
34692
+ if (this.selectedMatchIndex === null) {
34693
+ return;
34672
34694
  }
34695
+ const selectedMatch = this.searchMatches[this.selectedMatchIndex];
34696
+ this.replaceMatch(selectedMatch, replaceWith);
34697
+ this.selectNextCell(Direction.next);
34673
34698
  }
34674
34699
  /**
34675
34700
  * Apply the replace function to all the matches one time.
@@ -34677,7 +34702,7 @@ class FindAndReplacePlugin extends UIPlugin {
34677
34702
  replaceAll(replaceWith) {
34678
34703
  const matchCount = this.searchMatches.length;
34679
34704
  for (let i = 0; i < matchCount; i++) {
34680
- this.replace(replaceWith);
34705
+ this.replaceMatch(this.searchMatches[i], replaceWith);
34681
34706
  }
34682
34707
  }
34683
34708
  getSearchableString(position) {
@@ -37018,10 +37043,8 @@ class SortPlugin extends UIPlugin {
37018
37043
  }
37019
37044
  updateCellCommands.push(newCellValues);
37020
37045
  }
37021
- for (const cmd of updateCellCommands) {
37022
- this.dispatch("UPDATE_CELL", cmd);
37023
- }
37024
37046
  }
37047
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37025
37048
  }
37026
37049
  /**
37027
37050
  * Return the distances between main merge cells in the zone.
@@ -40720,6 +40743,11 @@ css /* scss */ `
40720
40743
  .o-sidePanelButton:enabled {
40721
40744
  cursor: pointer;
40722
40745
  }
40746
+
40747
+ .o-sidePanelButton:disabled {
40748
+ color: ${DISABLED_TEXT_COLOR};
40749
+ }
40750
+
40723
40751
  .o-sidePanelButton:last-child {
40724
40752
  margin-right: 0px;
40725
40753
  }
@@ -45379,6 +45407,6 @@ exports.setTranslationMethod = setTranslationMethod;
45379
45407
  exports.tokenize = tokenize;
45380
45408
 
45381
45409
 
45382
- __info__.version = '16.2.10';
45383
- __info__.date = '2023-06-26T14:33:27.213Z';
45384
- __info__.hash = '1d3f47c';
45410
+ __info__.version = '16.2.12';
45411
+ __info__.date = '2023-08-07T09:01:10.621Z';
45412
+ __info__.hash = '6d1a538';
@@ -1212,7 +1212,9 @@ declare class FindAndReplacePlugin extends UIPlugin {
1212
1212
  private currentSearchRegex;
1213
1213
  private searchOptions;
1214
1214
  private toSearch;
1215
+ private isSearchDirty;
1215
1216
  handle(cmd: Command): void;
1217
+ finalize(): void;
1216
1218
  getSearchMatches(): SearchMatch[];
1217
1219
  getCurrentSelectedMatchIndex(): number | null;
1218
1220
  /**
@@ -1244,6 +1246,7 @@ declare class FindAndReplacePlugin extends UIPlugin {
1244
1246
  */
1245
1247
  private selectNextCell;
1246
1248
  private clearSearch;
1249
+ private replaceMatch;
1247
1250
  /**
1248
1251
  * Replace the value of the currently selected match
1249
1252
  */
@@ -1471,8 +1474,8 @@ interface PositionDependentCommand {
1471
1474
  col: number;
1472
1475
  row: number;
1473
1476
  }
1474
- declare const invalidateEvaluationCommands: Set<"UPDATE_CELL" | "UPDATE_CELL_POSITION" | "CLEAR_CELL" | "DELETE_CONTENT" | "ADD_COLUMNS_ROWS" | "REMOVE_COLUMNS_ROWS" | "RESIZE_COLUMNS_ROWS" | "HIDE_COLUMNS_ROWS" | "UNHIDE_COLUMNS_ROWS" | "SET_GRID_LINES_VISIBILITY" | "FREEZE_COLUMNS" | "FREEZE_ROWS" | "UNFREEZE_COLUMNS_ROWS" | "UNFREEZE_COLUMNS" | "UNFREEZE_ROWS" | "ADD_MERGE" | "REMOVE_MERGE" | "CREATE_SHEET" | "DELETE_SHEET" | "DUPLICATE_SHEET" | "MOVE_SHEET" | "RENAME_SHEET" | "HIDE_SHEET" | "SHOW_SHEET" | "MOVE_RANGES" | "ADD_CONDITIONAL_FORMAT" | "REMOVE_CONDITIONAL_FORMAT" | "MOVE_CONDITIONAL_FORMAT" | "CREATE_FIGURE" | "DELETE_FIGURE" | "UPDATE_FIGURE" | "SET_FORMATTING" | "CLEAR_FORMATTING" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "PASTE_CONDITIONAL_FORMAT" | "AUTORESIZE_COLUMNS" | "AUTORESIZE_ROWS" | "MOVE_COLUMNS_ROWS" | "ACTIVATE_SHEET" | "PREPARE_SELECTION_INPUT_EXPANSION" | "STOP_SELECTION_INPUT" | "EVALUATE_CELLS" | "CHANGE_HIGHLIGHT" | "START_CHANGE_HIGHLIGHT" | "SET_HIGHLIGHT_COLOR" | "STOP_COMPOSER_RANGE_SELECTION" | "START_EDITION" | "STOP_EDITION" | "SET_CURRENT_CONTENT" | "CHANGE_COMPOSER_CURSOR_SELECTION" | "REPLACE_COMPOSER_CURSOR_SELECTION" | "CYCLE_EDITION_REFERENCES" | "START" | "AUTOFILL" | "AUTOFILL_SELECT" | "SET_FORMULA_VISIBILITY" | "AUTOFILL_AUTO" | "SELECT_FIGURE" | "UPDATE_SEARCH" | "REFRESH_SEARCH" | "CLEAR_SEARCH" | "SELECT_SEARCH_PREVIOUS_MATCH" | "SELECT_SEARCH_NEXT_MATCH" | "REPLACE_SEARCH" | "REPLACE_ALL_SEARCH" | "SORT_CELLS" | "SET_DECIMAL" | "RESIZE_SHEETVIEW" | "SUM_SELECTION" | "DELETE_CELL" | "INSERT_CELL" | "SET_VIEWPORT_OFFSET" | "SHIFT_VIEWPORT_DOWN" | "SHIFT_VIEWPORT_UP" | "OPEN_CELL_POPOVER" | "CLOSE_CELL_POPOVER" | "ACTIVATE_NEXT_SHEET" | "ACTIVATE_PREVIOUS_SHEET" | "UPDATE_FILTER">;
1475
- declare const readonlyAllowedCommands: Set<"UPDATE_CELL" | "UPDATE_CELL_POSITION" | "CLEAR_CELL" | "DELETE_CONTENT" | "ADD_COLUMNS_ROWS" | "REMOVE_COLUMNS_ROWS" | "RESIZE_COLUMNS_ROWS" | "HIDE_COLUMNS_ROWS" | "UNHIDE_COLUMNS_ROWS" | "SET_GRID_LINES_VISIBILITY" | "FREEZE_COLUMNS" | "FREEZE_ROWS" | "UNFREEZE_COLUMNS_ROWS" | "UNFREEZE_COLUMNS" | "UNFREEZE_ROWS" | "ADD_MERGE" | "REMOVE_MERGE" | "CREATE_SHEET" | "DELETE_SHEET" | "DUPLICATE_SHEET" | "MOVE_SHEET" | "RENAME_SHEET" | "HIDE_SHEET" | "SHOW_SHEET" | "MOVE_RANGES" | "ADD_CONDITIONAL_FORMAT" | "REMOVE_CONDITIONAL_FORMAT" | "MOVE_CONDITIONAL_FORMAT" | "CREATE_FIGURE" | "DELETE_FIGURE" | "UPDATE_FIGURE" | "SET_FORMATTING" | "CLEAR_FORMATTING" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "PASTE_CONDITIONAL_FORMAT" | "AUTORESIZE_COLUMNS" | "AUTORESIZE_ROWS" | "MOVE_COLUMNS_ROWS" | "ACTIVATE_SHEET" | "PREPARE_SELECTION_INPUT_EXPANSION" | "STOP_SELECTION_INPUT" | "EVALUATE_CELLS" | "CHANGE_HIGHLIGHT" | "START_CHANGE_HIGHLIGHT" | "SET_HIGHLIGHT_COLOR" | "STOP_COMPOSER_RANGE_SELECTION" | "START_EDITION" | "STOP_EDITION" | "SET_CURRENT_CONTENT" | "CHANGE_COMPOSER_CURSOR_SELECTION" | "REPLACE_COMPOSER_CURSOR_SELECTION" | "CYCLE_EDITION_REFERENCES" | "START" | "AUTOFILL" | "AUTOFILL_SELECT" | "SET_FORMULA_VISIBILITY" | "AUTOFILL_AUTO" | "SELECT_FIGURE" | "UPDATE_SEARCH" | "REFRESH_SEARCH" | "CLEAR_SEARCH" | "SELECT_SEARCH_PREVIOUS_MATCH" | "SELECT_SEARCH_NEXT_MATCH" | "REPLACE_SEARCH" | "REPLACE_ALL_SEARCH" | "SORT_CELLS" | "SET_DECIMAL" | "RESIZE_SHEETVIEW" | "SUM_SELECTION" | "DELETE_CELL" | "INSERT_CELL" | "SET_VIEWPORT_OFFSET" | "SHIFT_VIEWPORT_DOWN" | "SHIFT_VIEWPORT_UP" | "OPEN_CELL_POPOVER" | "CLOSE_CELL_POPOVER" | "ACTIVATE_NEXT_SHEET" | "ACTIVATE_PREVIOUS_SHEET" | "UPDATE_FILTER">;
1477
+ declare const invalidateEvaluationCommands: Set<"UPDATE_CELL" | "UPDATE_CELL_POSITION" | "CLEAR_CELL" | "DELETE_CONTENT" | "ADD_COLUMNS_ROWS" | "REMOVE_COLUMNS_ROWS" | "RESIZE_COLUMNS_ROWS" | "HIDE_COLUMNS_ROWS" | "UNHIDE_COLUMNS_ROWS" | "SET_GRID_LINES_VISIBILITY" | "FREEZE_COLUMNS" | "FREEZE_ROWS" | "UNFREEZE_COLUMNS_ROWS" | "UNFREEZE_COLUMNS" | "UNFREEZE_ROWS" | "ADD_MERGE" | "REMOVE_MERGE" | "CREATE_SHEET" | "DELETE_SHEET" | "DUPLICATE_SHEET" | "MOVE_SHEET" | "RENAME_SHEET" | "HIDE_SHEET" | "SHOW_SHEET" | "MOVE_RANGES" | "ADD_CONDITIONAL_FORMAT" | "REMOVE_CONDITIONAL_FORMAT" | "MOVE_CONDITIONAL_FORMAT" | "CREATE_FIGURE" | "DELETE_FIGURE" | "UPDATE_FIGURE" | "SET_FORMATTING" | "CLEAR_FORMATTING" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "PASTE_CONDITIONAL_FORMAT" | "AUTORESIZE_COLUMNS" | "AUTORESIZE_ROWS" | "MOVE_COLUMNS_ROWS" | "ACTIVATE_SHEET" | "PREPARE_SELECTION_INPUT_EXPANSION" | "STOP_SELECTION_INPUT" | "EVALUATE_CELLS" | "CHANGE_HIGHLIGHT" | "START_CHANGE_HIGHLIGHT" | "SET_HIGHLIGHT_COLOR" | "STOP_COMPOSER_RANGE_SELECTION" | "START_EDITION" | "STOP_EDITION" | "SET_CURRENT_CONTENT" | "CHANGE_COMPOSER_CURSOR_SELECTION" | "REPLACE_COMPOSER_CURSOR_SELECTION" | "CYCLE_EDITION_REFERENCES" | "START" | "AUTOFILL" | "AUTOFILL_SELECT" | "SET_FORMULA_VISIBILITY" | "AUTOFILL_AUTO" | "SELECT_FIGURE" | "UPDATE_SEARCH" | "CLEAR_SEARCH" | "SELECT_SEARCH_PREVIOUS_MATCH" | "SELECT_SEARCH_NEXT_MATCH" | "REPLACE_SEARCH" | "REPLACE_ALL_SEARCH" | "SORT_CELLS" | "SET_DECIMAL" | "RESIZE_SHEETVIEW" | "SUM_SELECTION" | "DELETE_CELL" | "INSERT_CELL" | "SET_VIEWPORT_OFFSET" | "SHIFT_VIEWPORT_DOWN" | "SHIFT_VIEWPORT_UP" | "OPEN_CELL_POPOVER" | "CLOSE_CELL_POPOVER" | "ACTIVATE_NEXT_SHEET" | "ACTIVATE_PREVIOUS_SHEET" | "UPDATE_FILTER">;
1478
+ declare const readonlyAllowedCommands: Set<"UPDATE_CELL" | "UPDATE_CELL_POSITION" | "CLEAR_CELL" | "DELETE_CONTENT" | "ADD_COLUMNS_ROWS" | "REMOVE_COLUMNS_ROWS" | "RESIZE_COLUMNS_ROWS" | "HIDE_COLUMNS_ROWS" | "UNHIDE_COLUMNS_ROWS" | "SET_GRID_LINES_VISIBILITY" | "FREEZE_COLUMNS" | "FREEZE_ROWS" | "UNFREEZE_COLUMNS_ROWS" | "UNFREEZE_COLUMNS" | "UNFREEZE_ROWS" | "ADD_MERGE" | "REMOVE_MERGE" | "CREATE_SHEET" | "DELETE_SHEET" | "DUPLICATE_SHEET" | "MOVE_SHEET" | "RENAME_SHEET" | "HIDE_SHEET" | "SHOW_SHEET" | "MOVE_RANGES" | "ADD_CONDITIONAL_FORMAT" | "REMOVE_CONDITIONAL_FORMAT" | "MOVE_CONDITIONAL_FORMAT" | "CREATE_FIGURE" | "DELETE_FIGURE" | "UPDATE_FIGURE" | "SET_FORMATTING" | "CLEAR_FORMATTING" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "PASTE_CONDITIONAL_FORMAT" | "AUTORESIZE_COLUMNS" | "AUTORESIZE_ROWS" | "MOVE_COLUMNS_ROWS" | "ACTIVATE_SHEET" | "PREPARE_SELECTION_INPUT_EXPANSION" | "STOP_SELECTION_INPUT" | "EVALUATE_CELLS" | "CHANGE_HIGHLIGHT" | "START_CHANGE_HIGHLIGHT" | "SET_HIGHLIGHT_COLOR" | "STOP_COMPOSER_RANGE_SELECTION" | "START_EDITION" | "STOP_EDITION" | "SET_CURRENT_CONTENT" | "CHANGE_COMPOSER_CURSOR_SELECTION" | "REPLACE_COMPOSER_CURSOR_SELECTION" | "CYCLE_EDITION_REFERENCES" | "START" | "AUTOFILL" | "AUTOFILL_SELECT" | "SET_FORMULA_VISIBILITY" | "AUTOFILL_AUTO" | "SELECT_FIGURE" | "UPDATE_SEARCH" | "CLEAR_SEARCH" | "SELECT_SEARCH_PREVIOUS_MATCH" | "SELECT_SEARCH_NEXT_MATCH" | "REPLACE_SEARCH" | "REPLACE_ALL_SEARCH" | "SORT_CELLS" | "SET_DECIMAL" | "RESIZE_SHEETVIEW" | "SUM_SELECTION" | "DELETE_CELL" | "INSERT_CELL" | "SET_VIEWPORT_OFFSET" | "SHIFT_VIEWPORT_DOWN" | "SHIFT_VIEWPORT_UP" | "OPEN_CELL_POPOVER" | "CLOSE_CELL_POPOVER" | "ACTIVATE_NEXT_SHEET" | "ACTIVATE_PREVIOUS_SHEET" | "UPDATE_FILTER">;
1476
1479
  declare const coreTypes: Set<"UPDATE_CELL" | "UPDATE_CELL_POSITION" | "CLEAR_CELL" | "DELETE_CONTENT" | "ADD_COLUMNS_ROWS" | "REMOVE_COLUMNS_ROWS" | "RESIZE_COLUMNS_ROWS" | "HIDE_COLUMNS_ROWS" | "UNHIDE_COLUMNS_ROWS" | "SET_GRID_LINES_VISIBILITY" | "FREEZE_COLUMNS" | "FREEZE_ROWS" | "UNFREEZE_COLUMNS_ROWS" | "UNFREEZE_COLUMNS" | "UNFREEZE_ROWS" | "ADD_MERGE" | "REMOVE_MERGE" | "CREATE_SHEET" | "DELETE_SHEET" | "DUPLICATE_SHEET" | "MOVE_SHEET" | "RENAME_SHEET" | "HIDE_SHEET" | "SHOW_SHEET" | "MOVE_RANGES" | "ADD_CONDITIONAL_FORMAT" | "REMOVE_CONDITIONAL_FORMAT" | "MOVE_CONDITIONAL_FORMAT" | "CREATE_FIGURE" | "DELETE_FIGURE" | "UPDATE_FIGURE" | "SET_FORMATTING" | "CLEAR_FORMATTING" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE">;
1477
1480
  interface UpdateCellCommand extends PositionDependentCommand {
1478
1481
  type: "UPDATE_CELL";
@@ -1917,9 +1920,6 @@ interface UpdateSearchCommand {
1917
1920
  interface ClearSearchCommand {
1918
1921
  type: "CLEAR_SEARCH";
1919
1922
  }
1920
- interface RefreshSearchCommand {
1921
- type: "REFRESH_SEARCH";
1922
- }
1923
1923
  interface SelectSearchPreviousCommand {
1924
1924
  type: "SELECT_SEARCH_PREVIOUS_MATCH";
1925
1925
  }
@@ -2029,7 +2029,7 @@ UpdateCellCommand | UpdateCellPositionCommand | ClearCellCommand | DeleteContent
2029
2029
  | CreateImageOverCommand
2030
2030
  /** FILTERS */
2031
2031
  | CreateFilterTableCommand | RemoveFilterTableCommand;
2032
- type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | CleanClipBoardHighlightCommand | AutoFillCellCommand | PasteFromOSClipboardCommand | ActivatePaintFormatCommand | PasteCFCommand | AutoresizeColumnsCommand | AutoresizeRowsCommand | MoveColumnsRowsCommand | ActivateSheetCommand | PrepareExpansionCommand | StopSelectionCommand | EvaluateCellsCommand | ChangeHighlightCommand | StartChangeHighlightCommand | SetColorCommand | StopComposerSelectionCommand | StartEditionCommand | StopEditionCommand | SetCurrentContentCommand | ChangeComposerSelectionCommand | ReplaceComposerSelectionCommand | CycleEditionReferencesCommand | StartCommand | AutofillCommand | AutofillSelectCommand | ShowFormulaCommand | AutofillAutoCommand | SelectFigureCommand | UpdateSearchCommand | RefreshSearchCommand | ClearSearchCommand | SelectSearchPreviousCommand | SelectSearchNextCommand | ReplaceSearchCommand | ReplaceAllSearchCommand | SortCommand | SetDecimalCommand | ResizeViewportCommand | SumSelectionCommand | DeleteCellCommand | InsertCellCommand | SetViewportOffsetCommand | MoveViewportDownCommand | MoveViewportUpCommand | OpenCellPopoverCommand | CloseCellPopoverCommand | ActivateNextSheetCommand | ActivatePreviousSheetCommand | UpdateFilterCommand;
2032
+ type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | CleanClipBoardHighlightCommand | AutoFillCellCommand | PasteFromOSClipboardCommand | ActivatePaintFormatCommand | PasteCFCommand | AutoresizeColumnsCommand | AutoresizeRowsCommand | MoveColumnsRowsCommand | ActivateSheetCommand | PrepareExpansionCommand | StopSelectionCommand | EvaluateCellsCommand | ChangeHighlightCommand | StartChangeHighlightCommand | SetColorCommand | StopComposerSelectionCommand | StartEditionCommand | StopEditionCommand | SetCurrentContentCommand | ChangeComposerSelectionCommand | ReplaceComposerSelectionCommand | CycleEditionReferencesCommand | StartCommand | AutofillCommand | AutofillSelectCommand | ShowFormulaCommand | AutofillAutoCommand | SelectFigureCommand | UpdateSearchCommand | ClearSearchCommand | SelectSearchPreviousCommand | SelectSearchNextCommand | ReplaceSearchCommand | ReplaceAllSearchCommand | SortCommand | SetDecimalCommand | ResizeViewportCommand | SumSelectionCommand | DeleteCellCommand | InsertCellCommand | SetViewportOffsetCommand | MoveViewportDownCommand | MoveViewportUpCommand | OpenCellPopoverCommand | CloseCellPopoverCommand | ActivateNextSheetCommand | ActivatePreviousSheetCommand | UpdateFilterCommand;
2033
2033
  type Command = CoreCommand | LocalCommand;
2034
2034
  /**
2035
2035
  * Holds the result of a command dispatch.
@@ -105,7 +105,7 @@ const SELECTION_BORDER_COLOR = "#3266ca";
105
105
  const HEADER_BORDER_COLOR = "#C0C0C0";
106
106
  const CELL_BORDER_COLOR = "#E2E3E3";
107
107
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
108
- const MENU_ITEM_DISABLED_COLOR = "#CACACA";
108
+ const DISABLED_TEXT_COLOR = "#CACACA";
109
109
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
110
110
  const LINK_COLOR = "#01666b";
111
111
  const FILTERS_COLOR = "#188038";
@@ -4100,7 +4100,6 @@ const readonlyAllowedCommands = new Set([
4100
4100
  "SET_VIEWPORT_OFFSET",
4101
4101
  "SELECT_SEARCH_NEXT_MATCH",
4102
4102
  "SELECT_SEARCH_PREVIOUS_MATCH",
4103
- "REFRESH_SEARCH",
4104
4103
  "UPDATE_SEARCH",
4105
4104
  "CLEAR_SEARCH",
4106
4105
  "EVALUATE_CELLS",
@@ -5419,7 +5418,7 @@ css /* scss */ `
5419
5418
  }
5420
5419
  }
5421
5420
  &.disabled {
5422
- color: ${MENU_ITEM_DISABLED_COLOR};
5421
+ color: ${DISABLED_TEXT_COLOR};
5423
5422
  cursor: not-allowed;
5424
5423
  }
5425
5424
  }
@@ -18681,11 +18680,16 @@ class FindAndReplacePanel extends Component {
18681
18680
  }
18682
18681
  setup() {
18683
18682
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
18683
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
18684
18684
  onMounted(() => this.focusInput());
18685
18685
  onWillUnmount(() => {
18686
18686
  this.env.model.dispatch("CLEAR_SEARCH");
18687
18687
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
18688
18688
  });
18689
+ useEffect(() => {
18690
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
18691
+ this.searchFormulas();
18692
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
18689
18693
  }
18690
18694
  onInput(ev) {
18691
18695
  this.state.toSearch = ev.target.value;
@@ -18705,10 +18709,6 @@ class FindAndReplacePanel extends Component {
18705
18709
  this.replace();
18706
18710
  }
18707
18711
  }
18708
- onFocusSidePanel() {
18709
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
18710
- this.env.model.dispatch("REFRESH_SEARCH");
18711
- }
18712
18712
  searchFormulas() {
18713
18713
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
18714
18714
  show: this.state.searchOptions.searchFormulas,
@@ -18727,13 +18727,6 @@ class FindAndReplacePanel extends Component {
18727
18727
  searchOptions: this.state.searchOptions,
18728
18728
  });
18729
18729
  }
18730
- debouncedUpdateSearch() {
18731
- clearTimeout(this.debounceTimeoutId);
18732
- this.debounceTimeoutId = setTimeout(() => {
18733
- this.updateSearch();
18734
- this.debounceTimeoutId = undefined;
18735
- }, 400);
18736
- }
18737
18730
  replace() {
18738
18731
  this.env.model.dispatch("REPLACE_SEARCH", {
18739
18732
  replaceWith: this.state.replaceWith,
@@ -20719,6 +20712,14 @@ class FiguresContainer extends Component {
20719
20712
  if (dirY < 0) {
20720
20713
  this.dnd.y = dndInitialY + figure.height * fraction;
20721
20714
  }
20715
+ if (this.dnd.x < 0) {
20716
+ this.dnd.width += this.dnd.x;
20717
+ this.dnd.x = 0;
20718
+ }
20719
+ if (this.dnd.y < 0) {
20720
+ this.dnd.height += this.dnd.y;
20721
+ this.dnd.y = 0;
20722
+ }
20722
20723
  };
20723
20724
  }
20724
20725
  else {
@@ -20734,6 +20735,14 @@ class FiguresContainer extends Component {
20734
20735
  if (dirY < 0) {
20735
20736
  this.dnd.y = dndInitialY - deltaY;
20736
20737
  }
20738
+ if (this.dnd.x < 0) {
20739
+ this.dnd.width += this.dnd.x;
20740
+ this.dnd.x = 0;
20741
+ }
20742
+ if (this.dnd.y < 0) {
20743
+ this.dnd.height += this.dnd.y;
20744
+ this.dnd.y = 0;
20745
+ }
20737
20746
  };
20738
20747
  }
20739
20748
  const onMouseUp = (ev) => {
@@ -29347,7 +29356,7 @@ class HeaderSizePlugin extends CorePlugin {
29347
29356
  this.sizes = {};
29348
29357
  }
29349
29358
  handle(cmd) {
29350
- var _a, _b, _c;
29359
+ var _a, _b;
29351
29360
  switch (cmd.type) {
29352
29361
  case "CREATE_SHEET": {
29353
29362
  const computedSizes = this.computeSheetSizes(cmd.sheetId);
@@ -29435,7 +29444,8 @@ class HeaderSizePlugin extends CorePlugin {
29435
29444
  }
29436
29445
  break;
29437
29446
  case "UPDATE_CELL":
29438
- if (!((_c = (_b = (_a = this.sizes[cmd.sheetId]) === null || _a === void 0 ? void 0 : _a["ROW"]) === null || _b === void 0 ? void 0 : _b[cmd.row]) === null || _c === void 0 ? void 0 : _c.manualSize)) {
29447
+ const row = (_b = (_a = this.sizes[cmd.sheetId]) === null || _a === void 0 ? void 0 : _a["ROW"]) === null || _b === void 0 ? void 0 : _b[cmd.row];
29448
+ if (row && !row.manualSize) {
29439
29449
  const { sheetId, row } = cmd;
29440
29450
  this.history.update("sizes", sheetId, "ROW", row, "computedSize", lazy(() => this.getRowTallestCellSize(sheetId, row)));
29441
29451
  }
@@ -34485,6 +34495,7 @@ class FindAndReplacePlugin extends UIPlugin {
34485
34495
  searchFormulas: false,
34486
34496
  };
34487
34497
  this.toSearch = "";
34498
+ this.isSearchDirty = false;
34488
34499
  }
34489
34500
  // ---------------------------------------------------------------------------
34490
34501
  // Command Handling
@@ -34509,18 +34520,33 @@ class FindAndReplacePlugin extends UIPlugin {
34509
34520
  case "REPLACE_ALL_SEARCH":
34510
34521
  this.replaceAll(cmd.replaceWith);
34511
34522
  break;
34523
+ case "EVALUATE_CELLS":
34524
+ case "UPDATE_CELL":
34525
+ case "REMOVE_FILTER_TABLE":
34526
+ case "UPDATE_FILTER":
34527
+ this.isSearchDirty = true;
34528
+ break;
34512
34529
  case "UNDO":
34513
34530
  case "REDO":
34514
34531
  case "REMOVE_COLUMNS_ROWS":
34532
+ case "HIDE_COLUMNS_ROWS":
34533
+ case "UNHIDE_COLUMNS_ROWS":
34515
34534
  case "ADD_COLUMNS_ROWS":
34516
- this.clearSearch();
34535
+ case "EVALUATE_CELLS":
34536
+ case "UPDATE_CELL":
34537
+ this.isSearchDirty = true;
34517
34538
  break;
34518
34539
  case "ACTIVATE_SHEET":
34519
- case "REFRESH_SEARCH":
34520
34540
  this.refreshSearch();
34521
34541
  break;
34522
34542
  }
34523
34543
  }
34544
+ finalize() {
34545
+ if (this.isSearchDirty) {
34546
+ this.refreshSearch();
34547
+ this.isSearchDirty = false;
34548
+ }
34549
+ }
34524
34550
  // ---------------------------------------------------------------------------
34525
34551
  // Getters
34526
34552
  // ---------------------------------------------------------------------------
@@ -34576,6 +34602,11 @@ class FindAndReplacePlugin extends UIPlugin {
34576
34602
  if (this.toSearch) {
34577
34603
  for (const cell of Object.values(cells)) {
34578
34604
  const { col, row } = this.getters.getCellPosition(cell.id);
34605
+ const isColHidden = this.getters.isColHidden(sheetId, col);
34606
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
34607
+ if (isColHidden || isRowHidden) {
34608
+ continue;
34609
+ }
34579
34610
  if (cell &&
34580
34611
  this.currentSearchRegex &&
34581
34612
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -34635,37 +34666,31 @@ class FindAndReplacePlugin extends UIPlugin {
34635
34666
  // ---------------------------------------------------------------------------
34636
34667
  // Replace
34637
34668
  // ---------------------------------------------------------------------------
34638
- /**
34639
- * Replace the value of the currently selected match
34640
- */
34641
- replace(replaceWith) {
34642
- if (this.selectedMatchIndex === null || !this.currentSearchRegex) {
34669
+ replaceMatch(selectedMatch, replaceWith) {
34670
+ if (!this.currentSearchRegex) {
34643
34671
  return;
34644
34672
  }
34645
- const matches = this.searchMatches;
34646
- const selectedMatch = matches[this.selectedMatchIndex];
34647
34673
  const sheetId = this.getters.getActiveSheetId();
34648
34674
  const cell = this.getters.getCell({ sheetId, ...selectedMatch });
34675
+ const { col, row } = selectedMatch;
34649
34676
  if ((cell === null || cell === void 0 ? void 0 : cell.isFormula) && !this.searchOptions.searchFormulas) {
34650
- this.selectNextCell(Direction.next);
34677
+ return;
34651
34678
  }
34652
- else {
34653
- const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
34654
- const toReplace = this.getSearchableString({
34655
- sheetId,
34656
- col: selectedMatch.col,
34657
- row: selectedMatch.row,
34658
- });
34659
- const newContent = toReplace.replace(replaceRegex, replaceWith);
34660
- this.dispatch("UPDATE_CELL", {
34661
- sheetId: this.getters.getActiveSheetId(),
34662
- col: selectedMatch.col,
34663
- row: selectedMatch.row,
34664
- content: newContent,
34665
- });
34666
- this.searchMatches.splice(this.selectedMatchIndex, 1);
34667
- this.selectNextCell(Direction.current);
34679
+ const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
34680
+ const toReplace = this.getSearchableString({ sheetId, col, row });
34681
+ const content = toReplace.replace(replaceRegex, replaceWith);
34682
+ this.dispatch("UPDATE_CELL", { sheetId, col, row, content });
34683
+ }
34684
+ /**
34685
+ * Replace the value of the currently selected match
34686
+ */
34687
+ replace(replaceWith) {
34688
+ if (this.selectedMatchIndex === null) {
34689
+ return;
34668
34690
  }
34691
+ const selectedMatch = this.searchMatches[this.selectedMatchIndex];
34692
+ this.replaceMatch(selectedMatch, replaceWith);
34693
+ this.selectNextCell(Direction.next);
34669
34694
  }
34670
34695
  /**
34671
34696
  * Apply the replace function to all the matches one time.
@@ -34673,7 +34698,7 @@ class FindAndReplacePlugin extends UIPlugin {
34673
34698
  replaceAll(replaceWith) {
34674
34699
  const matchCount = this.searchMatches.length;
34675
34700
  for (let i = 0; i < matchCount; i++) {
34676
- this.replace(replaceWith);
34701
+ this.replaceMatch(this.searchMatches[i], replaceWith);
34677
34702
  }
34678
34703
  }
34679
34704
  getSearchableString(position) {
@@ -37014,10 +37039,8 @@ class SortPlugin extends UIPlugin {
37014
37039
  }
37015
37040
  updateCellCommands.push(newCellValues);
37016
37041
  }
37017
- for (const cmd of updateCellCommands) {
37018
- this.dispatch("UPDATE_CELL", cmd);
37019
- }
37020
37042
  }
37043
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37021
37044
  }
37022
37045
  /**
37023
37046
  * Return the distances between main merge cells in the zone.
@@ -40716,6 +40739,11 @@ css /* scss */ `
40716
40739
  .o-sidePanelButton:enabled {
40717
40740
  cursor: pointer;
40718
40741
  }
40742
+
40743
+ .o-sidePanelButton:disabled {
40744
+ color: ${DISABLED_TEXT_COLOR};
40745
+ }
40746
+
40719
40747
  .o-sidePanelButton:last-child {
40720
40748
  margin-right: 0px;
40721
40749
  }
@@ -45347,6 +45375,6 @@ function addFunction(functionName, functionDescription) {
45347
45375
  export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, links, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
45348
45376
 
45349
45377
 
45350
- __info__.version = '16.2.10';
45351
- __info__.date = '2023-06-26T14:33:27.213Z';
45352
- __info__.hash = '1d3f47c';
45378
+ __info__.version = '16.2.12';
45379
+ __info__.date = '2023-08-07T09:01:10.621Z';
45380
+ __info__.hash = '6d1a538';