@odoo/o-spreadsheet 18.2.54 → 18.2.56

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.2.54
6
- * @date 2026-05-27T05:56:03.418Z
7
- * @hash bd06c51
5
+ * @version 18.2.56
6
+ * @date 2026-06-17T08:50:15.644Z
7
+ * @hash 17ea4a6
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -4047,6 +4047,7 @@ function detectLink(value) {
4047
4047
  //#endregion
4048
4048
  //#region src/helpers/format/format_tokenizer.ts
4049
4049
  function tokenizeFormat(str) {
4050
+ str = str.replace(/\s/g, " ");
4050
4051
  const chars = new TokenizingChars(str);
4051
4052
  const result = [];
4052
4053
  let currentFormatPart = [];
@@ -30710,11 +30711,10 @@ const INSERT_TABLE = (env) => {
30710
30711
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
30711
30712
  };
30712
30713
  const DELETE_SELECTED_TABLE = (env) => {
30713
- const position = env.model.getters.getActivePosition();
30714
- const table = env.model.getters.getTable(position);
30714
+ const table = env.model.getters.getFirstTableInSelection();
30715
30715
  if (!table) return;
30716
30716
  env.model.dispatch("REMOVE_TABLE", {
30717
- sheetId: position.sheetId,
30717
+ sheetId: env.model.getters.getActiveSheetId(),
30718
30718
  target: [table.range.zone]
30719
30719
  });
30720
30720
  };
@@ -39489,9 +39489,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39489
39489
  allSheetsMatches = [];
39490
39490
  activeSheetMatches = [];
39491
39491
  specificRangeMatches = [];
39492
+ selectedMatchPosition = null;
39492
39493
  currentSearchRegex = null;
39493
39494
  initialShowFormulaState;
39494
- preserveSelectedMatchIndex = false;
39495
39495
  irreplaceableMatchCount = 0;
39496
39496
  isSearchDirty = false;
39497
39497
  shouldFinalizeUpdateSelection = false;
@@ -39610,7 +39610,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39610
39610
  */
39611
39611
  _updateSearch(toSearch, searchOptions) {
39612
39612
  this.searchOptions = searchOptions;
39613
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
39613
+ if (toSearch !== this.toSearch) {
39614
+ this.selectedMatchIndex = null;
39615
+ this.selectedMatchPosition = null;
39616
+ }
39614
39617
  this.toSearch = toSearch;
39615
39618
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
39616
39619
  this.refreshSearch({
@@ -39622,8 +39625,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39622
39625
  * refresh the matches according to the current search options
39623
39626
  */
39624
39627
  refreshSearch(options) {
39625
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
39626
39628
  this.findMatches();
39629
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
39630
+ this.selectedMatchIndex = null;
39631
+ this.selectedMatchPosition = null;
39632
+ } else {
39633
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
39634
+ if (index !== -1) this.selectedMatchIndex = index;
39635
+ }
39627
39636
  this.selectNextCell(0, options);
39628
39637
  }
39629
39638
  getSheetsInSearchOrder() {
@@ -39691,6 +39700,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39691
39700
  const matches = this.searchMatches;
39692
39701
  if (!matches.length) {
39693
39702
  this.selectedMatchIndex = null;
39703
+ this.selectedMatchPosition = null;
39694
39704
  return;
39695
39705
  }
39696
39706
  let nextIndex;
@@ -39704,14 +39714,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39704
39714
  } else nextIndex = this.selectedMatchIndex + indexChange;
39705
39715
  nextIndex = (nextIndex + matches.length) % matches.length;
39706
39716
  this.selectedMatchIndex = nextIndex;
39717
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
39707
39718
  const selectedMatch = matches[nextIndex];
39708
39719
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
39709
- this.preserveSelectedMatchIndex = true;
39710
39720
  this.model.dispatch("ACTIVATE_SHEET", {
39711
39721
  sheetIdFrom: this.getters.getActiveSheetId(),
39712
39722
  sheetIdTo: selectedMatch.sheetId
39713
39723
  });
39714
- this.preserveSelectedMatchIndex = false;
39715
39724
  this.isSearchDirty = false;
39716
39725
  }
39717
39726
  this.model.selection.getBackToDefault();
@@ -39722,7 +39731,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39722
39731
  */
39723
39732
  replace() {
39724
39733
  if (this.selectedMatchIndex === null) return;
39725
- this.preserveSelectedMatchIndex = true;
39726
39734
  this.shouldFinalizeUpdateSelection = true;
39727
39735
  this.model.dispatch("REPLACE_SEARCH", {
39728
39736
  searchString: this.toSearch,
@@ -39730,7 +39738,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39730
39738
  matches: [this.searchMatches[this.selectedMatchIndex]],
39731
39739
  searchOptions: this.searchOptions
39732
39740
  });
39733
- this.preserveSelectedMatchIndex = false;
39734
39741
  }
39735
39742
  /**
39736
39743
  * Apply the replace function to all the matches one time.
@@ -44193,8 +44200,12 @@ var CellComposerStore = class extends AbstractComposerStore {
44193
44200
  }
44194
44201
  stopEdition(direction) {
44195
44202
  if (this.canStopEdition()) {
44203
+ const { col, row } = this.currentEditedCell;
44196
44204
  this._stopEdition();
44197
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
44205
+ if (direction) {
44206
+ this.model.selection.selectCell(col, row);
44207
+ this.model.selection.moveAnchorCell(direction, 1);
44208
+ }
44198
44209
  return;
44199
44210
  }
44200
44211
  const editedCell = this.currentEditedCell;
@@ -56534,9 +56545,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56534
56545
  this.refreshPivot(cmd.id);
56535
56546
  break;
56536
56547
  case "ADD_PIVOT":
56548
+ this.unusedPivots?.push(cmd.pivotId);
56537
56549
  this.setupPivot(cmd.pivotId);
56538
56550
  break;
56539
56551
  case "DUPLICATE_PIVOT":
56552
+ this.unusedPivots?.push(cmd.newPivotId);
56540
56553
  this.setupPivot(cmd.newPivotId);
56541
56554
  break;
56542
56555
  case "UPDATE_PIVOT":
@@ -56716,8 +56729,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56716
56729
  }
56717
56730
  }
56718
56731
  for (const pivotId of this.getters.getPivotIds()) {
56719
- const pivot = this.getters.getPivot(pivotId);
56720
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
56732
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
56733
+ for (const measure of pivot.measures) if (measure.computedBy) {
56721
56734
  const { sheetId } = measure.computedBy;
56722
56735
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
56723
56736
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -69166,6 +69179,6 @@ exports.stores = stores;
69166
69179
  exports.tokenColors = tokenColors;
69167
69180
  exports.tokenize = tokenize;
69168
69181
 
69169
- __info__.version = "18.2.54";
69170
- __info__.date = "2026-05-27T05:56:03.418Z";
69171
- __info__.hash = "bd06c51";
69182
+ __info__.version = "18.2.56";
69183
+ __info__.date = "2026-06-17T08:50:15.644Z";
69184
+ __info__.hash = "17ea4a6";
@@ -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.2.54
6
- * @date 2026-05-27T05:56:04.950Z
7
- * @hash bd06c51
5
+ * @version 18.2.56
6
+ * @date 2026-06-17T08:50:17.274Z
7
+ * @hash 17ea4a6
8
8
  */
9
9
  /* Originates from src/components/spreadsheet/spreadsheet.scss */
10
10
  .o-spreadsheet {
@@ -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.2.54
6
- * @date 2026-05-27T05:56:03.418Z
7
- * @hash bd06c51
5
+ * @version 18.2.56
6
+ * @date 2026-06-17T08:50:15.644Z
7
+ * @hash 17ea4a6
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";
@@ -4046,6 +4046,7 @@ function detectLink(value) {
4046
4046
  //#endregion
4047
4047
  //#region src/helpers/format/format_tokenizer.ts
4048
4048
  function tokenizeFormat(str) {
4049
+ str = str.replace(/\s/g, " ");
4049
4050
  const chars = new TokenizingChars(str);
4050
4051
  const result = [];
4051
4052
  let currentFormatPart = [];
@@ -30709,11 +30710,10 @@ const INSERT_TABLE = (env) => {
30709
30710
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
30710
30711
  };
30711
30712
  const DELETE_SELECTED_TABLE = (env) => {
30712
- const position = env.model.getters.getActivePosition();
30713
- const table = env.model.getters.getTable(position);
30713
+ const table = env.model.getters.getFirstTableInSelection();
30714
30714
  if (!table) return;
30715
30715
  env.model.dispatch("REMOVE_TABLE", {
30716
- sheetId: position.sheetId,
30716
+ sheetId: env.model.getters.getActiveSheetId(),
30717
30717
  target: [table.range.zone]
30718
30718
  });
30719
30719
  };
@@ -39488,9 +39488,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39488
39488
  allSheetsMatches = [];
39489
39489
  activeSheetMatches = [];
39490
39490
  specificRangeMatches = [];
39491
+ selectedMatchPosition = null;
39491
39492
  currentSearchRegex = null;
39492
39493
  initialShowFormulaState;
39493
- preserveSelectedMatchIndex = false;
39494
39494
  irreplaceableMatchCount = 0;
39495
39495
  isSearchDirty = false;
39496
39496
  shouldFinalizeUpdateSelection = false;
@@ -39609,7 +39609,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39609
39609
  */
39610
39610
  _updateSearch(toSearch, searchOptions) {
39611
39611
  this.searchOptions = searchOptions;
39612
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
39612
+ if (toSearch !== this.toSearch) {
39613
+ this.selectedMatchIndex = null;
39614
+ this.selectedMatchPosition = null;
39615
+ }
39613
39616
  this.toSearch = toSearch;
39614
39617
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
39615
39618
  this.refreshSearch({
@@ -39621,8 +39624,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39621
39624
  * refresh the matches according to the current search options
39622
39625
  */
39623
39626
  refreshSearch(options) {
39624
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
39625
39627
  this.findMatches();
39628
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
39629
+ this.selectedMatchIndex = null;
39630
+ this.selectedMatchPosition = null;
39631
+ } else {
39632
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
39633
+ if (index !== -1) this.selectedMatchIndex = index;
39634
+ }
39626
39635
  this.selectNextCell(0, options);
39627
39636
  }
39628
39637
  getSheetsInSearchOrder() {
@@ -39690,6 +39699,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39690
39699
  const matches = this.searchMatches;
39691
39700
  if (!matches.length) {
39692
39701
  this.selectedMatchIndex = null;
39702
+ this.selectedMatchPosition = null;
39693
39703
  return;
39694
39704
  }
39695
39705
  let nextIndex;
@@ -39703,14 +39713,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39703
39713
  } else nextIndex = this.selectedMatchIndex + indexChange;
39704
39714
  nextIndex = (nextIndex + matches.length) % matches.length;
39705
39715
  this.selectedMatchIndex = nextIndex;
39716
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
39706
39717
  const selectedMatch = matches[nextIndex];
39707
39718
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
39708
- this.preserveSelectedMatchIndex = true;
39709
39719
  this.model.dispatch("ACTIVATE_SHEET", {
39710
39720
  sheetIdFrom: this.getters.getActiveSheetId(),
39711
39721
  sheetIdTo: selectedMatch.sheetId
39712
39722
  });
39713
- this.preserveSelectedMatchIndex = false;
39714
39723
  this.isSearchDirty = false;
39715
39724
  }
39716
39725
  this.model.selection.getBackToDefault();
@@ -39721,7 +39730,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39721
39730
  */
39722
39731
  replace() {
39723
39732
  if (this.selectedMatchIndex === null) return;
39724
- this.preserveSelectedMatchIndex = true;
39725
39733
  this.shouldFinalizeUpdateSelection = true;
39726
39734
  this.model.dispatch("REPLACE_SEARCH", {
39727
39735
  searchString: this.toSearch,
@@ -39729,7 +39737,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
39729
39737
  matches: [this.searchMatches[this.selectedMatchIndex]],
39730
39738
  searchOptions: this.searchOptions
39731
39739
  });
39732
- this.preserveSelectedMatchIndex = false;
39733
39740
  }
39734
39741
  /**
39735
39742
  * Apply the replace function to all the matches one time.
@@ -44192,8 +44199,12 @@ var CellComposerStore = class extends AbstractComposerStore {
44192
44199
  }
44193
44200
  stopEdition(direction) {
44194
44201
  if (this.canStopEdition()) {
44202
+ const { col, row } = this.currentEditedCell;
44195
44203
  this._stopEdition();
44196
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
44204
+ if (direction) {
44205
+ this.model.selection.selectCell(col, row);
44206
+ this.model.selection.moveAnchorCell(direction, 1);
44207
+ }
44197
44208
  return;
44198
44209
  }
44199
44210
  const editedCell = this.currentEditedCell;
@@ -56349,9 +56360,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56349
56360
  this.refreshPivot(cmd.id);
56350
56361
  break;
56351
56362
  case "ADD_PIVOT":
56363
+ this.unusedPivots?.push(cmd.pivotId);
56352
56364
  this.setupPivot(cmd.pivotId);
56353
56365
  break;
56354
56366
  case "DUPLICATE_PIVOT":
56367
+ this.unusedPivots?.push(cmd.newPivotId);
56355
56368
  this.setupPivot(cmd.newPivotId);
56356
56369
  break;
56357
56370
  case "UPDATE_PIVOT":
@@ -56531,8 +56544,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
56531
56544
  }
56532
56545
  }
56533
56546
  for (const pivotId of this.getters.getPivotIds()) {
56534
- const pivot = this.getters.getPivot(pivotId);
56535
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
56547
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
56548
+ for (const measure of pivot.measures) if (measure.computedBy) {
56536
56549
  const { sheetId } = measure.computedBy;
56537
56550
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
56538
56551
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -68935,6 +68948,6 @@ const chartHelpers = {
68935
68948
  //#endregion
68936
68949
  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, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
68937
68950
 
68938
- __info__.version = "18.2.54";
68939
- __info__.date = "2026-05-27T05:56:03.418Z";
68940
- __info__.hash = "bd06c51";
68951
+ __info__.version = "18.2.56";
68952
+ __info__.date = "2026-06-17T08:50:15.644Z";
68953
+ __info__.hash = "17ea4a6";
@@ -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.2.54
6
- * @date 2026-05-27T05:56:03.418Z
7
- * @hash bd06c51
5
+ * @version 18.2.56
6
+ * @date 2026-06-17T08:50:15.644Z
7
+ * @hash 17ea4a6
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -4048,6 +4048,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4048
4048
  //#endregion
4049
4049
  //#region src/helpers/format/format_tokenizer.ts
4050
4050
  function tokenizeFormat(str) {
4051
+ str = str.replace(/\s/g, " ");
4051
4052
  const chars = new TokenizingChars(str);
4052
4053
  const result = [];
4053
4054
  let currentFormatPart = [];
@@ -30711,11 +30712,10 @@ stores.inject(MyMetaStore, storeInstance);
30711
30712
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
30712
30713
  };
30713
30714
  const DELETE_SELECTED_TABLE = (env) => {
30714
- const position = env.model.getters.getActivePosition();
30715
- const table = env.model.getters.getTable(position);
30715
+ const table = env.model.getters.getFirstTableInSelection();
30716
30716
  if (!table) return;
30717
30717
  env.model.dispatch("REMOVE_TABLE", {
30718
- sheetId: position.sheetId,
30718
+ sheetId: env.model.getters.getActiveSheetId(),
30719
30719
  target: [table.range.zone]
30720
30720
  });
30721
30721
  };
@@ -39490,9 +39490,9 @@ stores.inject(MyMetaStore, storeInstance);
39490
39490
  allSheetsMatches = [];
39491
39491
  activeSheetMatches = [];
39492
39492
  specificRangeMatches = [];
39493
+ selectedMatchPosition = null;
39493
39494
  currentSearchRegex = null;
39494
39495
  initialShowFormulaState;
39495
- preserveSelectedMatchIndex = false;
39496
39496
  irreplaceableMatchCount = 0;
39497
39497
  isSearchDirty = false;
39498
39498
  shouldFinalizeUpdateSelection = false;
@@ -39611,7 +39611,10 @@ stores.inject(MyMetaStore, storeInstance);
39611
39611
  */
39612
39612
  _updateSearch(toSearch, searchOptions) {
39613
39613
  this.searchOptions = searchOptions;
39614
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
39614
+ if (toSearch !== this.toSearch) {
39615
+ this.selectedMatchIndex = null;
39616
+ this.selectedMatchPosition = null;
39617
+ }
39615
39618
  this.toSearch = toSearch;
39616
39619
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
39617
39620
  this.refreshSearch({
@@ -39623,8 +39626,14 @@ stores.inject(MyMetaStore, storeInstance);
39623
39626
  * refresh the matches according to the current search options
39624
39627
  */
39625
39628
  refreshSearch(options) {
39626
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
39627
39629
  this.findMatches();
39630
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
39631
+ this.selectedMatchIndex = null;
39632
+ this.selectedMatchPosition = null;
39633
+ } else {
39634
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
39635
+ if (index !== -1) this.selectedMatchIndex = index;
39636
+ }
39628
39637
  this.selectNextCell(0, options);
39629
39638
  }
39630
39639
  getSheetsInSearchOrder() {
@@ -39692,6 +39701,7 @@ stores.inject(MyMetaStore, storeInstance);
39692
39701
  const matches = this.searchMatches;
39693
39702
  if (!matches.length) {
39694
39703
  this.selectedMatchIndex = null;
39704
+ this.selectedMatchPosition = null;
39695
39705
  return;
39696
39706
  }
39697
39707
  let nextIndex;
@@ -39705,14 +39715,13 @@ stores.inject(MyMetaStore, storeInstance);
39705
39715
  } else nextIndex = this.selectedMatchIndex + indexChange;
39706
39716
  nextIndex = (nextIndex + matches.length) % matches.length;
39707
39717
  this.selectedMatchIndex = nextIndex;
39718
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
39708
39719
  const selectedMatch = matches[nextIndex];
39709
39720
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
39710
- this.preserveSelectedMatchIndex = true;
39711
39721
  this.model.dispatch("ACTIVATE_SHEET", {
39712
39722
  sheetIdFrom: this.getters.getActiveSheetId(),
39713
39723
  sheetIdTo: selectedMatch.sheetId
39714
39724
  });
39715
- this.preserveSelectedMatchIndex = false;
39716
39725
  this.isSearchDirty = false;
39717
39726
  }
39718
39727
  this.model.selection.getBackToDefault();
@@ -39723,7 +39732,6 @@ stores.inject(MyMetaStore, storeInstance);
39723
39732
  */
39724
39733
  replace() {
39725
39734
  if (this.selectedMatchIndex === null) return;
39726
- this.preserveSelectedMatchIndex = true;
39727
39735
  this.shouldFinalizeUpdateSelection = true;
39728
39736
  this.model.dispatch("REPLACE_SEARCH", {
39729
39737
  searchString: this.toSearch,
@@ -39731,7 +39739,6 @@ stores.inject(MyMetaStore, storeInstance);
39731
39739
  matches: [this.searchMatches[this.selectedMatchIndex]],
39732
39740
  searchOptions: this.searchOptions
39733
39741
  });
39734
- this.preserveSelectedMatchIndex = false;
39735
39742
  }
39736
39743
  /**
39737
39744
  * Apply the replace function to all the matches one time.
@@ -44194,8 +44201,12 @@ stores.inject(MyMetaStore, storeInstance);
44194
44201
  }
44195
44202
  stopEdition(direction) {
44196
44203
  if (this.canStopEdition()) {
44204
+ const { col, row } = this.currentEditedCell;
44197
44205
  this._stopEdition();
44198
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
44206
+ if (direction) {
44207
+ this.model.selection.selectCell(col, row);
44208
+ this.model.selection.moveAnchorCell(direction, 1);
44209
+ }
44199
44210
  return;
44200
44211
  }
44201
44212
  const editedCell = this.currentEditedCell;
@@ -56351,9 +56362,11 @@ stores.inject(MyMetaStore, storeInstance);
56351
56362
  this.refreshPivot(cmd.id);
56352
56363
  break;
56353
56364
  case "ADD_PIVOT":
56365
+ this.unusedPivots?.push(cmd.pivotId);
56354
56366
  this.setupPivot(cmd.pivotId);
56355
56367
  break;
56356
56368
  case "DUPLICATE_PIVOT":
56369
+ this.unusedPivots?.push(cmd.newPivotId);
56357
56370
  this.setupPivot(cmd.newPivotId);
56358
56371
  break;
56359
56372
  case "UPDATE_PIVOT":
@@ -56533,8 +56546,8 @@ stores.inject(MyMetaStore, storeInstance);
56533
56546
  }
56534
56547
  }
56535
56548
  for (const pivotId of this.getters.getPivotIds()) {
56536
- const pivot = this.getters.getPivot(pivotId);
56537
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
56549
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
56550
+ for (const measure of pivot.measures) if (measure.computedBy) {
56538
56551
  const { sheetId } = measure.computedBy;
56539
56552
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
56540
56553
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -68983,8 +68996,8 @@ exports.stores = stores;
68983
68996
  exports.tokenColors = tokenColors;
68984
68997
  exports.tokenize = tokenize;
68985
68998
 
68986
- __info__.version = "18.2.54";
68987
- __info__.date = "2026-05-27T05:56:03.418Z";
68988
- __info__.hash = "bd06c51";
68999
+ __info__.version = "18.2.56";
69000
+ __info__.date = "2026-06-17T08:50:15.644Z";
69001
+ __info__.hash = "17ea4a6";
68989
69002
 
68990
69003
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);