@odoo/o-spreadsheet 18.3.49 → 18.3.51

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.
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 18.3.49
6
- * @date 2026-05-27T05:57:05.809Z
7
- * @hash fc34456
5
+ * @version 18.3.51
6
+ * @date 2026-06-17T08:49:41.496Z
7
+ * @hash 233f3ea
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -4075,6 +4075,7 @@ function detectLink(value) {
4075
4075
  //#endregion
4076
4076
  //#region src/helpers/format/format_tokenizer.ts
4077
4077
  function tokenizeFormat(str) {
4078
+ str = str.replace(/\s/g, " ");
4078
4079
  const chars = new TokenizingChars(str);
4079
4080
  const result = [];
4080
4081
  let currentFormatPart = [];
@@ -32851,11 +32852,10 @@ const INSERT_TABLE = (env) => {
32851
32852
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
32852
32853
  };
32853
32854
  const DELETE_SELECTED_TABLE = (env) => {
32854
- const position = env.model.getters.getActivePosition();
32855
- const table = env.model.getters.getTable(position);
32855
+ const table = env.model.getters.getFirstTableInSelection();
32856
32856
  if (!table) return;
32857
32857
  env.model.dispatch("REMOVE_TABLE", {
32858
- sheetId: position.sheetId,
32858
+ sheetId: env.model.getters.getActiveSheetId(),
32859
32859
  target: [table.range.zone]
32860
32860
  });
32861
32861
  };
@@ -42013,9 +42013,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42013
42013
  allSheetsMatches = [];
42014
42014
  activeSheetMatches = [];
42015
42015
  specificRangeMatches = [];
42016
+ selectedMatchPosition = null;
42016
42017
  currentSearchRegex = null;
42017
42018
  initialShowFormulaState;
42018
- preserveSelectedMatchIndex = false;
42019
42019
  irreplaceableMatchCount = 0;
42020
42020
  isSearchDirty = false;
42021
42021
  shouldFinalizeUpdateSelection = false;
@@ -42137,7 +42137,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42137
42137
  */
42138
42138
  _updateSearch(toSearch, searchOptions) {
42139
42139
  this.searchOptions = searchOptions;
42140
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
42140
+ if (toSearch !== this.toSearch) {
42141
+ this.selectedMatchIndex = null;
42142
+ this.selectedMatchPosition = null;
42143
+ }
42141
42144
  this.toSearch = toSearch;
42142
42145
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
42143
42146
  this.refreshSearch({
@@ -42149,8 +42152,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42149
42152
  * refresh the matches according to the current search options
42150
42153
  */
42151
42154
  refreshSearch(options) {
42152
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
42153
42155
  this.findMatches();
42156
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
42157
+ this.selectedMatchIndex = null;
42158
+ this.selectedMatchPosition = null;
42159
+ } else {
42160
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
42161
+ if (index !== -1) this.selectedMatchIndex = index;
42162
+ }
42154
42163
  this.selectNextCell(0, options);
42155
42164
  }
42156
42165
  getSheetsInSearchOrder() {
@@ -42218,6 +42227,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42218
42227
  const matches = this.searchMatches;
42219
42228
  if (!matches.length) {
42220
42229
  this.selectedMatchIndex = null;
42230
+ this.selectedMatchPosition = null;
42221
42231
  return;
42222
42232
  }
42223
42233
  let nextIndex;
@@ -42231,14 +42241,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42231
42241
  } else nextIndex = this.selectedMatchIndex + indexChange;
42232
42242
  nextIndex = (nextIndex + matches.length) % matches.length;
42233
42243
  this.selectedMatchIndex = nextIndex;
42244
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
42234
42245
  const selectedMatch = matches[nextIndex];
42235
42246
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
42236
- this.preserveSelectedMatchIndex = true;
42237
42247
  this.model.dispatch("ACTIVATE_SHEET", {
42238
42248
  sheetIdFrom: this.getters.getActiveSheetId(),
42239
42249
  sheetIdTo: selectedMatch.sheetId
42240
42250
  });
42241
- this.preserveSelectedMatchIndex = false;
42242
42251
  this.isSearchDirty = false;
42243
42252
  }
42244
42253
  this.model.selection.getBackToDefault();
@@ -42249,7 +42258,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42249
42258
  */
42250
42259
  replace() {
42251
42260
  if (this.selectedMatchIndex === null) return;
42252
- this.preserveSelectedMatchIndex = true;
42253
42261
  this.shouldFinalizeUpdateSelection = true;
42254
42262
  this.model.dispatch("REPLACE_SEARCH", {
42255
42263
  searchString: this.toSearch,
@@ -42257,7 +42265,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42257
42265
  matches: [this.searchMatches[this.selectedMatchIndex]],
42258
42266
  searchOptions: this.searchOptions
42259
42267
  });
42260
- this.preserveSelectedMatchIndex = false;
42261
42268
  }
42262
42269
  /**
42263
42270
  * Apply the replace function to all the matches one time.
@@ -46879,8 +46886,12 @@ var CellComposerStore = class extends AbstractComposerStore {
46879
46886
  }
46880
46887
  stopEdition(direction) {
46881
46888
  if (this.canStopEdition()) {
46889
+ const { col, row } = this.currentEditedCell;
46882
46890
  this._stopEdition();
46883
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
46891
+ if (direction) {
46892
+ this.model.selection.selectCell(col, row);
46893
+ this.model.selection.moveAnchorCell(direction, 1);
46894
+ }
46884
46895
  return;
46885
46896
  }
46886
46897
  const editedCell = this.currentEditedCell;
@@ -59166,9 +59177,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59166
59177
  this.refreshPivot(cmd.id);
59167
59178
  break;
59168
59179
  case "ADD_PIVOT":
59180
+ this.unusedPivots?.push(cmd.pivotId);
59169
59181
  this.setupPivot(cmd.pivotId);
59170
59182
  break;
59171
59183
  case "DUPLICATE_PIVOT":
59184
+ this.unusedPivots?.push(cmd.newPivotId);
59172
59185
  this.setupPivot(cmd.newPivotId);
59173
59186
  break;
59174
59187
  case "UPDATE_PIVOT":
@@ -59348,8 +59361,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59348
59361
  }
59349
59362
  }
59350
59363
  for (const pivotId of this.getters.getPivotIds()) {
59351
- const pivot = this.getters.getPivot(pivotId);
59352
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
59364
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
59365
+ for (const measure of pivot.measures) if (measure.computedBy) {
59353
59366
  const { sheetId } = measure.computedBy;
59354
59367
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
59355
59368
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -72452,6 +72465,6 @@ exports.stores = stores;
72452
72465
  exports.tokenColors = tokenColors;
72453
72466
  exports.tokenize = tokenize;
72454
72467
 
72455
- __info__.version = "18.3.49";
72456
- __info__.date = "2026-05-27T05:57:05.809Z";
72457
- __info__.hash = "fc34456";
72468
+ __info__.version = "18.3.51";
72469
+ __info__.date = "2026-06-17T08:49:41.496Z";
72470
+ __info__.hash = "233f3ea";
@@ -2,9 +2,9 @@
2
2
  /*
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 18.3.49
6
- * @date 2026-05-27T05:57:07.478Z
7
- * @hash fc34456
5
+ * @version 18.3.51
6
+ * @date 2026-06-17T08:49:43.226Z
7
+ * @hash 233f3ea
8
8
  */
9
9
  /* Originates from src/components/top_bar/top_bar.scss */
10
10
  @media (max-width: 900px) {
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 18.3.49
6
- * @date 2026-05-27T05:57:05.809Z
7
- * @hash fc34456
5
+ * @version 18.3.51
6
+ * @date 2026-06-17T08:49:41.496Z
7
+ * @hash 233f3ea
8
8
  */
9
9
 
10
10
  import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, xml } from "@odoo/owl";
@@ -4074,6 +4074,7 @@ function detectLink(value) {
4074
4074
  //#endregion
4075
4075
  //#region src/helpers/format/format_tokenizer.ts
4076
4076
  function tokenizeFormat(str) {
4077
+ str = str.replace(/\s/g, " ");
4077
4078
  const chars = new TokenizingChars(str);
4078
4079
  const result = [];
4079
4080
  let currentFormatPart = [];
@@ -32850,11 +32851,10 @@ const INSERT_TABLE = (env) => {
32850
32851
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
32851
32852
  };
32852
32853
  const DELETE_SELECTED_TABLE = (env) => {
32853
- const position = env.model.getters.getActivePosition();
32854
- const table = env.model.getters.getTable(position);
32854
+ const table = env.model.getters.getFirstTableInSelection();
32855
32855
  if (!table) return;
32856
32856
  env.model.dispatch("REMOVE_TABLE", {
32857
- sheetId: position.sheetId,
32857
+ sheetId: env.model.getters.getActiveSheetId(),
32858
32858
  target: [table.range.zone]
32859
32859
  });
32860
32860
  };
@@ -42012,9 +42012,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42012
42012
  allSheetsMatches = [];
42013
42013
  activeSheetMatches = [];
42014
42014
  specificRangeMatches = [];
42015
+ selectedMatchPosition = null;
42015
42016
  currentSearchRegex = null;
42016
42017
  initialShowFormulaState;
42017
- preserveSelectedMatchIndex = false;
42018
42018
  irreplaceableMatchCount = 0;
42019
42019
  isSearchDirty = false;
42020
42020
  shouldFinalizeUpdateSelection = false;
@@ -42136,7 +42136,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42136
42136
  */
42137
42137
  _updateSearch(toSearch, searchOptions) {
42138
42138
  this.searchOptions = searchOptions;
42139
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
42139
+ if (toSearch !== this.toSearch) {
42140
+ this.selectedMatchIndex = null;
42141
+ this.selectedMatchPosition = null;
42142
+ }
42140
42143
  this.toSearch = toSearch;
42141
42144
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
42142
42145
  this.refreshSearch({
@@ -42148,8 +42151,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42148
42151
  * refresh the matches according to the current search options
42149
42152
  */
42150
42153
  refreshSearch(options) {
42151
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
42152
42154
  this.findMatches();
42155
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
42156
+ this.selectedMatchIndex = null;
42157
+ this.selectedMatchPosition = null;
42158
+ } else {
42159
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
42160
+ if (index !== -1) this.selectedMatchIndex = index;
42161
+ }
42153
42162
  this.selectNextCell(0, options);
42154
42163
  }
42155
42164
  getSheetsInSearchOrder() {
@@ -42217,6 +42226,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42217
42226
  const matches = this.searchMatches;
42218
42227
  if (!matches.length) {
42219
42228
  this.selectedMatchIndex = null;
42229
+ this.selectedMatchPosition = null;
42220
42230
  return;
42221
42231
  }
42222
42232
  let nextIndex;
@@ -42230,14 +42240,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42230
42240
  } else nextIndex = this.selectedMatchIndex + indexChange;
42231
42241
  nextIndex = (nextIndex + matches.length) % matches.length;
42232
42242
  this.selectedMatchIndex = nextIndex;
42243
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
42233
42244
  const selectedMatch = matches[nextIndex];
42234
42245
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
42235
- this.preserveSelectedMatchIndex = true;
42236
42246
  this.model.dispatch("ACTIVATE_SHEET", {
42237
42247
  sheetIdFrom: this.getters.getActiveSheetId(),
42238
42248
  sheetIdTo: selectedMatch.sheetId
42239
42249
  });
42240
- this.preserveSelectedMatchIndex = false;
42241
42250
  this.isSearchDirty = false;
42242
42251
  }
42243
42252
  this.model.selection.getBackToDefault();
@@ -42248,7 +42257,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42248
42257
  */
42249
42258
  replace() {
42250
42259
  if (this.selectedMatchIndex === null) return;
42251
- this.preserveSelectedMatchIndex = true;
42252
42260
  this.shouldFinalizeUpdateSelection = true;
42253
42261
  this.model.dispatch("REPLACE_SEARCH", {
42254
42262
  searchString: this.toSearch,
@@ -42256,7 +42264,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
42256
42264
  matches: [this.searchMatches[this.selectedMatchIndex]],
42257
42265
  searchOptions: this.searchOptions
42258
42266
  });
42259
- this.preserveSelectedMatchIndex = false;
42260
42267
  }
42261
42268
  /**
42262
42269
  * Apply the replace function to all the matches one time.
@@ -46878,8 +46885,12 @@ var CellComposerStore = class extends AbstractComposerStore {
46878
46885
  }
46879
46886
  stopEdition(direction) {
46880
46887
  if (this.canStopEdition()) {
46888
+ const { col, row } = this.currentEditedCell;
46881
46889
  this._stopEdition();
46882
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
46890
+ if (direction) {
46891
+ this.model.selection.selectCell(col, row);
46892
+ this.model.selection.moveAnchorCell(direction, 1);
46893
+ }
46883
46894
  return;
46884
46895
  }
46885
46896
  const editedCell = this.currentEditedCell;
@@ -58981,9 +58992,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
58981
58992
  this.refreshPivot(cmd.id);
58982
58993
  break;
58983
58994
  case "ADD_PIVOT":
58995
+ this.unusedPivots?.push(cmd.pivotId);
58984
58996
  this.setupPivot(cmd.pivotId);
58985
58997
  break;
58986
58998
  case "DUPLICATE_PIVOT":
58999
+ this.unusedPivots?.push(cmd.newPivotId);
58987
59000
  this.setupPivot(cmd.newPivotId);
58988
59001
  break;
58989
59002
  case "UPDATE_PIVOT":
@@ -59163,8 +59176,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
59163
59176
  }
59164
59177
  }
59165
59178
  for (const pivotId of this.getters.getPivotIds()) {
59166
- const pivot = this.getters.getPivot(pivotId);
59167
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
59179
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
59180
+ for (const measure of pivot.measures) if (measure.computedBy) {
59168
59181
  const { sheetId } = measure.computedBy;
59169
59182
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
59170
59183
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -72220,6 +72233,6 @@ const chartHelpers = {
72220
72233
  //#endregion
72221
72234
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
72222
72235
 
72223
- __info__.version = "18.3.49";
72224
- __info__.date = "2026-05-27T05:57:05.809Z";
72225
- __info__.hash = "fc34456";
72236
+ __info__.version = "18.3.51";
72237
+ __info__.date = "2026-06-17T08:49:41.496Z";
72238
+ __info__.hash = "233f3ea";
@@ -2,9 +2,9 @@
2
2
  /**
3
3
  * This file is generated by o-spreadsheet build tools. Do not edit it.
4
4
  * @see https://github.com/odoo/o-spreadsheet
5
- * @version 18.3.49
6
- * @date 2026-05-27T05:57:05.809Z
7
- * @hash fc34456
5
+ * @version 18.3.51
6
+ * @date 2026-06-17T08:49:41.496Z
7
+ * @hash 233f3ea
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -4076,6 +4076,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4076
4076
  //#endregion
4077
4077
  //#region src/helpers/format/format_tokenizer.ts
4078
4078
  function tokenizeFormat(str) {
4079
+ str = str.replace(/\s/g, " ");
4079
4080
  const chars = new TokenizingChars(str);
4080
4081
  const result = [];
4081
4082
  let currentFormatPart = [];
@@ -32852,11 +32853,10 @@ stores.inject(MyMetaStore, storeInstance);
32852
32853
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
32853
32854
  };
32854
32855
  const DELETE_SELECTED_TABLE = (env) => {
32855
- const position = env.model.getters.getActivePosition();
32856
- const table = env.model.getters.getTable(position);
32856
+ const table = env.model.getters.getFirstTableInSelection();
32857
32857
  if (!table) return;
32858
32858
  env.model.dispatch("REMOVE_TABLE", {
32859
- sheetId: position.sheetId,
32859
+ sheetId: env.model.getters.getActiveSheetId(),
32860
32860
  target: [table.range.zone]
32861
32861
  });
32862
32862
  };
@@ -42014,9 +42014,9 @@ stores.inject(MyMetaStore, storeInstance);
42014
42014
  allSheetsMatches = [];
42015
42015
  activeSheetMatches = [];
42016
42016
  specificRangeMatches = [];
42017
+ selectedMatchPosition = null;
42017
42018
  currentSearchRegex = null;
42018
42019
  initialShowFormulaState;
42019
- preserveSelectedMatchIndex = false;
42020
42020
  irreplaceableMatchCount = 0;
42021
42021
  isSearchDirty = false;
42022
42022
  shouldFinalizeUpdateSelection = false;
@@ -42138,7 +42138,10 @@ stores.inject(MyMetaStore, storeInstance);
42138
42138
  */
42139
42139
  _updateSearch(toSearch, searchOptions) {
42140
42140
  this.searchOptions = searchOptions;
42141
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
42141
+ if (toSearch !== this.toSearch) {
42142
+ this.selectedMatchIndex = null;
42143
+ this.selectedMatchPosition = null;
42144
+ }
42142
42145
  this.toSearch = toSearch;
42143
42146
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
42144
42147
  this.refreshSearch({
@@ -42150,8 +42153,14 @@ stores.inject(MyMetaStore, storeInstance);
42150
42153
  * refresh the matches according to the current search options
42151
42154
  */
42152
42155
  refreshSearch(options) {
42153
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
42154
42156
  this.findMatches();
42157
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
42158
+ this.selectedMatchIndex = null;
42159
+ this.selectedMatchPosition = null;
42160
+ } else {
42161
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
42162
+ if (index !== -1) this.selectedMatchIndex = index;
42163
+ }
42155
42164
  this.selectNextCell(0, options);
42156
42165
  }
42157
42166
  getSheetsInSearchOrder() {
@@ -42219,6 +42228,7 @@ stores.inject(MyMetaStore, storeInstance);
42219
42228
  const matches = this.searchMatches;
42220
42229
  if (!matches.length) {
42221
42230
  this.selectedMatchIndex = null;
42231
+ this.selectedMatchPosition = null;
42222
42232
  return;
42223
42233
  }
42224
42234
  let nextIndex;
@@ -42232,14 +42242,13 @@ stores.inject(MyMetaStore, storeInstance);
42232
42242
  } else nextIndex = this.selectedMatchIndex + indexChange;
42233
42243
  nextIndex = (nextIndex + matches.length) % matches.length;
42234
42244
  this.selectedMatchIndex = nextIndex;
42245
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
42235
42246
  const selectedMatch = matches[nextIndex];
42236
42247
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
42237
- this.preserveSelectedMatchIndex = true;
42238
42248
  this.model.dispatch("ACTIVATE_SHEET", {
42239
42249
  sheetIdFrom: this.getters.getActiveSheetId(),
42240
42250
  sheetIdTo: selectedMatch.sheetId
42241
42251
  });
42242
- this.preserveSelectedMatchIndex = false;
42243
42252
  this.isSearchDirty = false;
42244
42253
  }
42245
42254
  this.model.selection.getBackToDefault();
@@ -42250,7 +42259,6 @@ stores.inject(MyMetaStore, storeInstance);
42250
42259
  */
42251
42260
  replace() {
42252
42261
  if (this.selectedMatchIndex === null) return;
42253
- this.preserveSelectedMatchIndex = true;
42254
42262
  this.shouldFinalizeUpdateSelection = true;
42255
42263
  this.model.dispatch("REPLACE_SEARCH", {
42256
42264
  searchString: this.toSearch,
@@ -42258,7 +42266,6 @@ stores.inject(MyMetaStore, storeInstance);
42258
42266
  matches: [this.searchMatches[this.selectedMatchIndex]],
42259
42267
  searchOptions: this.searchOptions
42260
42268
  });
42261
- this.preserveSelectedMatchIndex = false;
42262
42269
  }
42263
42270
  /**
42264
42271
  * Apply the replace function to all the matches one time.
@@ -46880,8 +46887,12 @@ stores.inject(MyMetaStore, storeInstance);
46880
46887
  }
46881
46888
  stopEdition(direction) {
46882
46889
  if (this.canStopEdition()) {
46890
+ const { col, row } = this.currentEditedCell;
46883
46891
  this._stopEdition();
46884
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
46892
+ if (direction) {
46893
+ this.model.selection.selectCell(col, row);
46894
+ this.model.selection.moveAnchorCell(direction, 1);
46895
+ }
46885
46896
  return;
46886
46897
  }
46887
46898
  const editedCell = this.currentEditedCell;
@@ -58983,9 +58994,11 @@ stores.inject(MyMetaStore, storeInstance);
58983
58994
  this.refreshPivot(cmd.id);
58984
58995
  break;
58985
58996
  case "ADD_PIVOT":
58997
+ this.unusedPivots?.push(cmd.pivotId);
58986
58998
  this.setupPivot(cmd.pivotId);
58987
58999
  break;
58988
59000
  case "DUPLICATE_PIVOT":
59001
+ this.unusedPivots?.push(cmd.newPivotId);
58989
59002
  this.setupPivot(cmd.newPivotId);
58990
59003
  break;
58991
59004
  case "UPDATE_PIVOT":
@@ -59165,8 +59178,8 @@ stores.inject(MyMetaStore, storeInstance);
59165
59178
  }
59166
59179
  }
59167
59180
  for (const pivotId of this.getters.getPivotIds()) {
59168
- const pivot = this.getters.getPivot(pivotId);
59169
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
59181
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
59182
+ for (const measure of pivot.measures) if (measure.computedBy) {
59170
59183
  const { sheetId } = measure.computedBy;
59171
59184
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
59172
59185
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -72269,8 +72282,8 @@ exports.stores = stores;
72269
72282
  exports.tokenColors = tokenColors;
72270
72283
  exports.tokenize = tokenize;
72271
72284
 
72272
- __info__.version = "18.3.49";
72273
- __info__.date = "2026-05-27T05:57:05.809Z";
72274
- __info__.hash = "fc34456";
72285
+ __info__.version = "18.3.51";
72286
+ __info__.date = "2026-06-17T08:49:41.496Z";
72287
+ __info__.hash = "233f3ea";
72275
72288
 
72276
72289
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);