@odoo/o-spreadsheet 16.1.15 → 16.1.16

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) => {
@@ -34884,6 +34893,7 @@ class FindAndReplacePlugin extends UIPlugin {
34884
34893
  searchFormulas: false,
34885
34894
  };
34886
34895
  this.toSearch = "";
34896
+ this.isSearchDirty = false;
34887
34897
  }
34888
34898
  // ---------------------------------------------------------------------------
34889
34899
  // Command Handling
@@ -34912,14 +34922,21 @@ class FindAndReplacePlugin extends UIPlugin {
34912
34922
  case "REDO":
34913
34923
  case "REMOVE_COLUMNS_ROWS":
34914
34924
  case "ADD_COLUMNS_ROWS":
34915
- this.clearSearch();
34925
+ case "EVALUATE_CELLS":
34926
+ case "UPDATE_CELL":
34927
+ this.isSearchDirty = true;
34916
34928
  break;
34917
34929
  case "ACTIVATE_SHEET":
34918
- case "REFRESH_SEARCH":
34919
34930
  this.refreshSearch();
34920
34931
  break;
34921
34932
  }
34922
34933
  }
34934
+ finalize() {
34935
+ if (this.isSearchDirty) {
34936
+ this.refreshSearch();
34937
+ this.isSearchDirty = false;
34938
+ }
34939
+ }
34923
34940
  // ---------------------------------------------------------------------------
34924
34941
  // Getters
34925
34942
  // ---------------------------------------------------------------------------
@@ -34975,6 +34992,11 @@ class FindAndReplacePlugin extends UIPlugin {
34975
34992
  if (this.toSearch) {
34976
34993
  for (const cell of Object.values(cells)) {
34977
34994
  const { col, row } = this.getters.getCellPosition(cell.id);
34995
+ const isColHidden = this.getters.isColHidden(sheetId, col);
34996
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
34997
+ if (isColHidden || isRowHidden) {
34998
+ continue;
34999
+ }
34978
35000
  if (cell &&
34979
35001
  this.currentSearchRegex &&
34980
35002
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -37417,10 +37439,8 @@ class SortPlugin extends UIPlugin {
37417
37439
  }
37418
37440
  updateCellCommands.push(newCellValues);
37419
37441
  }
37420
- for (const cmd of updateCellCommands) {
37421
- this.dispatch("UPDATE_CELL", cmd);
37422
- }
37423
37442
  }
37443
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37424
37444
  }
37425
37445
  /**
37426
37446
  * Return the distances between main merge cells in the zone.
@@ -39747,6 +39767,11 @@ css /* scss */ `
39747
39767
  .o-sidePanelButton:enabled {
39748
39768
  cursor: pointer;
39749
39769
  }
39770
+
39771
+ .o-sidePanelButton:disabled {
39772
+ color: ${DISABLED_TEXT_COLOR};
39773
+ }
39774
+
39750
39775
  .o-sidePanelButton:last-child {
39751
39776
  margin-right: 0px;
39752
39777
  }
@@ -44284,6 +44309,6 @@ exports.setTranslationMethod = setTranslationMethod;
44284
44309
  exports.tokenize = tokenize;
44285
44310
 
44286
44311
 
44287
- __info__.version = '16.1.15';
44288
- __info__.date = '2023-06-26T14:33:07.859Z';
44289
- __info__.hash = '2b264ad';
44312
+ __info__.version = '16.1.16';
44313
+ __info__.date = '2023-07-26T12:09:57.059Z';
44314
+ __info__.hash = '96f5f09';
@@ -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
  /**
@@ -1589,8 +1591,8 @@ interface PositionDependentCommand {
1589
1591
  col: number;
1590
1592
  row: number;
1591
1593
  }
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">;
1594
+ 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">;
1595
+ 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
1596
  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
1597
  interface UpdateCellCommand extends PositionDependentCommand {
1596
1598
  type: "UPDATE_CELL";
@@ -2035,9 +2037,6 @@ interface UpdateSearchCommand {
2035
2037
  interface ClearSearchCommand {
2036
2038
  type: "CLEAR_SEARCH";
2037
2039
  }
2038
- interface RefreshSearchCommand {
2039
- type: "REFRESH_SEARCH";
2040
- }
2041
2040
  interface SelectSearchPreviousCommand {
2042
2041
  type: "SELECT_SEARCH_PREVIOUS_MATCH";
2043
2042
  }
@@ -2147,7 +2146,7 @@ UpdateCellCommand | UpdateCellPositionCommand | ClearCellCommand | DeleteContent
2147
2146
  | CreateImageOverCommand
2148
2147
  /** FILTERS */
2149
2148
  | 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;
2149
+ 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
2150
  type Command = CoreCommand | LocalCommand;
2152
2151
  /**
2153
2152
  * 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) => {
@@ -34880,6 +34889,7 @@ class FindAndReplacePlugin extends UIPlugin {
34880
34889
  searchFormulas: false,
34881
34890
  };
34882
34891
  this.toSearch = "";
34892
+ this.isSearchDirty = false;
34883
34893
  }
34884
34894
  // ---------------------------------------------------------------------------
34885
34895
  // Command Handling
@@ -34908,14 +34918,21 @@ class FindAndReplacePlugin extends UIPlugin {
34908
34918
  case "REDO":
34909
34919
  case "REMOVE_COLUMNS_ROWS":
34910
34920
  case "ADD_COLUMNS_ROWS":
34911
- this.clearSearch();
34921
+ case "EVALUATE_CELLS":
34922
+ case "UPDATE_CELL":
34923
+ this.isSearchDirty = true;
34912
34924
  break;
34913
34925
  case "ACTIVATE_SHEET":
34914
- case "REFRESH_SEARCH":
34915
34926
  this.refreshSearch();
34916
34927
  break;
34917
34928
  }
34918
34929
  }
34930
+ finalize() {
34931
+ if (this.isSearchDirty) {
34932
+ this.refreshSearch();
34933
+ this.isSearchDirty = false;
34934
+ }
34935
+ }
34919
34936
  // ---------------------------------------------------------------------------
34920
34937
  // Getters
34921
34938
  // ---------------------------------------------------------------------------
@@ -34971,6 +34988,11 @@ class FindAndReplacePlugin extends UIPlugin {
34971
34988
  if (this.toSearch) {
34972
34989
  for (const cell of Object.values(cells)) {
34973
34990
  const { col, row } = this.getters.getCellPosition(cell.id);
34991
+ const isColHidden = this.getters.isColHidden(sheetId, col);
34992
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
34993
+ if (isColHidden || isRowHidden) {
34994
+ continue;
34995
+ }
34974
34996
  if (cell &&
34975
34997
  this.currentSearchRegex &&
34976
34998
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -37413,10 +37435,8 @@ class SortPlugin extends UIPlugin {
37413
37435
  }
37414
37436
  updateCellCommands.push(newCellValues);
37415
37437
  }
37416
- for (const cmd of updateCellCommands) {
37417
- this.dispatch("UPDATE_CELL", cmd);
37418
- }
37419
37438
  }
37439
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37420
37440
  }
37421
37441
  /**
37422
37442
  * Return the distances between main merge cells in the zone.
@@ -39743,6 +39763,11 @@ css /* scss */ `
39743
39763
  .o-sidePanelButton:enabled {
39744
39764
  cursor: pointer;
39745
39765
  }
39766
+
39767
+ .o-sidePanelButton:disabled {
39768
+ color: ${DISABLED_TEXT_COLOR};
39769
+ }
39770
+
39746
39771
  .o-sidePanelButton:last-child {
39747
39772
  margin-right: 0px;
39748
39773
  }
@@ -44252,6 +44277,6 @@ function addFunction(functionName, functionDescription) {
44252
44277
  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
44278
 
44254
44279
 
44255
- __info__.version = '16.1.15';
44256
- __info__.date = '2023-06-26T14:33:07.859Z';
44257
- __info__.hash = '2b264ad';
44280
+ __info__.version = '16.1.16';
44281
+ __info__.date = '2023-07-26T12:09:57.059Z';
44282
+ __info__.hash = '96f5f09';
@@ -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";
@@ -3456,7 +3456,6 @@
3456
3456
  "SET_VIEWPORT_OFFSET",
3457
3457
  "SELECT_SEARCH_NEXT_MATCH",
3458
3458
  "SELECT_SEARCH_PREVIOUS_MATCH",
3459
- "REFRESH_SEARCH",
3460
3459
  "UPDATE_SEARCH",
3461
3460
  "CLEAR_SEARCH",
3462
3461
  "EVALUATE_CELLS",
@@ -5964,7 +5963,7 @@
5964
5963
  }
5965
5964
  }
5966
5965
  &.disabled {
5967
- color: ${MENU_ITEM_DISABLED_COLOR};
5966
+ color: ${DISABLED_TEXT_COLOR};
5968
5967
  cursor: not-allowed;
5969
5968
  }
5970
5969
  }
@@ -21716,11 +21715,16 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
21716
21715
  }
21717
21716
  setup() {
21718
21717
  this.showFormulaState = this.env.model.getters.shouldShowFormulas();
21718
+ this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
21719
21719
  owl.onMounted(() => this.focusInput());
21720
21720
  owl.onWillUnmount(() => {
21721
21721
  this.env.model.dispatch("CLEAR_SEARCH");
21722
21722
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
21723
21723
  });
21724
+ owl.useEffect(() => {
21725
+ this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21726
+ this.searchFormulas();
21727
+ }, () => [this.env.model.getters.shouldShowFormulas()]);
21724
21728
  }
21725
21729
  onInput(ev) {
21726
21730
  this.state.toSearch = ev.target.value;
@@ -21740,10 +21744,6 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
21740
21744
  this.replace();
21741
21745
  }
21742
21746
  }
21743
- onFocusSidePanel() {
21744
- this.state.searchOptions.searchFormulas = this.env.model.getters.shouldShowFormulas();
21745
- this.env.model.dispatch("REFRESH_SEARCH");
21746
- }
21747
21747
  searchFormulas() {
21748
21748
  this.env.model.dispatch("SET_FORMULA_VISIBILITY", {
21749
21749
  show: this.state.searchOptions.searchFormulas,
@@ -21762,13 +21762,6 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
21762
21762
  searchOptions: this.state.searchOptions,
21763
21763
  });
21764
21764
  }
21765
- debouncedUpdateSearch() {
21766
- clearTimeout(this.debounceTimeoutId);
21767
- this.debounceTimeoutId = setTimeout(() => {
21768
- this.updateSearch();
21769
- this.debounceTimeoutId = undefined;
21770
- }, 400);
21771
- }
21772
21765
  replace() {
21773
21766
  this.env.model.dispatch("REPLACE_SEARCH", {
21774
21767
  replaceWith: this.state.replaceWith,
@@ -22272,6 +22265,14 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
22272
22265
  if (dirY < 0) {
22273
22266
  this.dnd.y = dndInitialY + figure.height * fraction;
22274
22267
  }
22268
+ if (this.dnd.x < 0) {
22269
+ this.dnd.width += this.dnd.x;
22270
+ this.dnd.x = 0;
22271
+ }
22272
+ if (this.dnd.y < 0) {
22273
+ this.dnd.height += this.dnd.y;
22274
+ this.dnd.y = 0;
22275
+ }
22275
22276
  };
22276
22277
  }
22277
22278
  else {
@@ -22287,6 +22288,14 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
22287
22288
  if (dirY < 0) {
22288
22289
  this.dnd.y = dndInitialY - deltaY;
22289
22290
  }
22291
+ if (this.dnd.x < 0) {
22292
+ this.dnd.width += this.dnd.x;
22293
+ this.dnd.x = 0;
22294
+ }
22295
+ if (this.dnd.y < 0) {
22296
+ this.dnd.height += this.dnd.y;
22297
+ this.dnd.y = 0;
22298
+ }
22290
22299
  };
22291
22300
  }
22292
22301
  const onMouseUp = (ev) => {
@@ -34881,6 +34890,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
34881
34890
  searchFormulas: false,
34882
34891
  };
34883
34892
  this.toSearch = "";
34893
+ this.isSearchDirty = false;
34884
34894
  }
34885
34895
  // ---------------------------------------------------------------------------
34886
34896
  // Command Handling
@@ -34909,14 +34919,21 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
34909
34919
  case "REDO":
34910
34920
  case "REMOVE_COLUMNS_ROWS":
34911
34921
  case "ADD_COLUMNS_ROWS":
34912
- this.clearSearch();
34922
+ case "EVALUATE_CELLS":
34923
+ case "UPDATE_CELL":
34924
+ this.isSearchDirty = true;
34913
34925
  break;
34914
34926
  case "ACTIVATE_SHEET":
34915
- case "REFRESH_SEARCH":
34916
34927
  this.refreshSearch();
34917
34928
  break;
34918
34929
  }
34919
34930
  }
34931
+ finalize() {
34932
+ if (this.isSearchDirty) {
34933
+ this.refreshSearch();
34934
+ this.isSearchDirty = false;
34935
+ }
34936
+ }
34920
34937
  // ---------------------------------------------------------------------------
34921
34938
  // Getters
34922
34939
  // ---------------------------------------------------------------------------
@@ -34972,6 +34989,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
34972
34989
  if (this.toSearch) {
34973
34990
  for (const cell of Object.values(cells)) {
34974
34991
  const { col, row } = this.getters.getCellPosition(cell.id);
34992
+ const isColHidden = this.getters.isColHidden(sheetId, col);
34993
+ const isRowHidden = this.getters.isRowHidden(sheetId, row);
34994
+ if (isColHidden || isRowHidden) {
34995
+ continue;
34996
+ }
34975
34997
  if (cell &&
34976
34998
  this.currentSearchRegex &&
34977
34999
  this.currentSearchRegex.test(this.getSearchableString({ sheetId, col, row }))) {
@@ -37414,10 +37436,8 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
37414
37436
  }
37415
37437
  updateCellCommands.push(newCellValues);
37416
37438
  }
37417
- for (const cmd of updateCellCommands) {
37418
- this.dispatch("UPDATE_CELL", cmd);
37419
- }
37420
37439
  }
37440
+ updateCellCommands.forEach((cmdPayload) => this.dispatch("UPDATE_CELL", cmdPayload));
37421
37441
  }
37422
37442
  /**
37423
37443
  * Return the distances between main merge cells in the zone.
@@ -39744,6 +39764,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
39744
39764
  .o-sidePanelButton:enabled {
39745
39765
  cursor: pointer;
39746
39766
  }
39767
+
39768
+ .o-sidePanelButton:disabled {
39769
+ color: ${DISABLED_TEXT_COLOR};
39770
+ }
39771
+
39747
39772
  .o-sidePanelButton:last-child {
39748
39773
  margin-right: 0px;
39749
39774
  }
@@ -44283,9 +44308,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
44283
44308
  Object.defineProperty(exports, '__esModule', { value: true });
44284
44309
 
44285
44310
 
44286
- __info__.version = '16.1.15';
44287
- __info__.date = '2023-06-26T14:33:07.859Z';
44288
- __info__.hash = '2b264ad';
44311
+ __info__.version = '16.1.16';
44312
+ __info__.date = '2023-07-26T12:09:57.059Z';
44313
+ __info__.hash = '96f5f09';
44289
44314
 
44290
44315
 
44291
44316
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);