@odoo/o-spreadsheet 16.4.0 → 16.4.1

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.
@@ -112,8 +112,8 @@ const SELECTION_BORDER_COLOR = "#3266ca";
112
112
  const HEADER_BORDER_COLOR = "#C0C0C0";
113
113
  const CELL_BORDER_COLOR = "#E2E3E3";
114
114
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
115
- const MENU_ITEM_DISABLED_COLOR = "#CACACA";
116
115
  const BG_HOVER_COLOR = "#EBEBEB";
116
+ const DISABLED_TEXT_COLOR = "#CACACA";
117
117
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
118
118
  const LINK_COLOR = "#01666b";
119
119
  const FILTERS_COLOR = "#188038";
@@ -4055,7 +4055,6 @@ const readonlyAllowedCommands = new Set([
4055
4055
  "SET_VIEWPORT_OFFSET",
4056
4056
  "SELECT_SEARCH_NEXT_MATCH",
4057
4057
  "SELECT_SEARCH_PREVIOUS_MATCH",
4058
- "REFRESH_SEARCH",
4059
4058
  "UPDATE_SEARCH",
4060
4059
  "CLEAR_SEARCH",
4061
4060
  "EVALUATE_CELLS",
@@ -5994,7 +5993,7 @@ css /* scss */ `
5994
5993
  }
5995
5994
  }
5996
5995
  &.disabled {
5997
- color: ${MENU_ITEM_DISABLED_COLOR};
5996
+ color: ${DISABLED_TEXT_COLOR};
5998
5997
  cursor: not-allowed;
5999
5998
  }
6000
5999
  }
@@ -22694,6 +22693,7 @@ class FindAndReplacePanel extends owl.Component {
22694
22693
  state = owl.useState(this.initialState());
22695
22694
  debounceTimeoutId;
22696
22695
  showFormulaState = false;
22696
+ debouncedUpdateSearch;
22697
22697
  findAndReplaceRef = owl.useRef("findAndReplace");
22698
22698
  get hasSearchResult() {
22699
22699
  return this.env.model.getters.getCurrentSelectedMatchIndex() !== null;
@@ -22703,11 +22703,16 @@ class FindAndReplacePanel extends owl.Component {
22703
22703
  }
22704
22704
  setup() {
22705
22705
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
22706
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
22706
22707
  owl.onMounted(() => this.focusInput());
22707
22708
  owl.onWillUnmount(() => {
22708
22709
  this.env.model.dispatch("CLEAR_SEARCH");
22709
22710
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
22710
22711
  });
22712
+ owl.useEffect(() => {
22713
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22714
+ this.searchFormulas();
22715
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
22711
22716
  }
22712
22717
  onInput(ev) {
22713
22718
  this.state.toSearch = ev.target.value;
@@ -22727,10 +22732,6 @@ class FindAndReplacePanel extends owl.Component {
22727
22732
  this.replace();
22728
22733
  }
22729
22734
  }
22730
- onFocusSidePanel() {
22731
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22732
- this.env.model.dispatch("REFRESH_SEARCH");
22733
- }
22734
22735
  searchFormulas() {
22735
22736
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
22736
22737
  show: this.state.searchOptions.searchFormulas,
@@ -22749,13 +22750,6 @@ class FindAndReplacePanel extends owl.Component {
22749
22750
  searchOptions: this.state.searchOptions,
22750
22751
  });
22751
22752
  }
22752
- debouncedUpdateSearch() {
22753
- clearTimeout(this.debounceTimeoutId);
22754
- this.debounceTimeoutId = setTimeout(() => {
22755
- this.updateSearch();
22756
- this.debounceTimeoutId = undefined;
22757
- }, 400);
22758
- }
22759
22753
  replace() {
22760
22754
  this.env.model.dispatch("REPLACE_SEARCH", {
22761
22755
  replaceWith: this.state.replaceWith,
@@ -38534,6 +38528,7 @@ class FindAndReplacePlugin extends UIPlugin {
38534
38528
  searchFormulas: false,
38535
38529
  };
38536
38530
  toSearch = "";
38531
+ isSearchDirty = false;
38537
38532
  // ---------------------------------------------------------------------------
38538
38533
  // Command Handling
38539
38534
  // ---------------------------------------------------------------------------
@@ -38561,14 +38556,21 @@ class FindAndReplacePlugin extends UIPlugin {
38561
38556
  case "REDO":
38562
38557
  case "REMOVE_COLUMNS_ROWS":
38563
38558
  case "ADD_COLUMNS_ROWS":
38564
- this.clearSearch();
38559
+ case "EVALUATE_CELLS":
38560
+ case "UPDATE_CELL":
38561
+ this.isSearchDirty = true;
38565
38562
  break;
38566
38563
  case "ACTIVATE_SHEET":
38567
- case "REFRESH_SEARCH":
38568
38564
  this.refreshSearch();
38569
38565
  break;
38570
38566
  }
38571
38567
  }
38568
+ finalize() {
38569
+ if (this.isSearchDirty) {
38570
+ this.refreshSearch();
38571
+ this.isSearchDirty = false;
38572
+ }
38573
+ }
38572
38574
  // ---------------------------------------------------------------------------
38573
38575
  // Getters
38574
38576
  // ---------------------------------------------------------------------------
@@ -38624,6 +38626,11 @@ class FindAndReplacePlugin extends UIPlugin {
38624
38626
  if (this.toSearch) {
38625
38627
  for (const cell of Object.values(cells)) {
38626
38628
  const { col, row } = this.getters.getCellPosition(cell.id);
38629
+ const isColHidden = this.getters.isColHidden(sheetId, col);
38630
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
38631
+ if (isColHidden || isRowHidden) {
38632
+ continue;
38633
+ }
38627
38634
  if (cell &&
38628
38635
  this.currentSearchRegex &&
38629
38636
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -45724,6 +45731,11 @@ css /* scss */ `
45724
45731
  .o-sidePanelButton:enabled {
45725
45732
  cursor: pointer;
45726
45733
  }
45734
+
45735
+ .o-sidePanelButton:disabled {
45736
+ color: ${DISABLED_TEXT_COLOR};
45737
+ }
45738
+
45727
45739
  .o-sidePanelButton:last-child {
45728
45740
  margin-right: 0px;
45729
45741
  }
@@ -50516,6 +50528,6 @@ exports.setTranslationMethod = setTranslationMethod;
50516
50528
  exports.tokenize = tokenize;
50517
50529
 
50518
50530
 
50519
- __info__.version = '16.4.0';
50520
- __info__.date = '2023-07-24T06:26:19.494Z';
50521
- __info__.hash = '4eb614c';
50531
+ __info__.version = '16.4.1';
50532
+ __info__.date = '2023-07-26T12:13:04.992Z';
50533
+ __info__.hash = 'e687fa9';
@@ -1419,7 +1419,9 @@ declare class FindAndReplacePlugin extends UIPlugin {
1419
1419
  private currentSearchRegex;
1420
1420
  private searchOptions;
1421
1421
  private toSearch;
1422
+ private isSearchDirty;
1422
1423
  handle(cmd: Command): void;
1424
+ finalize(): void;
1423
1425
  getSearchMatches(): SearchMatch[];
1424
1426
  getCurrentSelectedMatchIndex(): number | null;
1425
1427
  /**
@@ -1678,9 +1680,9 @@ interface PositionDependentCommand {
1678
1680
  row: number;
1679
1681
  }
1680
1682
  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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "UNDO" | "REDO" | "EVALUATE_CELLS">;
1681
- declare const invalidateDependenciesCommands: 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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "SORT_CELLS" | "SET_DECIMAL" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "ADD_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "REPEAT_PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "CANCEL_PAINT_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" | "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" | "SPLIT_TEXT_INTO_COLUMNS">;
1683
+ declare const invalidateDependenciesCommands: 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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "SORT_CELLS" | "SET_DECIMAL" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "ADD_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "REPEAT_PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "CANCEL_PAINT_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" | "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" | "SPLIT_TEXT_INTO_COLUMNS">;
1682
1684
  declare const invalidateCFEvaluationCommands: 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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "UNDO" | "REDO" | "EVALUATE_CELLS">;
1683
- 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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "SORT_CELLS" | "SET_DECIMAL" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "ADD_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "REPEAT_PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "CANCEL_PAINT_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" | "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" | "SPLIT_TEXT_INTO_COLUMNS">;
1685
+ 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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE" | "SORT_CELLS" | "SET_DECIMAL" | "REQUEST_UNDO" | "REQUEST_REDO" | "UNDO" | "REDO" | "ENABLE_NEW_SELECTION_INPUT" | "DISABLE_SELECTION_INPUT" | "UNFOCUS_SELECTION_INPUT" | "FOCUS_RANGE" | "ADD_EMPTY_RANGE" | "ADD_RANGE" | "REMOVE_RANGE" | "CHANGE_RANGE" | "COPY" | "CUT" | "PASTE" | "REPEAT_PASTE" | "CLEAN_CLIPBOARD_HIGHLIGHT" | "AUTOFILL_CELL" | "PASTE_FROM_OS_CLIPBOARD" | "ACTIVATE_PAINT_FORMAT" | "CANCEL_PAINT_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" | "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" | "SPLIT_TEXT_INTO_COLUMNS">;
1684
1686
  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_ZONE_BORDERS" | "SET_BORDER" | "CREATE_CHART" | "UPDATE_CHART" | "CREATE_IMAGE" | "CREATE_FILTER_TABLE" | "REMOVE_FILTER_TABLE" | "UPDATE_LOCALE">;
1685
1687
  interface UpdateCellCommand extends PositionDependentCommand {
1686
1688
  type: "UPDATE_CELL";
@@ -2150,9 +2152,6 @@ interface UpdateSearchCommand {
2150
2152
  interface ClearSearchCommand {
2151
2153
  type: "CLEAR_SEARCH";
2152
2154
  }
2153
- interface RefreshSearchCommand {
2154
- type: "REFRESH_SEARCH";
2155
- }
2156
2155
  interface SelectSearchPreviousCommand {
2157
2156
  type: "SELECT_SEARCH_PREVIOUS_MATCH";
2158
2157
  }
@@ -2262,7 +2261,7 @@ UpdateCellCommand | UpdateCellPositionCommand | ClearCellCommand | DeleteContent
2262
2261
  | CreateImageOverCommand
2263
2262
  /** FILTERS */
2264
2263
  | CreateFilterTableCommand | RemoveFilterTableCommand | UpdateLocaleCommand;
2265
- type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | AddRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | RepeatPasteCommand | CleanClipBoardHighlightCommand | AutoFillCellCommand | PasteFromOSClipboardCommand | ActivatePaintFormatCommand | CancelPaintFormatCommand | 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 | SplitTextIntoColumnsCommand;
2264
+ type LocalCommand = RequestUndoCommand | RequestRedoCommand | UndoCommand | RedoCommand | NewInputCommand | RemoveInputCommand | UnfocusInputCommand | FocusInputCommand | AddEmptyRangeCommand | AddRangeCommand | RemoveRangeCommand | ChangeRangeCommand | CopyCommand | CutCommand | PasteCommand | RepeatPasteCommand | CleanClipBoardHighlightCommand | AutoFillCellCommand | PasteFromOSClipboardCommand | ActivatePaintFormatCommand | CancelPaintFormatCommand | 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 | SplitTextIntoColumnsCommand;
2266
2265
  type Command = CoreCommand | LocalCommand;
2267
2266
  /**
2268
2267
  * Holds the result of a command dispatch.
@@ -108,8 +108,8 @@ const SELECTION_BORDER_COLOR = "#3266ca";
108
108
  const HEADER_BORDER_COLOR = "#C0C0C0";
109
109
  const CELL_BORDER_COLOR = "#E2E3E3";
110
110
  const BACKGROUND_CHART_COLOR = "#FFFFFF";
111
- const MENU_ITEM_DISABLED_COLOR = "#CACACA";
112
111
  const BG_HOVER_COLOR = "#EBEBEB";
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";
@@ -4051,7 +4051,6 @@ const readonlyAllowedCommands = new Set([
4051
4051
  "SET_VIEWPORT_OFFSET",
4052
4052
  "SELECT_SEARCH_NEXT_MATCH",
4053
4053
  "SELECT_SEARCH_PREVIOUS_MATCH",
4054
- "REFRESH_SEARCH",
4055
4054
  "UPDATE_SEARCH",
4056
4055
  "CLEAR_SEARCH",
4057
4056
  "EVALUATE_CELLS",
@@ -5990,7 +5989,7 @@ css /* scss */ `
5990
5989
  }
5991
5990
  }
5992
5991
  &.disabled {
5993
- color: ${MENU_ITEM_DISABLED_COLOR};
5992
+ color: ${DISABLED_TEXT_COLOR};
5994
5993
  cursor: not-allowed;
5995
5994
  }
5996
5995
  }
@@ -22690,6 +22689,7 @@ class FindAndReplacePanel extends Component {
22690
22689
  state = useState(this.initialState());
22691
22690
  debounceTimeoutId;
22692
22691
  showFormulaState = false;
22692
+ debouncedUpdateSearch;
22693
22693
  findAndReplaceRef = useRef("findAndReplace");
22694
22694
  get hasSearchResult() {
22695
22695
  return this.env.model.getters.getCurrentSelectedMatchIndex() !== null;
@@ -22699,11 +22699,16 @@ class FindAndReplacePanel extends Component {
22699
22699
  }
22700
22700
  setup() {
22701
22701
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
22702
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
22702
22703
  onMounted(() => this.focusInput());
22703
22704
  onWillUnmount(() => {
22704
22705
  this.env.model.dispatch("CLEAR_SEARCH");
22705
22706
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
22706
22707
  });
22708
+ useEffect(() => {
22709
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22710
+ this.searchFormulas();
22711
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
22707
22712
  }
22708
22713
  onInput(ev) {
22709
22714
  this.state.toSearch = ev.target.value;
@@ -22723,10 +22728,6 @@ class FindAndReplacePanel extends Component {
22723
22728
  this.replace();
22724
22729
  }
22725
22730
  }
22726
- onFocusSidePanel() {
22727
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22728
- this.env.model.dispatch("REFRESH_SEARCH");
22729
- }
22730
22731
  searchFormulas() {
22731
22732
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
22732
22733
  show: this.state.searchOptions.searchFormulas,
@@ -22745,13 +22746,6 @@ class FindAndReplacePanel extends Component {
22745
22746
  searchOptions: this.state.searchOptions,
22746
22747
  });
22747
22748
  }
22748
- debouncedUpdateSearch() {
22749
- clearTimeout(this.debounceTimeoutId);
22750
- this.debounceTimeoutId = setTimeout(() => {
22751
- this.updateSearch();
22752
- this.debounceTimeoutId = undefined;
22753
- }, 400);
22754
- }
22755
22749
  replace() {
22756
22750
  this.env.model.dispatch("REPLACE_SEARCH", {
22757
22751
  replaceWith: this.state.replaceWith,
@@ -38530,6 +38524,7 @@ class FindAndReplacePlugin extends UIPlugin {
38530
38524
  searchFormulas: false,
38531
38525
  };
38532
38526
  toSearch = "";
38527
+ isSearchDirty = false;
38533
38528
  // ---------------------------------------------------------------------------
38534
38529
  // Command Handling
38535
38530
  // ---------------------------------------------------------------------------
@@ -38557,14 +38552,21 @@ class FindAndReplacePlugin extends UIPlugin {
38557
38552
  case "REDO":
38558
38553
  case "REMOVE_COLUMNS_ROWS":
38559
38554
  case "ADD_COLUMNS_ROWS":
38560
- this.clearSearch();
38555
+ case "EVALUATE_CELLS":
38556
+ case "UPDATE_CELL":
38557
+ this.isSearchDirty = true;
38561
38558
  break;
38562
38559
  case "ACTIVATE_SHEET":
38563
- case "REFRESH_SEARCH":
38564
38560
  this.refreshSearch();
38565
38561
  break;
38566
38562
  }
38567
38563
  }
38564
+ finalize() {
38565
+ if (this.isSearchDirty) {
38566
+ this.refreshSearch();
38567
+ this.isSearchDirty = false;
38568
+ }
38569
+ }
38568
38570
  // ---------------------------------------------------------------------------
38569
38571
  // Getters
38570
38572
  // ---------------------------------------------------------------------------
@@ -38620,6 +38622,11 @@ class FindAndReplacePlugin extends UIPlugin {
38620
38622
  if (this.toSearch) {
38621
38623
  for (const cell of Object.values(cells)) {
38622
38624
  const { col, row } = this.getters.getCellPosition(cell.id);
38625
+ const isColHidden = this.getters.isColHidden(sheetId, col);
38626
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
38627
+ if (isColHidden || isRowHidden) {
38628
+ continue;
38629
+ }
38623
38630
  if (cell &&
38624
38631
  this.currentSearchRegex &&
38625
38632
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -45720,6 +45727,11 @@ css /* scss */ `
45720
45727
  .o-sidePanelButton:enabled {
45721
45728
  cursor: pointer;
45722
45729
  }
45730
+
45731
+ .o-sidePanelButton:disabled {
45732
+ color: ${DISABLED_TEXT_COLOR};
45733
+ }
45734
+
45723
45735
  .o-sidePanelButton:last-child {
45724
45736
  margin-right: 0px;
45725
45737
  }
@@ -50480,6 +50492,6 @@ const constants = {
50480
50492
  export { AbstractChart, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, tokenize };
50481
50493
 
50482
50494
 
50483
- __info__.version = '16.4.0';
50484
- __info__.date = '2023-07-24T06:26:19.494Z';
50485
- __info__.hash = '4eb614c';
50495
+ __info__.version = '16.4.1';
50496
+ __info__.date = '2023-07-26T12:13:04.992Z';
50497
+ __info__.hash = 'e687fa9';
@@ -109,8 +109,8 @@
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";
113
112
  const BG_HOVER_COLOR = "#EBEBEB";
113
+ const DISABLED_TEXT_COLOR = "#CACACA";
114
114
  const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
115
115
  const LINK_COLOR = "#01666b";
116
116
  const FILTERS_COLOR = "#188038";
@@ -4052,7 +4052,6 @@
4052
4052
  "SET_VIEWPORT_OFFSET",
4053
4053
  "SELECT_SEARCH_NEXT_MATCH",
4054
4054
  "SELECT_SEARCH_PREVIOUS_MATCH",
4055
- "REFRESH_SEARCH",
4056
4055
  "UPDATE_SEARCH",
4057
4056
  "CLEAR_SEARCH",
4058
4057
  "EVALUATE_CELLS",
@@ -5991,7 +5990,7 @@
5991
5990
  }
5992
5991
  }
5993
5992
  &.disabled {
5994
- color: ${MENU_ITEM_DISABLED_COLOR};
5993
+ color: ${DISABLED_TEXT_COLOR};
5995
5994
  cursor: not-allowed;
5996
5995
  }
5997
5996
  }
@@ -22691,6 +22690,7 @@
22691
22690
  state = owl.useState(this.initialState());
22692
22691
  debounceTimeoutId;
22693
22692
  showFormulaState = false;
22693
+ debouncedUpdateSearch;
22694
22694
  findAndReplaceRef = owl.useRef("findAndReplace");
22695
22695
  get hasSearchResult() {
22696
22696
  return this.env.model.getters.getCurrentSelectedMatchIndex() !== null;
@@ -22700,11 +22700,16 @@
22700
22700
  }
22701
22701
  setup() {
22702
22702
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
22703
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
22703
22704
  owl.onMounted(() => this.focusInput());
22704
22705
  owl.onWillUnmount(() => {
22705
22706
  this.env.model.dispatch("CLEAR_SEARCH");
22706
22707
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
22707
22708
  });
22709
+ owl.useEffect(() => {
22710
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22711
+ this.searchFormulas();
22712
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
22708
22713
  }
22709
22714
  onInput(ev) {
22710
22715
  this.state.toSearch = ev.target.value;
@@ -22724,10 +22729,6 @@
22724
22729
  this.replace();
22725
22730
  }
22726
22731
  }
22727
- onFocusSidePanel() {
22728
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
22729
- this.env.model.dispatch("REFRESH_SEARCH");
22730
- }
22731
22732
  searchFormulas() {
22732
22733
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
22733
22734
  show: this.state.searchOptions.searchFormulas,
@@ -22746,13 +22747,6 @@
22746
22747
  searchOptions: this.state.searchOptions,
22747
22748
  });
22748
22749
  }
22749
- debouncedUpdateSearch() {
22750
- clearTimeout(this.debounceTimeoutId);
22751
- this.debounceTimeoutId = setTimeout(() => {
22752
- this.updateSearch();
22753
- this.debounceTimeoutId = undefined;
22754
- }, 400);
22755
- }
22756
22750
  replace() {
22757
22751
  this.env.model.dispatch("REPLACE_SEARCH", {
22758
22752
  replaceWith: this.state.replaceWith,
@@ -38531,6 +38525,7 @@
38531
38525
  searchFormulas: false,
38532
38526
  };
38533
38527
  toSearch = "";
38528
+ isSearchDirty = false;
38534
38529
  // ---------------------------------------------------------------------------
38535
38530
  // Command Handling
38536
38531
  // ---------------------------------------------------------------------------
@@ -38558,14 +38553,21 @@
38558
38553
  case "REDO":
38559
38554
  case "REMOVE_COLUMNS_ROWS":
38560
38555
  case "ADD_COLUMNS_ROWS":
38561
- this.clearSearch();
38556
+ case "EVALUATE_CELLS":
38557
+ case "UPDATE_CELL":
38558
+ this.isSearchDirty = true;
38562
38559
  break;
38563
38560
  case "ACTIVATE_SHEET":
38564
- case "REFRESH_SEARCH":
38565
38561
  this.refreshSearch();
38566
38562
  break;
38567
38563
  }
38568
38564
  }
38565
+ finalize() {
38566
+ if (this.isSearchDirty) {
38567
+ this.refreshSearch();
38568
+ this.isSearchDirty = false;
38569
+ }
38570
+ }
38569
38571
  // ---------------------------------------------------------------------------
38570
38572
  // Getters
38571
38573
  // ---------------------------------------------------------------------------
@@ -38621,6 +38623,11 @@
38621
38623
  if (this.toSearch) {
38622
38624
  for (const cell of Object.values(cells)) {
38623
38625
  const { col, row } = this.getters.getCellPosition(cell.id);
38626
+ const isColHidden = this.getters.isColHidden(sheetId, col);
38627
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
38628
+ if (isColHidden || isRowHidden) {
38629
+ continue;
38630
+ }
38624
38631
  if (cell &&
38625
38632
  this.currentSearchRegex &&
38626
38633
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -45721,6 +45728,11 @@
45721
45728
  .o-sidePanelButton:enabled {
45722
45729
  cursor: pointer;
45723
45730
  }
45731
+
45732
+ .o-sidePanelButton:disabled {
45733
+ color: ${DISABLED_TEXT_COLOR};
45734
+ }
45735
+
45724
45736
  .o-sidePanelButton:last-child {
45725
45737
  margin-right: 0px;
45726
45738
  }
@@ -50515,9 +50527,9 @@
50515
50527
  Object.defineProperty(exports, '__esModule', { value: true });
50516
50528
 
50517
50529
 
50518
- __info__.version = '16.4.0';
50519
- __info__.date = '2023-07-24T06:26:19.494Z';
50520
- __info__.hash = '4eb614c';
50530
+ __info__.version = '16.4.1';
50531
+ __info__.date = '2023-07-26T12:13:04.992Z';
50532
+ __info__.hash = 'e687fa9';
50521
50533
 
50522
50534
 
50523
50535
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);