@odoo/o-spreadsheet 16.0.14 → 16.0.15

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";
@@ -3107,7 +3107,6 @@ const readonlyAllowedCommands = new Set([
3107
3107
  "SET_VIEWPORT_OFFSET",
3108
3108
  "SELECT_SEARCH_NEXT_MATCH",
3109
3109
  "SELECT_SEARCH_PREVIOUS_MATCH",
3110
- "REFRESH_SEARCH",
3111
3110
  "UPDATE_SEARCH",
3112
3111
  "CLEAR_SEARCH",
3113
3112
  "EVALUATE_CELLS",
@@ -4034,7 +4033,7 @@ css /* scss */ `
4034
4033
  }
4035
4034
  }
4036
4035
  &.disabled {
4037
- color: ${MENU_ITEM_DISABLED_COLOR};
4036
+ color: ${DISABLED_TEXT_COLOR};
4038
4037
  cursor: not-allowed;
4039
4038
  }
4040
4039
  }
@@ -9988,11 +9987,16 @@ class FindAndReplacePanel extends owl.Component {
9988
9987
  }
9989
9988
  setup() {
9990
9989
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
9990
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
9991
9991
  owl.onMounted(() => this.focusInput());
9992
9992
  owl.onWillUnmount(() => {
9993
9993
  this.env.model.dispatch("CLEAR_SEARCH");
9994
9994
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
9995
9995
  });
9996
+ owl.useEffect(() => {
9997
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
9998
+ this.searchFormulas();
9999
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
9996
10000
  }
9997
10001
  onInput(ev) {
9998
10002
  this.state.toSearch = ev.target.value;
@@ -10010,10 +10014,6 @@ class FindAndReplacePanel extends owl.Component {
10010
10014
  this.replace();
10011
10015
  }
10012
10016
  }
10013
- onFocusSidePanel() {
10014
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
10015
- this.env.model.dispatch("REFRESH_SEARCH");
10016
- }
10017
10017
  searchFormulas() {
10018
10018
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
10019
10019
  show: this.state.searchOptions.searchFormulas,
@@ -10032,10 +10032,6 @@ class FindAndReplacePanel extends owl.Component {
10032
10032
  searchOptions: this.state.searchOptions,
10033
10033
  });
10034
10034
  }
10035
- debouncedUpdateSearch() {
10036
- clearTimeout(this.inDebounce);
10037
- this.inDebounce = setTimeout(() => this.updateSearch.call(this), 400);
10038
- }
10039
10035
  replace() {
10040
10036
  this.env.model.dispatch("REPLACE_SEARCH", {
10041
10037
  replaceWith: this.state.replaceWith,
@@ -21163,6 +21159,14 @@ class FiguresContainer extends owl.Component {
21163
21159
  if (dirY < 0) {
21164
21160
  this.dnd.y = dndInitialY - deltaY;
21165
21161
  }
21162
+ if (this.dnd.x < 0) {
21163
+ this.dnd.width += this.dnd.x;
21164
+ this.dnd.x = 0;
21165
+ }
21166
+ if (this.dnd.y < 0) {
21167
+ this.dnd.height += this.dnd.y;
21168
+ this.dnd.y = 0;
21169
+ }
21166
21170
  };
21167
21171
  const onMouseUp = (ev) => {
21168
21172
  if (!this.dnd.figId) {
@@ -33294,6 +33298,7 @@ class FindAndReplacePlugin extends UIPlugin {
33294
33298
  searchFormulas: false,
33295
33299
  };
33296
33300
  this.toSearch = "";
33301
+ this.isSearchDirty = false;
33297
33302
  }
33298
33303
  // ---------------------------------------------------------------------------
33299
33304
  // Command Handling
@@ -33318,18 +33323,25 @@ class FindAndReplacePlugin extends UIPlugin {
33318
33323
  case "REPLACE_ALL_SEARCH":
33319
33324
  this.replaceAll(cmd.replaceWith);
33320
33325
  break;
33326
+ case "EVALUATE_CELLS":
33327
+ case "UPDATE_CELL":
33328
+ this.isSearchDirty = true;
33329
+ break;
33321
33330
  case "UNDO":
33322
33331
  case "REDO":
33323
33332
  case "REMOVE_COLUMNS_ROWS":
33324
33333
  case "ADD_COLUMNS_ROWS":
33325
- this.clearSearch();
33326
- break;
33327
33334
  case "ACTIVATE_SHEET":
33328
- case "REFRESH_SEARCH":
33329
33335
  this.refreshSearch();
33330
33336
  break;
33331
33337
  }
33332
33338
  }
33339
+ finalize() {
33340
+ if (this.isSearchDirty) {
33341
+ this.refreshSearch();
33342
+ this.isSearchDirty = false;
33343
+ }
33344
+ }
33333
33345
  // ---------------------------------------------------------------------------
33334
33346
  // Getters
33335
33347
  // ---------------------------------------------------------------------------
@@ -33379,11 +33391,17 @@ class FindAndReplacePlugin extends UIPlugin {
33379
33391
  * Find matches using the current regex
33380
33392
  */
33381
33393
  findMatches() {
33382
- const activeSheetId = this.getters.getActiveSheetId();
33383
- const cells = this.getters.getCells(activeSheetId);
33394
+ const sheetId = this.getters.getActiveSheetId();
33395
+ const cells = this.getters.getCells(sheetId);
33384
33396
  const matches = [];
33385
33397
  if (this.toSearch) {
33386
33398
  for (const cell of Object.values(cells)) {
33399
+ const { col, row } = this.getters.getCellPosition(cell.id);
33400
+ const isColHidden = this.getters.isColHidden(sheetId, col);
33401
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
33402
+ if (isColHidden || isRowHidden) {
33403
+ continue;
33404
+ }
33387
33405
  if (cell &&
33388
33406
  this.currentSearchRegex &&
33389
33407
  this.currentSearchRegex.test(this.searchOptions.searchFormulas
@@ -37271,6 +37289,7 @@ class SortPlugin extends UIPlugin {
37271
37289
  const sortedIndexOfSortTypeCells = sortCells(sortingCells, sortDirection, Boolean(options.emptyCellAsZero));
37272
37290
  const sortedIndex = sortedIndexOfSortTypeCells.map((x) => x.index);
37273
37291
  const [width, height] = [cells.length, cells[0].length];
37292
+ const cellUpdates = [];
37274
37293
  for (let c = 0; c < width; c++) {
37275
37294
  for (let r = 0; r < height; r++) {
37276
37295
  let cell = cells[c][sortedIndex[r]];
@@ -37281,7 +37300,6 @@ class SortPlugin extends UIPlugin {
37281
37300
  col: newCol,
37282
37301
  row: newRow,
37283
37302
  content: "",
37284
- value: "",
37285
37303
  };
37286
37304
  if (cell) {
37287
37305
  let content = cell.content;
@@ -37295,11 +37313,11 @@ class SortPlugin extends UIPlugin {
37295
37313
  newCellValues.style = cell.style;
37296
37314
  newCellValues.content = content;
37297
37315
  newCellValues.format = cell.format;
37298
- newCellValues.value = cell.evaluated.value;
37299
37316
  }
37300
- this.dispatch("UPDATE_CELL", newCellValues);
37317
+ cellUpdates.push(newCellValues);
37301
37318
  }
37302
37319
  }
37320
+ cellUpdates.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37303
37321
  }
37304
37322
  /**
37305
37323
  * Return the distances between main merge cells in the zone.
@@ -38061,6 +38079,11 @@ css /* scss */ `
38061
38079
  .o-sidePanelButton:enabled {
38062
38080
  cursor: pointer;
38063
38081
  }
38082
+
38083
+ .o-sidePanelButton:disabled {
38084
+ color: ${DISABLED_TEXT_COLOR};
38085
+ }
38086
+
38064
38087
  .o-sidePanelButton:last-child {
38065
38088
  margin-right: 0px;
38066
38089
  }
@@ -42832,6 +42855,6 @@ exports.setTranslationMethod = setTranslationMethod;
42832
42855
  exports.tokenize = tokenize;
42833
42856
 
42834
42857
 
42835
- __info__.version = '16.0.14';
42836
- __info__.date = '2023-06-26T14:33:01.959Z';
42837
- __info__.hash = '1e37a94';
42858
+ __info__.version = '16.0.15';
42859
+ __info__.date = '2023-07-26T12:11:24.020Z';
42860
+ __info__.hash = '18da14b';
@@ -1368,7 +1368,9 @@ declare class FindAndReplacePlugin extends UIPlugin {
1368
1368
  private currentSearchRegex;
1369
1369
  private searchOptions;
1370
1370
  private toSearch;
1371
+ private isSearchDirty;
1371
1372
  handle(cmd: Command): void;
1373
+ finalize(): void;
1372
1374
  getSearchMatches(): SearchMatch[];
1373
1375
  getCurrentSelectedMatchIndex(): number | null;
1374
1376
  /**
@@ -1526,8 +1528,8 @@ interface PositionDependentCommand {
1526
1528
  col: number;
1527
1529
  row: number;
1528
1530
  }
1529
- 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_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" | "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">;
1530
- 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_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" | "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">;
1531
+ 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_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" | "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">;
1532
+ 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_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" | "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">;
1531
1533
  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_FILTER_TABLE" | "REMOVE_FILTER_TABLE">;
1532
1534
  interface UpdateCellCommand extends PositionDependentCommand {
1533
1535
  type: "UPDATE_CELL";
@@ -1962,9 +1964,6 @@ interface UpdateSearchCommand {
1962
1964
  interface ClearSearchCommand {
1963
1965
  type: "CLEAR_SEARCH";
1964
1966
  }
1965
- interface RefreshSearchCommand {
1966
- type: "REFRESH_SEARCH";
1967
- }
1968
1967
  interface SelectSearchPreviousCommand {
1969
1968
  type: "SELECT_SEARCH_PREVIOUS_MATCH";
1970
1969
  }
@@ -2072,7 +2071,7 @@ UpdateCellCommand | UpdateCellPositionCommand | ClearCellCommand | DeleteContent
2072
2071
  | CreateChartCommand | UpdateChartCommand
2073
2072
  /** FILTERS */
2074
2073
  | CreateFilterTableCommand | RemoveFilterTableCommand;
2075
- type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | 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;
2074
+ type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | 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;
2076
2075
  type Command = CoreCommand | LocalCommand;
2077
2076
  /**
2078
2077
  * Holds the result of a command dispatch.
@@ -1,4 +1,4 @@
1
- import { Component, useRef, onMounted, onPatched, onWillPatch, useState, onWillUpdateProps, useExternalListener, onWillUnmount, onWillStart, xml, useEffect, useSubEnv, EventBus as EventBus$1, markRaw } from '@odoo/owl';
1
+ import { Component, useRef, onMounted, onPatched, onWillPatch, useState, onWillUpdateProps, useExternalListener, onWillUnmount, onWillStart, useEffect, xml, useSubEnv, EventBus as EventBus$1, markRaw } from '@odoo/owl';
2
2
 
3
3
  /*
4
4
  * usage: every string should be translated either with _lt if they are registered with a registry at
@@ -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";
@@ -3103,7 +3103,6 @@ const readonlyAllowedCommands = new Set([
3103
3103
  "SET_VIEWPORT_OFFSET",
3104
3104
  "SELECT_SEARCH_NEXT_MATCH",
3105
3105
  "SELECT_SEARCH_PREVIOUS_MATCH",
3106
- "REFRESH_SEARCH",
3107
3106
  "UPDATE_SEARCH",
3108
3107
  "CLEAR_SEARCH",
3109
3108
  "EVALUATE_CELLS",
@@ -4030,7 +4029,7 @@ css /* scss */ `
4030
4029
  }
4031
4030
  }
4032
4031
  &.disabled {
4033
- color: ${MENU_ITEM_DISABLED_COLOR};
4032
+ color: ${DISABLED_TEXT_COLOR};
4034
4033
  cursor: not-allowed;
4035
4034
  }
4036
4035
  }
@@ -9984,11 +9983,16 @@ class FindAndReplacePanel extends Component {
9984
9983
  }
9985
9984
  setup() {
9986
9985
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
9986
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
9987
9987
  onMounted(() => this.focusInput());
9988
9988
  onWillUnmount(() => {
9989
9989
  this.env.model.dispatch("CLEAR_SEARCH");
9990
9990
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
9991
9991
  });
9992
+ useEffect(() => {
9993
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
9994
+ this.searchFormulas();
9995
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
9992
9996
  }
9993
9997
  onInput(ev) {
9994
9998
  this.state.toSearch = ev.target.value;
@@ -10006,10 +10010,6 @@ class FindAndReplacePanel extends Component {
10006
10010
  this.replace();
10007
10011
  }
10008
10012
  }
10009
- onFocusSidePanel() {
10010
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
10011
- this.env.model.dispatch("REFRESH_SEARCH");
10012
- }
10013
10013
  searchFormulas() {
10014
10014
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
10015
10015
  show: this.state.searchOptions.searchFormulas,
@@ -10028,10 +10028,6 @@ class FindAndReplacePanel extends Component {
10028
10028
  searchOptions: this.state.searchOptions,
10029
10029
  });
10030
10030
  }
10031
- debouncedUpdateSearch() {
10032
- clearTimeout(this.inDebounce);
10033
- this.inDebounce = setTimeout(() => this.updateSearch.call(this), 400);
10034
- }
10035
10031
  replace() {
10036
10032
  this.env.model.dispatch("REPLACE_SEARCH", {
10037
10033
  replaceWith: this.state.replaceWith,
@@ -21159,6 +21155,14 @@ class FiguresContainer extends Component {
21159
21155
  if (dirY < 0) {
21160
21156
  this.dnd.y = dndInitialY - deltaY;
21161
21157
  }
21158
+ if (this.dnd.x < 0) {
21159
+ this.dnd.width += this.dnd.x;
21160
+ this.dnd.x = 0;
21161
+ }
21162
+ if (this.dnd.y < 0) {
21163
+ this.dnd.height += this.dnd.y;
21164
+ this.dnd.y = 0;
21165
+ }
21162
21166
  };
21163
21167
  const onMouseUp = (ev) => {
21164
21168
  if (!this.dnd.figId) {
@@ -33290,6 +33294,7 @@ class FindAndReplacePlugin extends UIPlugin {
33290
33294
  searchFormulas: false,
33291
33295
  };
33292
33296
  this.toSearch = "";
33297
+ this.isSearchDirty = false;
33293
33298
  }
33294
33299
  // ---------------------------------------------------------------------------
33295
33300
  // Command Handling
@@ -33314,18 +33319,25 @@ class FindAndReplacePlugin extends UIPlugin {
33314
33319
  case "REPLACE_ALL_SEARCH":
33315
33320
  this.replaceAll(cmd.replaceWith);
33316
33321
  break;
33322
+ case "EVALUATE_CELLS":
33323
+ case "UPDATE_CELL":
33324
+ this.isSearchDirty = true;
33325
+ break;
33317
33326
  case "UNDO":
33318
33327
  case "REDO":
33319
33328
  case "REMOVE_COLUMNS_ROWS":
33320
33329
  case "ADD_COLUMNS_ROWS":
33321
- this.clearSearch();
33322
- break;
33323
33330
  case "ACTIVATE_SHEET":
33324
- case "REFRESH_SEARCH":
33325
33331
  this.refreshSearch();
33326
33332
  break;
33327
33333
  }
33328
33334
  }
33335
+ finalize() {
33336
+ if (this.isSearchDirty) {
33337
+ this.refreshSearch();
33338
+ this.isSearchDirty = false;
33339
+ }
33340
+ }
33329
33341
  // ---------------------------------------------------------------------------
33330
33342
  // Getters
33331
33343
  // ---------------------------------------------------------------------------
@@ -33375,11 +33387,17 @@ class FindAndReplacePlugin extends UIPlugin {
33375
33387
  * Find matches using the current regex
33376
33388
  */
33377
33389
  findMatches() {
33378
- const activeSheetId = this.getters.getActiveSheetId();
33379
- const cells = this.getters.getCells(activeSheetId);
33390
+ const sheetId = this.getters.getActiveSheetId();
33391
+ const cells = this.getters.getCells(sheetId);
33380
33392
  const matches = [];
33381
33393
  if (this.toSearch) {
33382
33394
  for (const cell of Object.values(cells)) {
33395
+ const { col, row } = this.getters.getCellPosition(cell.id);
33396
+ const isColHidden = this.getters.isColHidden(sheetId, col);
33397
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
33398
+ if (isColHidden || isRowHidden) {
33399
+ continue;
33400
+ }
33383
33401
  if (cell &&
33384
33402
  this.currentSearchRegex &&
33385
33403
  this.currentSearchRegex.test(this.searchOptions.searchFormulas
@@ -37267,6 +37285,7 @@ class SortPlugin extends UIPlugin {
37267
37285
  const sortedIndexOfSortTypeCells = sortCells(sortingCells, sortDirection, Boolean(options.emptyCellAsZero));
37268
37286
  const sortedIndex = sortedIndexOfSortTypeCells.map((x) => x.index);
37269
37287
  const [width, height] = [cells.length, cells[0].length];
37288
+ const cellUpdates = [];
37270
37289
  for (let c = 0; c < width; c++) {
37271
37290
  for (let r = 0; r < height; r++) {
37272
37291
  let cell = cells[c][sortedIndex[r]];
@@ -37277,7 +37296,6 @@ class SortPlugin extends UIPlugin {
37277
37296
  col: newCol,
37278
37297
  row: newRow,
37279
37298
  content: "",
37280
- value: "",
37281
37299
  };
37282
37300
  if (cell) {
37283
37301
  let content = cell.content;
@@ -37291,11 +37309,11 @@ class SortPlugin extends UIPlugin {
37291
37309
  newCellValues.style = cell.style;
37292
37310
  newCellValues.content = content;
37293
37311
  newCellValues.format = cell.format;
37294
- newCellValues.value = cell.evaluated.value;
37295
37312
  }
37296
- this.dispatch("UPDATE_CELL", newCellValues);
37313
+ cellUpdates.push(newCellValues);
37297
37314
  }
37298
37315
  }
37316
+ cellUpdates.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37299
37317
  }
37300
37318
  /**
37301
37319
  * Return the distances between main merge cells in the zone.
@@ -38057,6 +38075,11 @@ css /* scss */ `
38057
38075
  .o-sidePanelButton:enabled {
38058
38076
  cursor: pointer;
38059
38077
  }
38078
+
38079
+ .o-sidePanelButton:disabled {
38080
+ color: ${DISABLED_TEXT_COLOR};
38081
+ }
38082
+
38060
38083
  .o-sidePanelButton:last-child {
38061
38084
  margin-right: 0px;
38062
38085
  }
@@ -42800,6 +42823,6 @@ function addFunction(functionName, functionDescription) {
42800
42823
  export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, cellTypes, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
42801
42824
 
42802
42825
 
42803
- __info__.version = '16.0.14';
42804
- __info__.date = '2023-06-26T14:33:01.959Z';
42805
- __info__.hash = '1e37a94';
42826
+ __info__.version = '16.0.15';
42827
+ __info__.date = '2023-07-26T12:11:24.020Z';
42828
+ __info__.hash = '18da14b';
@@ -106,7 +106,7 @@
106
106
  const HEADER_BORDER_COLOR = "#C0C0C0";
107
107
  const CELL_BORDER_COLOR = "#E2E3E3";
108
108
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
109
- const MENU_ITEM_DISABLED_COLOR = "#CACACA";
109
+ const DISABLED_TEXT_COLOR = "#CACACA";
110
110
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
111
111
  const LINK_COLOR = "#01666b";
112
112
  const FILTERS_COLOR = "#188038";
@@ -3104,7 +3104,6 @@
3104
3104
  "SET_VIEWPORT_OFFSET",
3105
3105
  "SELECT_SEARCH_NEXT_MATCH",
3106
3106
  "SELECT_SEARCH_PREVIOUS_MATCH",
3107
- "REFRESH_SEARCH",
3108
3107
  "UPDATE_SEARCH",
3109
3108
  "CLEAR_SEARCH",
3110
3109
  "EVALUATE_CELLS",
@@ -4031,7 +4030,7 @@
4031
4030
  }
4032
4031
  }
4033
4032
  &.disabled {
4034
- color: ${MENU_ITEM_DISABLED_COLOR};
4033
+ color: ${DISABLED_TEXT_COLOR};
4035
4034
  cursor: not-allowed;
4036
4035
  }
4037
4036
  }
@@ -9985,11 +9984,16 @@
9985
9984
  }
9986
9985
  setup() {
9987
9986
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
9987
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
9988
9988
  owl.onMounted(() => this.focusInput());
9989
9989
  owl.onWillUnmount(() => {
9990
9990
  this.env.model.dispatch("CLEAR_SEARCH");
9991
9991
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
9992
9992
  });
9993
+ owl.useEffect(() => {
9994
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
9995
+ this.searchFormulas();
9996
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
9993
9997
  }
9994
9998
  onInput(ev) {
9995
9999
  this.state.toSearch = ev.target.value;
@@ -10007,10 +10011,6 @@
10007
10011
  this.replace();
10008
10012
  }
10009
10013
  }
10010
- onFocusSidePanel() {
10011
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
10012
- this.env.model.dispatch("REFRESH_SEARCH");
10013
- }
10014
10014
  searchFormulas() {
10015
10015
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
10016
10016
  show: this.state.searchOptions.searchFormulas,
@@ -10029,10 +10029,6 @@
10029
10029
  searchOptions: this.state.searchOptions,
10030
10030
  });
10031
10031
  }
10032
- debouncedUpdateSearch() {
10033
- clearTimeout(this.inDebounce);
10034
- this.inDebounce = setTimeout(() => this.updateSearch.call(this), 400);
10035
- }
10036
10032
  replace() {
10037
10033
  this.env.model.dispatch("REPLACE_SEARCH", {
10038
10034
  replaceWith: this.state.replaceWith,
@@ -21160,6 +21156,14 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
21160
21156
  if (dirY < 0) {
21161
21157
  this.dnd.y = dndInitialY - deltaY;
21162
21158
  }
21159
+ if (this.dnd.x < 0) {
21160
+ this.dnd.width += this.dnd.x;
21161
+ this.dnd.x = 0;
21162
+ }
21163
+ if (this.dnd.y < 0) {
21164
+ this.dnd.height += this.dnd.y;
21165
+ this.dnd.y = 0;
21166
+ }
21163
21167
  };
21164
21168
  const onMouseUp = (ev) => {
21165
21169
  if (!this.dnd.figId) {
@@ -33291,6 +33295,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33291
33295
  searchFormulas: false,
33292
33296
  };
33293
33297
  this.toSearch = "";
33298
+ this.isSearchDirty = false;
33294
33299
  }
33295
33300
  // ---------------------------------------------------------------------------
33296
33301
  // Command Handling
@@ -33315,18 +33320,25 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33315
33320
  case "REPLACE_ALL_SEARCH":
33316
33321
  this.replaceAll(cmd.replaceWith);
33317
33322
  break;
33323
+ case "EVALUATE_CELLS":
33324
+ case "UPDATE_CELL":
33325
+ this.isSearchDirty = true;
33326
+ break;
33318
33327
  case "UNDO":
33319
33328
  case "REDO":
33320
33329
  case "REMOVE_COLUMNS_ROWS":
33321
33330
  case "ADD_COLUMNS_ROWS":
33322
- this.clearSearch();
33323
- break;
33324
33331
  case "ACTIVATE_SHEET":
33325
- case "REFRESH_SEARCH":
33326
33332
  this.refreshSearch();
33327
33333
  break;
33328
33334
  }
33329
33335
  }
33336
+ finalize() {
33337
+ if (this.isSearchDirty) {
33338
+ this.refreshSearch();
33339
+ this.isSearchDirty = false;
33340
+ }
33341
+ }
33330
33342
  // ---------------------------------------------------------------------------
33331
33343
  // Getters
33332
33344
  // ---------------------------------------------------------------------------
@@ -33376,11 +33388,17 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
33376
33388
  * Find matches using the current regex
33377
33389
  */
33378
33390
  findMatches() {
33379
- const activeSheetId = this.getters.getActiveSheetId();
33380
- const cells = this.getters.getCells(activeSheetId);
33391
+ const sheetId = this.getters.getActiveSheetId();
33392
+ const cells = this.getters.getCells(sheetId);
33381
33393
  const matches = [];
33382
33394
  if (this.toSearch) {
33383
33395
  for (const cell of Object.values(cells)) {
33396
+ const { col, row } = this.getters.getCellPosition(cell.id);
33397
+ const isColHidden = this.getters.isColHidden(sheetId, col);
33398
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
33399
+ if (isColHidden || isRowHidden) {
33400
+ continue;
33401
+ }
33384
33402
  if (cell &&
33385
33403
  this.currentSearchRegex &&
33386
33404
  this.currentSearchRegex.test(this.searchOptions.searchFormulas
@@ -37268,6 +37286,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
37268
37286
  const sortedIndexOfSortTypeCells = sortCells(sortingCells, sortDirection, Boolean(options.emptyCellAsZero));
37269
37287
  const sortedIndex = sortedIndexOfSortTypeCells.map((x) => x.index);
37270
37288
  const [width, height] = [cells.length, cells[0].length];
37289
+ const cellUpdates = [];
37271
37290
  for (let c = 0; c < width; c++) {
37272
37291
  for (let r = 0; r < height; r++) {
37273
37292
  let cell = cells[c][sortedIndex[r]];
@@ -37278,7 +37297,6 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
37278
37297
  col: newCol,
37279
37298
  row: newRow,
37280
37299
  content: "",
37281
- value: "",
37282
37300
  };
37283
37301
  if (cell) {
37284
37302
  let content = cell.content;
@@ -37292,11 +37310,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
37292
37310
  newCellValues.style = cell.style;
37293
37311
  newCellValues.content = content;
37294
37312
  newCellValues.format = cell.format;
37295
- newCellValues.value = cell.evaluated.value;
37296
37313
  }
37297
- this.dispatch("UPDATE_CELL", newCellValues);
37314
+ cellUpdates.push(newCellValues);
37298
37315
  }
37299
37316
  }
37317
+ cellUpdates.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37300
37318
  }
37301
37319
  /**
37302
37320
  * Return the distances between main merge cells in the zone.
@@ -38058,6 +38076,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
38058
38076
  .o-sidePanelButton:enabled {
38059
38077
  cursor: pointer;
38060
38078
  }
38079
+
38080
+ .o-sidePanelButton:disabled {
38081
+ color: ${DISABLED_TEXT_COLOR};
38082
+ }
38083
+
38061
38084
  .o-sidePanelButton:last-child {
38062
38085
  margin-right: 0px;
38063
38086
  }
@@ -42831,9 +42854,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
42831
42854
  Object.defineProperty(exports, '__esModule', { value: true });
42832
42855
 
42833
42856
 
42834
- __info__.version = '16.0.14';
42835
- __info__.date = '2023-06-26T14:33:01.959Z';
42836
- __info__.hash = '1e37a94';
42857
+ __info__.version = '16.0.15';
42858
+ __info__.date = '2023-07-26T12:11:24.020Z';
42859
+ __info__.hash = '18da14b';
42837
42860
 
42838
42861
 
42839
42862
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);