@odoo/o-spreadsheet 16.1.15 → 16.1.17

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";
@@ -3459,7 +3459,6 @@ const readonlyAllowedCommands = new Set([
3459
3459
  "SET_VIEWPORT_OFFSET",
3460
3460
  "SELECT_SEARCH_NEXT_MATCH",
3461
3461
  "SELECT_SEARCH_PREVIOUS_MATCH",
3462
- "REFRESH_SEARCH",
3463
3462
  "UPDATE_SEARCH",
3464
3463
  "CLEAR_SEARCH",
3465
3464
  "EVALUATE_CELLS",
@@ -5967,7 +5966,7 @@ css /* scss */ `
5967
5966
  }
5968
5967
  }
5969
5968
  &.disabled {
5970
- color: ${MENU_ITEM_DISABLED_COLOR};
5969
+ color: ${DISABLED_TEXT_COLOR};
5971
5970
  cursor: not-allowed;
5972
5971
  }
5973
5972
  }
@@ -21719,11 +21718,16 @@ class FindAndReplacePanel extends owl.Component {
21719
21718
  }
21720
21719
  setup() {
21721
21720
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
21721
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
21722
21722
  owl.onMounted(() => this.focusInput());
21723
21723
  owl.onWillUnmount(() => {
21724
21724
  this.env.model.dispatch("CLEAR_SEARCH");
21725
21725
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
21726
21726
  });
21727
+ owl.useEffect(() => {
21728
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21729
+ this.searchFormulas();
21730
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
21727
21731
  }
21728
21732
  onInput(ev) {
21729
21733
  this.state.toSearch = ev.target.value;
@@ -21743,10 +21747,6 @@ class FindAndReplacePanel extends owl.Component {
21743
21747
  this.replace();
21744
21748
  }
21745
21749
  }
21746
- onFocusSidePanel() {
21747
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21748
- this.env.model.dispatch("REFRESH_SEARCH");
21749
- }
21750
21750
  searchFormulas() {
21751
21751
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
21752
21752
  show: this.state.searchOptions.searchFormulas,
@@ -21765,13 +21765,6 @@ class FindAndReplacePanel extends owl.Component {
21765
21765
  searchOptions: this.state.searchOptions,
21766
21766
  });
21767
21767
  }
21768
- debouncedUpdateSearch() {
21769
- clearTimeout(this.debounceTimeoutId);
21770
- this.debounceTimeoutId = setTimeout(() => {
21771
- this.updateSearch();
21772
- this.debounceTimeoutId = undefined;
21773
- }, 400);
21774
- }
21775
21768
  replace() {
21776
21769
  this.env.model.dispatch("REPLACE_SEARCH", {
21777
21770
  replaceWith: this.state.replaceWith,
@@ -22275,6 +22268,14 @@ class FiguresContainer extends owl.Component {
22275
22268
  if (dirY < 0) {
22276
22269
  this.dnd.y = dndInitialY + figure.height * fraction;
22277
22270
  }
22271
+ if (this.dnd.x < 0) {
22272
+ this.dnd.width += this.dnd.x;
22273
+ this.dnd.x = 0;
22274
+ }
22275
+ if (this.dnd.y < 0) {
22276
+ this.dnd.height += this.dnd.y;
22277
+ this.dnd.y = 0;
22278
+ }
22278
22279
  };
22279
22280
  }
22280
22281
  else {
@@ -22290,6 +22291,14 @@ class FiguresContainer extends owl.Component {
22290
22291
  if (dirY < 0) {
22291
22292
  this.dnd.y = dndInitialY - deltaY;
22292
22293
  }
22294
+ if (this.dnd.x < 0) {
22295
+ this.dnd.width += this.dnd.x;
22296
+ this.dnd.x = 0;
22297
+ }
22298
+ if (this.dnd.y < 0) {
22299
+ this.dnd.height += this.dnd.y;
22300
+ this.dnd.y = 0;
22301
+ }
22293
22302
  };
22294
22303
  }
22295
22304
  const onMouseUp = (ev) => {
@@ -29780,7 +29789,7 @@ class HeaderSizePlugin extends CorePlugin {
29780
29789
  this.sizes = {};
29781
29790
  }
29782
29791
  handle(cmd) {
29783
- var _a, _b, _c;
29792
+ var _a, _b;
29784
29793
  switch (cmd.type) {
29785
29794
  case "CREATE_SHEET": {
29786
29795
  const computedSizes = this.computeSheetSizes(cmd.sheetId);
@@ -29868,7 +29877,8 @@ class HeaderSizePlugin extends CorePlugin {
29868
29877
  }
29869
29878
  break;
29870
29879
  case "UPDATE_CELL":
29871
- 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)) {
29880
+ 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];
29881
+ if (row && !row.manualSize) {
29872
29882
  const { sheetId, row } = cmd;
29873
29883
  this.history.update("sizes", sheetId, "ROW", row, "computedSize", lazy(() => this.getRowTallestCellSize(sheetId, row)));
29874
29884
  }
@@ -34884,6 +34894,7 @@ class FindAndReplacePlugin extends UIPlugin {
34884
34894
  searchFormulas: false,
34885
34895
  };
34886
34896
  this.toSearch = "";
34897
+ this.isSearchDirty = false;
34887
34898
  }
34888
34899
  // ---------------------------------------------------------------------------
34889
34900
  // Command Handling
@@ -34908,18 +34919,33 @@ class FindAndReplacePlugin extends UIPlugin {
34908
34919
  case "REPLACE_ALL_SEARCH":
34909
34920
  this.replaceAll(cmd.replaceWith);
34910
34921
  break;
34922
+ case "EVALUATE_CELLS":
34923
+ case "UPDATE_CELL":
34924
+ case "REMOVE_FILTER_TABLE":
34925
+ case "UPDATE_FILTER":
34926
+ this.isSearchDirty = true;
34927
+ break;
34911
34928
  case "UNDO":
34912
34929
  case "REDO":
34913
34930
  case "REMOVE_COLUMNS_ROWS":
34931
+ case "HIDE_COLUMNS_ROWS":
34932
+ case "UNHIDE_COLUMNS_ROWS":
34914
34933
  case "ADD_COLUMNS_ROWS":
34915
- this.clearSearch();
34934
+ case "EVALUATE_CELLS":
34935
+ case "UPDATE_CELL":
34936
+ this.isSearchDirty = true;
34916
34937
  break;
34917
34938
  case "ACTIVATE_SHEET":
34918
- case "REFRESH_SEARCH":
34919
34939
  this.refreshSearch();
34920
34940
  break;
34921
34941
  }
34922
34942
  }
34943
+ finalize() {
34944
+ if (this.isSearchDirty) {
34945
+ this.refreshSearch();
34946
+ this.isSearchDirty = false;
34947
+ }
34948
+ }
34923
34949
  // ---------------------------------------------------------------------------
34924
34950
  // Getters
34925
34951
  // ---------------------------------------------------------------------------
@@ -34975,6 +35001,11 @@ class FindAndReplacePlugin extends UIPlugin {
34975
35001
  if (this.toSearch) {
34976
35002
  for (const cell of Object.values(cells)) {
34977
35003
  const { col, row } = this.getters.getCellPosition(cell.id);
35004
+ const isColHidden = this.getters.isColHidden(sheetId, col);
35005
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
35006
+ if (isColHidden || isRowHidden) {
35007
+ continue;
35008
+ }
34978
35009
  if (cell &&
34979
35010
  this.currentSearchRegex &&
34980
35011
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -35034,37 +35065,31 @@ class FindAndReplacePlugin extends UIPlugin {
35034
35065
  // ---------------------------------------------------------------------------
35035
35066
  // Replace
35036
35067
  // ---------------------------------------------------------------------------
35037
- /**
35038
- * Replace the value of the currently selected match
35039
- */
35040
- replace(replaceWith) {
35041
- if (this.selectedMatchIndex === null || !this.currentSearchRegex) {
35068
+ replaceMatch(selectedMatch, replaceWith) {
35069
+ if (!this.currentSearchRegex) {
35042
35070
  return;
35043
35071
  }
35044
- const matches = this.searchMatches;
35045
- const selectedMatch = matches[this.selectedMatchIndex];
35046
35072
  const sheetId = this.getters.getActiveSheetId();
35047
35073
  const cell = this.getters.getCell({ sheetId, ...selectedMatch });
35074
+ const { col, row } = selectedMatch;
35048
35075
  if ((cell === null || cell === void 0 ? void 0 : cell.isFormula) && !this.searchOptions.searchFormulas) {
35049
- this.selectNextCell(Direction.next);
35076
+ return;
35050
35077
  }
35051
- else {
35052
- const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
35053
- const toReplace = this.getSearchableString({
35054
- sheetId,
35055
- col: selectedMatch.col,
35056
- row: selectedMatch.row,
35057
- });
35058
- const newContent = toReplace.replace(replaceRegex, replaceWith);
35059
- this.dispatch("UPDATE_CELL", {
35060
- sheetId: this.getters.getActiveSheetId(),
35061
- col: selectedMatch.col,
35062
- row: selectedMatch.row,
35063
- content: newContent,
35064
- });
35065
- this.searchMatches.splice(this.selectedMatchIndex, 1);
35066
- this.selectNextCell(Direction.current);
35078
+ const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
35079
+ const toReplace = this.getSearchableString({ sheetId, col, row });
35080
+ const content = toReplace.replace(replaceRegex, replaceWith);
35081
+ this.dispatch("UPDATE_CELL", { sheetId, col, row, content });
35082
+ }
35083
+ /**
35084
+ * Replace the value of the currently selected match
35085
+ */
35086
+ replace(replaceWith) {
35087
+ if (this.selectedMatchIndex === null) {
35088
+ return;
35067
35089
  }
35090
+ const selectedMatch = this.searchMatches[this.selectedMatchIndex];
35091
+ this.replaceMatch(selectedMatch, replaceWith);
35092
+ this.selectNextCell(Direction.next);
35068
35093
  }
35069
35094
  /**
35070
35095
  * Apply the replace function to all the matches one time.
@@ -35072,7 +35097,7 @@ class FindAndReplacePlugin extends UIPlugin {
35072
35097
  replaceAll(replaceWith) {
35073
35098
  const matchCount = this.searchMatches.length;
35074
35099
  for (let i = 0; i < matchCount; i++) {
35075
- this.replace(replaceWith);
35100
+ this.replaceMatch(this.searchMatches[i], replaceWith);
35076
35101
  }
35077
35102
  }
35078
35103
  getSearchableString(position) {
@@ -37417,10 +37442,8 @@ class SortPlugin extends UIPlugin {
37417
37442
  }
37418
37443
  updateCellCommands.push(newCellValues);
37419
37444
  }
37420
- for (const cmd of updateCellCommands) {
37421
- this.dispatch("UPDATE_CELL", cmd);
37422
- }
37423
37445
  }
37446
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37424
37447
  }
37425
37448
  /**
37426
37449
  * Return the distances between main merge cells in the zone.
@@ -39747,6 +39770,11 @@ css /* scss */ `
39747
39770
  .o-sidePanelButton:enabled {
39748
39771
  cursor: pointer;
39749
39772
  }
39773
+
39774
+ .o-sidePanelButton:disabled {
39775
+ color: ${DISABLED_TEXT_COLOR};
39776
+ }
39777
+
39750
39778
  .o-sidePanelButton:last-child {
39751
39779
  margin-right: 0px;
39752
39780
  }
@@ -44284,6 +44312,6 @@ exports.setTranslationMethod = setTranslationMethod;
44284
44312
  exports.tokenize = tokenize;
44285
44313
 
44286
44314
 
44287
- __info__.version = '16.1.15';
44288
- __info__.date = '2023-06-26T14:33:07.859Z';
44289
- __info__.hash = '2b264ad';
44315
+ __info__.version = '16.1.17';
44316
+ __info__.date = '2023-08-07T09:00:57.212Z';
44317
+ __info__.hash = '2a79aa8';
@@ -1325,7 +1325,9 @@ declare class FindAndReplacePlugin extends UIPlugin {
1325
1325
  private currentSearchRegex;
1326
1326
  private searchOptions;
1327
1327
  private toSearch;
1328
+ private isSearchDirty;
1328
1329
  handle(cmd: Command): void;
1330
+ finalize(): void;
1329
1331
  getSearchMatches(): SearchMatch[];
1330
1332
  getCurrentSelectedMatchIndex(): number | null;
1331
1333
  /**
@@ -1357,6 +1359,7 @@ declare class FindAndReplacePlugin extends UIPlugin {
1357
1359
  */
1358
1360
  private selectNextCell;
1359
1361
  private clearSearch;
1362
+ private replaceMatch;
1360
1363
  /**
1361
1364
  * Replace the value of the currently selected match
1362
1365
  */
@@ -1589,8 +1592,8 @@ interface PositionDependentCommand {
1589
1592
  col: number;
1590
1593
  row: number;
1591
1594
  }
1592
- 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">;
1593
- 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">;
1595
+ 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">;
1596
+ 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">;
1594
1597
  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">;
1595
1598
  interface UpdateCellCommand extends PositionDependentCommand {
1596
1599
  type: "UPDATE_CELL";
@@ -2035,9 +2038,6 @@ interface UpdateSearchCommand {
2035
2038
  interface ClearSearchCommand {
2036
2039
  type: "CLEAR_SEARCH";
2037
2040
  }
2038
- interface RefreshSearchCommand {
2039
- type: "REFRESH_SEARCH";
2040
- }
2041
2041
  interface SelectSearchPreviousCommand {
2042
2042
  type: "SELECT_SEARCH_PREVIOUS_MATCH";
2043
2043
  }
@@ -2147,7 +2147,7 @@ UpdateCellCommand | UpdateCellPositionCommand | ClearCellCommand | DeleteContent
2147
2147
  | CreateImageOverCommand
2148
2148
  /** FILTERS */
2149
2149
  | CreateFilterTableCommand | RemoveFilterTableCommand;
2150
- 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;
2150
+ 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;
2151
2151
  type Command = CoreCommand | LocalCommand;
2152
2152
  /**
2153
2153
  * 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";
@@ -3455,7 +3455,6 @@ const readonlyAllowedCommands = new Set([
3455
3455
  "SET_VIEWPORT_OFFSET",
3456
3456
  "SELECT_SEARCH_NEXT_MATCH",
3457
3457
  "SELECT_SEARCH_PREVIOUS_MATCH",
3458
- "REFRESH_SEARCH",
3459
3458
  "UPDATE_SEARCH",
3460
3459
  "CLEAR_SEARCH",
3461
3460
  "EVALUATE_CELLS",
@@ -5963,7 +5962,7 @@ css /* scss */ `
5963
5962
  }
5964
5963
  }
5965
5964
  &.disabled {
5966
- color: ${MENU_ITEM_DISABLED_COLOR};
5965
+ color: ${DISABLED_TEXT_COLOR};
5967
5966
  cursor: not-allowed;
5968
5967
  }
5969
5968
  }
@@ -21715,11 +21714,16 @@ class FindAndReplacePanel extends Component {
21715
21714
  }
21716
21715
  setup() {
21717
21716
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
21717
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
21718
21718
  onMounted(() => this.focusInput());
21719
21719
  onWillUnmount(() => {
21720
21720
  this.env.model.dispatch("CLEAR_SEARCH");
21721
21721
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
21722
21722
  });
21723
+ useEffect(() => {
21724
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21725
+ this.searchFormulas();
21726
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
21723
21727
  }
21724
21728
  onInput(ev) {
21725
21729
  this.state.toSearch = ev.target.value;
@@ -21739,10 +21743,6 @@ class FindAndReplacePanel extends Component {
21739
21743
  this.replace();
21740
21744
  }
21741
21745
  }
21742
- onFocusSidePanel() {
21743
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21744
- this.env.model.dispatch("REFRESH_SEARCH");
21745
- }
21746
21746
  searchFormulas() {
21747
21747
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
21748
21748
  show: this.state.searchOptions.searchFormulas,
@@ -21761,13 +21761,6 @@ class FindAndReplacePanel extends Component {
21761
21761
  searchOptions: this.state.searchOptions,
21762
21762
  });
21763
21763
  }
21764
- debouncedUpdateSearch() {
21765
- clearTimeout(this.debounceTimeoutId);
21766
- this.debounceTimeoutId = setTimeout(() => {
21767
- this.updateSearch();
21768
- this.debounceTimeoutId = undefined;
21769
- }, 400);
21770
- }
21771
21764
  replace() {
21772
21765
  this.env.model.dispatch("REPLACE_SEARCH", {
21773
21766
  replaceWith: this.state.replaceWith,
@@ -22271,6 +22264,14 @@ class FiguresContainer extends Component {
22271
22264
  if (dirY < 0) {
22272
22265
  this.dnd.y = dndInitialY + figure.height * fraction;
22273
22266
  }
22267
+ if (this.dnd.x < 0) {
22268
+ this.dnd.width += this.dnd.x;
22269
+ this.dnd.x = 0;
22270
+ }
22271
+ if (this.dnd.y < 0) {
22272
+ this.dnd.height += this.dnd.y;
22273
+ this.dnd.y = 0;
22274
+ }
22274
22275
  };
22275
22276
  }
22276
22277
  else {
@@ -22286,6 +22287,14 @@ class FiguresContainer extends Component {
22286
22287
  if (dirY < 0) {
22287
22288
  this.dnd.y = dndInitialY - deltaY;
22288
22289
  }
22290
+ if (this.dnd.x < 0) {
22291
+ this.dnd.width += this.dnd.x;
22292
+ this.dnd.x = 0;
22293
+ }
22294
+ if (this.dnd.y < 0) {
22295
+ this.dnd.height += this.dnd.y;
22296
+ this.dnd.y = 0;
22297
+ }
22289
22298
  };
22290
22299
  }
22291
22300
  const onMouseUp = (ev) => {
@@ -29776,7 +29785,7 @@ class HeaderSizePlugin extends CorePlugin {
29776
29785
  this.sizes = {};
29777
29786
  }
29778
29787
  handle(cmd) {
29779
- var _a, _b, _c;
29788
+ var _a, _b;
29780
29789
  switch (cmd.type) {
29781
29790
  case "CREATE_SHEET": {
29782
29791
  const computedSizes = this.computeSheetSizes(cmd.sheetId);
@@ -29864,7 +29873,8 @@ class HeaderSizePlugin extends CorePlugin {
29864
29873
  }
29865
29874
  break;
29866
29875
  case "UPDATE_CELL":
29867
- 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)) {
29876
+ 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];
29877
+ if (row && !row.manualSize) {
29868
29878
  const { sheetId, row } = cmd;
29869
29879
  this.history.update("sizes", sheetId, "ROW", row, "computedSize", lazy(() => this.getRowTallestCellSize(sheetId, row)));
29870
29880
  }
@@ -34880,6 +34890,7 @@ class FindAndReplacePlugin extends UIPlugin {
34880
34890
  searchFormulas: false,
34881
34891
  };
34882
34892
  this.toSearch = "";
34893
+ this.isSearchDirty = false;
34883
34894
  }
34884
34895
  // ---------------------------------------------------------------------------
34885
34896
  // Command Handling
@@ -34904,18 +34915,33 @@ class FindAndReplacePlugin extends UIPlugin {
34904
34915
  case "REPLACE_ALL_SEARCH":
34905
34916
  this.replaceAll(cmd.replaceWith);
34906
34917
  break;
34918
+ case "EVALUATE_CELLS":
34919
+ case "UPDATE_CELL":
34920
+ case "REMOVE_FILTER_TABLE":
34921
+ case "UPDATE_FILTER":
34922
+ this.isSearchDirty = true;
34923
+ break;
34907
34924
  case "UNDO":
34908
34925
  case "REDO":
34909
34926
  case "REMOVE_COLUMNS_ROWS":
34927
+ case "HIDE_COLUMNS_ROWS":
34928
+ case "UNHIDE_COLUMNS_ROWS":
34910
34929
  case "ADD_COLUMNS_ROWS":
34911
- this.clearSearch();
34930
+ case "EVALUATE_CELLS":
34931
+ case "UPDATE_CELL":
34932
+ this.isSearchDirty = true;
34912
34933
  break;
34913
34934
  case "ACTIVATE_SHEET":
34914
- case "REFRESH_SEARCH":
34915
34935
  this.refreshSearch();
34916
34936
  break;
34917
34937
  }
34918
34938
  }
34939
+ finalize() {
34940
+ if (this.isSearchDirty) {
34941
+ this.refreshSearch();
34942
+ this.isSearchDirty = false;
34943
+ }
34944
+ }
34919
34945
  // ---------------------------------------------------------------------------
34920
34946
  // Getters
34921
34947
  // ---------------------------------------------------------------------------
@@ -34971,6 +34997,11 @@ class FindAndReplacePlugin extends UIPlugin {
34971
34997
  if (this.toSearch) {
34972
34998
  for (const cell of Object.values(cells)) {
34973
34999
  const { col, row } = this.getters.getCellPosition(cell.id);
35000
+ const isColHidden = this.getters.isColHidden(sheetId, col);
35001
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
35002
+ if (isColHidden || isRowHidden) {
35003
+ continue;
35004
+ }
34974
35005
  if (cell &&
34975
35006
  this.currentSearchRegex &&
34976
35007
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -35030,37 +35061,31 @@ class FindAndReplacePlugin extends UIPlugin {
35030
35061
  // ---------------------------------------------------------------------------
35031
35062
  // Replace
35032
35063
  // ---------------------------------------------------------------------------
35033
- /**
35034
- * Replace the value of the currently selected match
35035
- */
35036
- replace(replaceWith) {
35037
- if (this.selectedMatchIndex === null || !this.currentSearchRegex) {
35064
+ replaceMatch(selectedMatch, replaceWith) {
35065
+ if (!this.currentSearchRegex) {
35038
35066
  return;
35039
35067
  }
35040
- const matches = this.searchMatches;
35041
- const selectedMatch = matches[this.selectedMatchIndex];
35042
35068
  const sheetId = this.getters.getActiveSheetId();
35043
35069
  const cell = this.getters.getCell({ sheetId, ...selectedMatch });
35070
+ const { col, row } = selectedMatch;
35044
35071
  if ((cell === null || cell === void 0 ? void 0 : cell.isFormula) && !this.searchOptions.searchFormulas) {
35045
- this.selectNextCell(Direction.next);
35072
+ return;
35046
35073
  }
35047
- else {
35048
- const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
35049
- const toReplace = this.getSearchableString({
35050
- sheetId,
35051
- col: selectedMatch.col,
35052
- row: selectedMatch.row,
35053
- });
35054
- const newContent = toReplace.replace(replaceRegex, replaceWith);
35055
- this.dispatch("UPDATE_CELL", {
35056
- sheetId: this.getters.getActiveSheetId(),
35057
- col: selectedMatch.col,
35058
- row: selectedMatch.row,
35059
- content: newContent,
35060
- });
35061
- this.searchMatches.splice(this.selectedMatchIndex, 1);
35062
- this.selectNextCell(Direction.current);
35074
+ const replaceRegex = new RegExp(this.currentSearchRegex.source, this.currentSearchRegex.flags + "g");
35075
+ const toReplace = this.getSearchableString({ sheetId, col, row });
35076
+ const content = toReplace.replace(replaceRegex, replaceWith);
35077
+ this.dispatch("UPDATE_CELL", { sheetId, col, row, content });
35078
+ }
35079
+ /**
35080
+ * Replace the value of the currently selected match
35081
+ */
35082
+ replace(replaceWith) {
35083
+ if (this.selectedMatchIndex === null) {
35084
+ return;
35063
35085
  }
35086
+ const selectedMatch = this.searchMatches[this.selectedMatchIndex];
35087
+ this.replaceMatch(selectedMatch, replaceWith);
35088
+ this.selectNextCell(Direction.next);
35064
35089
  }
35065
35090
  /**
35066
35091
  * Apply the replace function to all the matches one time.
@@ -35068,7 +35093,7 @@ class FindAndReplacePlugin extends UIPlugin {
35068
35093
  replaceAll(replaceWith) {
35069
35094
  const matchCount = this.searchMatches.length;
35070
35095
  for (let i = 0; i < matchCount; i++) {
35071
- this.replace(replaceWith);
35096
+ this.replaceMatch(this.searchMatches[i], replaceWith);
35072
35097
  }
35073
35098
  }
35074
35099
  getSearchableString(position) {
@@ -37413,10 +37438,8 @@ class SortPlugin extends UIPlugin {
37413
37438
  }
37414
37439
  updateCellCommands.push(newCellValues);
37415
37440
  }
37416
- for (const cmd of updateCellCommands) {
37417
- this.dispatch("UPDATE_CELL", cmd);
37418
- }
37419
37441
  }
37442
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37420
37443
  }
37421
37444
  /**
37422
37445
  * Return the distances between main merge cells in the zone.
@@ -39743,6 +39766,11 @@ css /* scss */ `
39743
39766
  .o-sidePanelButton:enabled {
39744
39767
  cursor: pointer;
39745
39768
  }
39769
+
39770
+ .o-sidePanelButton:disabled {
39771
+ color: ${DISABLED_TEXT_COLOR};
39772
+ }
39773
+
39746
39774
  .o-sidePanelButton:last-child {
39747
39775
  margin-right: 0px;
39748
39776
  }
@@ -44252,6 +44280,6 @@ function addFunction(functionName, functionDescription) {
44252
44280
  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 };
44253
44281
 
44254
44282
 
44255
- __info__.version = '16.1.15';
44256
- __info__.date = '2023-06-26T14:33:07.859Z';
44257
- __info__.hash = '2b264ad';
44283
+ __info__.version = '16.1.17';
44284
+ __info__.date = '2023-08-07T09:00:57.212Z';
44285
+ __info__.hash = '2a79aa8';