@odoo/o-spreadsheet 19.1.21 → 19.1.23

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 19.1.21
6
- * @date 2026-05-27T05:56:49.891Z
7
- * @hash 99ebe93
5
+ * @version 19.1.23
6
+ * @date 2026-06-17T08:50:59.790Z
7
+ * @hash 53aa85b
8
8
  */
9
9
 
10
10
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
@@ -4303,6 +4303,7 @@ const DEFAULT_LOCALE = DEFAULT_LOCALES[0];
4303
4303
  //#endregion
4304
4304
  //#region src/helpers/format/format_tokenizer.ts
4305
4305
  function tokenizeFormat(str) {
4306
+ str = str.replace(/\s/g, " ");
4306
4307
  const chars = new TokenizingChars(str);
4307
4308
  const result = [];
4308
4309
  let currentFormatPart = [];
@@ -7027,40 +7028,9 @@ var UuidGenerator = class {
7027
7028
  }
7028
7029
  };
7029
7030
 
7030
- //#endregion
7031
- //#region src/registry.ts
7032
- var Registry$1 = class {
7033
- content = {};
7034
- add(key, value) {
7035
- if (key in this.content) throw new Error(`${key} is already present in this registry!`);
7036
- return this.replace(key, value);
7037
- }
7038
- replace(key, value) {
7039
- this.content[key] = value;
7040
- return this;
7041
- }
7042
- get(key) {
7043
- const content = this.content[key];
7044
- if (!content && !(key in this.content)) throw new Error(`Cannot find ${key} in this registry!`);
7045
- return content;
7046
- }
7047
- contains(key) {
7048
- return key in this.content;
7049
- }
7050
- getAll() {
7051
- return Object.values(this.content);
7052
- }
7053
- getKeys() {
7054
- return Object.keys(this.content);
7055
- }
7056
- remove(key) {
7057
- delete this.content[key];
7058
- }
7059
- };
7060
-
7061
7031
  //#endregion
7062
7032
  //#region src/helpers/figures/charts/chart_js_extension.ts
7063
- const chartJsExtensionRegistry = new Registry$1();
7033
+ const chartJsExtensionRegistry = new Registry();
7064
7034
  function areChartJSExtensionsLoaded() {
7065
7035
  return globalThis.Chart ? !!globalThis.Chart.registry.plugins.get("chartShowValuesPlugin") : true;
7066
7036
  }
@@ -26308,7 +26278,7 @@ const HYPERLINK = {
26308
26278
  //#endregion
26309
26279
  //#region src/functions/function_registry.ts
26310
26280
  const functionNameRegex = /^[A-Z0-9\_\.]+$/;
26311
- var FunctionRegistry = class extends Registry$1 {
26281
+ var FunctionRegistry = class extends Registry {
26312
26282
  mapping = {};
26313
26283
  add(name, addDescr) {
26314
26284
  name = name.toUpperCase();
@@ -35798,7 +35768,7 @@ const WEEK_START = {
35798
35768
 
35799
35769
  //#endregion
35800
35770
  //#region src/migrations/migration_steps.ts
35801
- const migrationStepRegistry = new Registry$1();
35771
+ const migrationStepRegistry = new Registry();
35802
35772
  migrationStepRegistry.add("0.1", { migrate(data) {
35803
35773
  if (data.sheets && data.sheets[0]) data.activeSheet = data.sheets[0].name;
35804
35774
  return data;
@@ -36960,11 +36930,10 @@ const INSERT_TABLE = (env) => {
36960
36930
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
36961
36931
  };
36962
36932
  const DELETE_SELECTED_TABLE = (env) => {
36963
- const position = env.model.getters.getActivePosition();
36964
- const table = env.model.getters.getTable(position);
36933
+ const table = env.model.getters.getFirstTableInSelection();
36965
36934
  if (!table) return;
36966
36935
  env.model.dispatch("REMOVE_TABLE", {
36967
- sheetId: position.sheetId,
36936
+ sheetId: env.model.getters.getActiveSheetId(),
36968
36937
  target: [table.range.zone]
36969
36938
  });
36970
36939
  };
@@ -39333,7 +39302,7 @@ var SpreadsheetPivot = class {
39333
39302
 
39334
39303
  //#endregion
39335
39304
  //#region src/helpers/pivot/pivot_registry.ts
39336
- const pivotRegistry = new Registry$1();
39305
+ const pivotRegistry = new Registry();
39337
39306
  const dateGranularities = [
39338
39307
  "year",
39339
39308
  "quarter_number",
@@ -41225,8 +41194,12 @@ var CellComposerStore = class extends AbstractComposerStore {
41225
41194
  }
41226
41195
  stopEdition(direction) {
41227
41196
  if (this.canStopEdition()) {
41197
+ const { col, row } = this.currentEditedCell;
41228
41198
  this._stopEdition();
41229
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
41199
+ if (direction) {
41200
+ this.model.selection.selectCell(col, row);
41201
+ this.model.selection.moveAnchorCell(direction, 1);
41202
+ }
41230
41203
  return;
41231
41204
  }
41232
41205
  const editedCell = this.currentEditedCell;
@@ -48493,9 +48466,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48493
48466
  allSheetsMatches = [];
48494
48467
  activeSheetMatches = [];
48495
48468
  specificRangeMatches = [];
48469
+ selectedMatchPosition = null;
48496
48470
  currentSearchRegex = null;
48497
48471
  initialShowFormulaState;
48498
- preserveSelectedMatchIndex = false;
48499
48472
  irreplaceableMatchCount = 0;
48500
48473
  isSearchDirty = false;
48501
48474
  shouldFinalizeUpdateSelection = false;
@@ -48617,7 +48590,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48617
48590
  */
48618
48591
  _updateSearch(toSearch, searchOptions) {
48619
48592
  this.searchOptions = searchOptions;
48620
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
48593
+ if (toSearch !== this.toSearch) {
48594
+ this.selectedMatchIndex = null;
48595
+ this.selectedMatchPosition = null;
48596
+ }
48621
48597
  this.toSearch = toSearch;
48622
48598
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
48623
48599
  this.refreshSearch({
@@ -48629,8 +48605,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48629
48605
  * refresh the matches according to the current search options
48630
48606
  */
48631
48607
  refreshSearch(options) {
48632
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
48633
48608
  this.findMatches();
48609
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
48610
+ this.selectedMatchIndex = null;
48611
+ this.selectedMatchPosition = null;
48612
+ } else {
48613
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
48614
+ if (index !== -1) this.selectedMatchIndex = index;
48615
+ }
48634
48616
  this.selectNextCell(0, options);
48635
48617
  }
48636
48618
  getSheetsInSearchOrder() {
@@ -48698,6 +48680,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48698
48680
  const matches = this.searchMatches;
48699
48681
  if (!matches.length) {
48700
48682
  this.selectedMatchIndex = null;
48683
+ this.selectedMatchPosition = null;
48701
48684
  return;
48702
48685
  }
48703
48686
  let nextIndex;
@@ -48711,14 +48694,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48711
48694
  } else nextIndex = this.selectedMatchIndex + indexChange;
48712
48695
  nextIndex = (nextIndex + matches.length) % matches.length;
48713
48696
  this.selectedMatchIndex = nextIndex;
48697
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
48714
48698
  const selectedMatch = matches[nextIndex];
48715
48699
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
48716
- this.preserveSelectedMatchIndex = true;
48717
48700
  this.model.dispatch("ACTIVATE_SHEET", {
48718
48701
  sheetIdFrom: this.getters.getActiveSheetId(),
48719
48702
  sheetIdTo: selectedMatch.sheetId
48720
48703
  });
48721
- this.preserveSelectedMatchIndex = false;
48722
48704
  this.isSearchDirty = false;
48723
48705
  }
48724
48706
  this.model.selection.getBackToDefault();
@@ -48729,7 +48711,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48729
48711
  */
48730
48712
  replace() {
48731
48713
  if (this.selectedMatchIndex === null) return;
48732
- this.preserveSelectedMatchIndex = true;
48733
48714
  this.shouldFinalizeUpdateSelection = true;
48734
48715
  this.model.dispatch("REPLACE_SEARCH", {
48735
48716
  searchString: this.toSearch,
@@ -48737,7 +48718,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48737
48718
  matches: [this.searchMatches[this.selectedMatchIndex]],
48738
48719
  searchOptions: this.searchOptions
48739
48720
  });
48740
- this.preserveSelectedMatchIndex = false;
48741
48721
  }
48742
48722
  /**
48743
48723
  * Apply the replace function to all the matches one time.
@@ -59844,7 +59824,7 @@ iconsOnCellRegistry.add("pivot_collapse", (getters, position) => {
59844
59824
  const definition = getters.getPivotCoreDefinition(pivotId);
59845
59825
  const isDashboard = getters.isDashboard();
59846
59826
  const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
59847
- const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
59827
+ const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
59848
59828
  const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
59849
59829
  const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
59850
59830
  return {
@@ -61446,9 +61426,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61446
61426
  this.refreshPivot(cmd.id);
61447
61427
  break;
61448
61428
  case "ADD_PIVOT":
61429
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
61449
61430
  this.setupPivot(cmd.pivotId);
61450
61431
  break;
61451
61432
  case "DUPLICATE_PIVOT":
61433
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
61452
61434
  this.setupPivot(cmd.newPivotId);
61453
61435
  break;
61454
61436
  case "UPDATE_PIVOT":
@@ -61640,8 +61622,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61640
61622
  }
61641
61623
  }
61642
61624
  for (const pivotId of this.getters.getPivotIds()) {
61643
- const pivot = this.getters.getPivot(pivotId);
61644
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
61625
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
61626
+ for (const measure of pivot.measures) if (measure.computedBy) {
61645
61627
  const { sheetId } = measure.computedBy;
61646
61628
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61647
61629
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -63321,7 +63303,8 @@ const invalidateTableStyleCommandsSet = new Set([
63321
63303
  "REMOVE_TABLE",
63322
63304
  "RESIZE_TABLE",
63323
63305
  "CREATE_TABLE_STYLE",
63324
- "REMOVE_TABLE_STYLE"
63306
+ "REMOVE_TABLE_STYLE",
63307
+ "DELETE_CONTENT"
63325
63308
  ]);
63326
63309
  function doesCommandInvalidatesTableStyle(cmd) {
63327
63310
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -68529,10 +68512,10 @@ var SheetViewPlugin = class extends UIPlugin {
68529
68512
 
68530
68513
  //#endregion
68531
68514
  //#region src/plugins/index.ts
68532
- const corePluginRegistry = new Registry$1().add("settings", SettingsPlugin).add("sheet", SheetPlugin).add("header grouping", HeaderGroupingPlugin).add("header visibility", HeaderVisibilityPlugin).add("tables", TablePlugin).add("dataValidation", DataValidationPlugin).add("cell", CellPlugin).add("merge", MergePlugin).add("style", StylePlugin).add("headerSize", HeaderSizePlugin).add("borders", BordersPlugin).add("conditional formatting", ConditionalFormatPlugin).add("figures", FigurePlugin).add("chart", ChartPlugin).add("carousel", CarouselPlugin).add("image", ImagePlugin).add("pivot_core", PivotCorePlugin).add("spreadsheet_pivot_core", SpreadsheetPivotCorePlugin).add("tableStyle", TableStylePlugin);
68533
- const featurePluginRegistry = new Registry$1().add("ui_sheet", SheetUIPlugin).add("ui_options", UIOptionsPlugin).add("autofill", AutofillPlugin).add("sort", SortPlugin).add("automatic_sum", AutomaticSumPlugin).add("format", FormatPlugin).add("insert_pivot", InsertPivotPlugin).add("pivot_presence", PivotPresencePlugin).add("split_to_columns", SplitToColumnsPlugin).add("subtotal_evaluation", SubtotalEvaluationPlugin).add("collaborative", CollaborativePlugin).add("history", HistoryPlugin).add("table_autofill", TableAutofillPlugin).add("table_ui_resize", TableResizeUI).add("datavalidation_insert", DataValidationInsertionPlugin).add("checkbox_toggle", CheckboxTogglePlugin).add("dynamic_translate", DynamicTranslate).add("geo_features", GeoFeaturePlugin).add("data_cleanup", DataCleanupPlugin);
68534
- const statefulUIPluginRegistry = new Registry$1().add("selection", GridSelectionPlugin).add("evaluation_filter", FilterEvaluationPlugin).add("header_visibility_ui", HeaderVisibilityUIPlugin).add("cell_computed_style", CellComputedStylePlugin).add("table_computed_style", TableComputedStylePlugin).add("header_positions", HeaderPositionsUIPlugin).add("viewport", SheetViewPlugin).add("clipboard", ClipboardPlugin).add("carousel_ui", CarouselUIPlugin);
68535
- const coreViewsPluginRegistry = new Registry$1().add("evaluation", EvaluationPlugin).add("evaluation_chart", EvaluationChartPlugin).add("evaluation_cf", EvaluationConditionalFormatPlugin).add("row_size", HeaderSizeUIPlugin).add("data_validation_ui", EvaluationDataValidationPlugin).add("dynamic_tables", DynamicTablesPlugin).add("custom_colors", CustomColorsPlugin).add("pivot_ui", PivotUIPlugin).add("cell_icon", CellIconPlugin);
68515
+ const corePluginRegistry = new Registry().add("settings", SettingsPlugin).add("sheet", SheetPlugin).add("header grouping", HeaderGroupingPlugin).add("header visibility", HeaderVisibilityPlugin).add("tables", TablePlugin).add("dataValidation", DataValidationPlugin).add("cell", CellPlugin).add("merge", MergePlugin).add("style", StylePlugin).add("headerSize", HeaderSizePlugin).add("borders", BordersPlugin).add("conditional formatting", ConditionalFormatPlugin).add("figures", FigurePlugin).add("chart", ChartPlugin).add("carousel", CarouselPlugin).add("image", ImagePlugin).add("pivot_core", PivotCorePlugin).add("spreadsheet_pivot_core", SpreadsheetPivotCorePlugin).add("tableStyle", TableStylePlugin);
68516
+ const featurePluginRegistry = new Registry().add("ui_sheet", SheetUIPlugin).add("ui_options", UIOptionsPlugin).add("autofill", AutofillPlugin).add("sort", SortPlugin).add("automatic_sum", AutomaticSumPlugin).add("format", FormatPlugin).add("insert_pivot", InsertPivotPlugin).add("pivot_presence", PivotPresencePlugin).add("split_to_columns", SplitToColumnsPlugin).add("subtotal_evaluation", SubtotalEvaluationPlugin).add("collaborative", CollaborativePlugin).add("history", HistoryPlugin).add("table_autofill", TableAutofillPlugin).add("table_ui_resize", TableResizeUI).add("datavalidation_insert", DataValidationInsertionPlugin).add("checkbox_toggle", CheckboxTogglePlugin).add("dynamic_translate", DynamicTranslate).add("geo_features", GeoFeaturePlugin).add("data_cleanup", DataCleanupPlugin);
68517
+ const statefulUIPluginRegistry = new Registry().add("selection", GridSelectionPlugin).add("evaluation_filter", FilterEvaluationPlugin).add("header_visibility_ui", HeaderVisibilityUIPlugin).add("cell_computed_style", CellComputedStylePlugin).add("table_computed_style", TableComputedStylePlugin).add("header_positions", HeaderPositionsUIPlugin).add("viewport", SheetViewPlugin).add("clipboard", ClipboardPlugin).add("carousel_ui", CarouselUIPlugin);
68518
+ const coreViewsPluginRegistry = new Registry().add("evaluation", EvaluationPlugin).add("evaluation_chart", EvaluationChartPlugin).add("evaluation_cf", EvaluationConditionalFormatPlugin).add("row_size", HeaderSizeUIPlugin).add("data_validation_ui", EvaluationDataValidationPlugin).add("dynamic_tables", DynamicTablesPlugin).add("custom_colors", CustomColorsPlugin).add("pivot_ui", PivotUIPlugin).add("cell_icon", CellIconPlugin);
68536
68519
 
68537
68520
  //#endregion
68538
68521
  //#region src/registries/auto_completes/data_validation_auto_complete.ts
@@ -74301,6 +74284,11 @@ function lineAttributes(params) {
74301
74284
  `;
74302
74285
  }
74303
74286
  function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74287
+ const textProperties = [
74288
+ ["b", style.bold ? "1" : "0"],
74289
+ ["i", style.italic ? "1" : "0"],
74290
+ ["sz", fontsize * 100]
74291
+ ];
74304
74292
  return escapeXml`
74305
74293
  <c:tx>
74306
74294
  <c:rich>
@@ -74308,13 +74296,13 @@ function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74308
74296
  <a:lstStyle />
74309
74297
  <a:p>
74310
74298
  <a:pPr lvl="0">
74311
- <a:defRPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}">
74299
+ <a:defRPr ${formatAttributes(textProperties)}>
74312
74300
  ${solidFill(fontColor)}
74313
74301
  <a:latin typeface="+mn-lt"/>
74314
74302
  </a:defRPr>
74315
74303
  </a:pPr>
74316
74304
  <a:r> <!-- Runs -->
74317
- <a:rPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}" sz="${fontsize * 100}"/>
74305
+ <a:rPr ${formatAttributes(textProperties)}/>
74318
74306
  <a:t>${text}</a:t>
74319
74307
  </a:r>
74320
74308
  </a:p>
@@ -79327,6 +79315,6 @@ exports.stores = stores;
79327
79315
  exports.tokenColors = tokenColors;
79328
79316
  exports.tokenize = tokenize;
79329
79317
 
79330
- __info__.version = "19.1.21";
79331
- __info__.date = "2026-05-27T05:56:49.891Z";
79332
- __info__.hash = "99ebe93";
79318
+ __info__.version = "19.1.23";
79319
+ __info__.date = "2026-06-17T08:50:59.790Z";
79320
+ __info__.hash = "53aa85b";
@@ -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 19.1.21
6
- * @date 2026-05-27T05:56:51.558Z
7
- * @hash 99ebe93
5
+ * @version 19.1.23
6
+ * @date 2026-06-17T08:51:01.395Z
7
+ * @hash 53aa85b
8
8
  */
9
9
  :root {
10
10
  --os-gray-100: light-dark(#f9fafb, #1b1d26);
@@ -2001,6 +2001,7 @@
2001
2001
  right: var(--os-scrollbar-width);
2002
2002
  height: var(--os-header-height);
2003
2003
  width: calc(100% - var(--os-header-width) + var(--os-scrollbar-width));
2004
+ color-scheme: light;
2004
2005
  &.o-dragging {
2005
2006
  cursor: grabbing;
2006
2007
  }
@@ -2036,9 +2037,12 @@
2036
2037
  height: 10000px;
2037
2038
  background-color: var(--os-selection-border-color);
2038
2039
  }
2039
- .o-unhide:hover {
2040
- z-index: calc(var(--os-components-importance-grid) + 1);
2041
- background-color: var(--os-gray-400);
2040
+ .o-unhide {
2041
+ color: var(--os-text-body);
2042
+ &:hover {
2043
+ z-index: calc(var(--os-components-importance-grid) + 1);
2044
+ background-color: var(--os-gray-400);
2045
+ }
2042
2046
  }
2043
2047
  }
2044
2048
 
@@ -2048,6 +2052,7 @@
2048
2052
  left: 0;
2049
2053
  bottom: var(--os-scrollbar-width);
2050
2054
  width: var(--os-header-width);
2055
+ color-scheme: light;
2051
2056
  &.o-dragging {
2052
2057
  cursor: grabbing;
2053
2058
  }
@@ -2083,9 +2088,12 @@
2083
2088
  height: 1px;
2084
2089
  background-color: var(--os-selection-border-color);
2085
2090
  }
2086
- .o-unhide:hover {
2087
- z-index: calc(var(--os-components-importance-grid) + 1);
2088
- background-color: var(--os-gray-400);
2091
+ .o-unhide {
2092
+ color: var(--os-text-body);
2093
+ &:hover {
2094
+ z-index: calc(var(--os-components-importance-grid) + 1);
2095
+ background-color: var(--os-gray-400);
2096
+ }
2089
2097
  }
2090
2098
  }
2091
2099
 
@@ -3252,8 +3260,8 @@
3252
3260
 
3253
3261
  .o-autofill-nextvalue {
3254
3262
  position: absolute;
3255
- background-color: #ffffff;
3256
- border: 1px solid black;
3263
+ background-color: var(--os-white);
3264
+ border: 1px solid var(--os-black);
3257
3265
  padding: 5px;
3258
3266
  font-size: 12px;
3259
3267
  pointer-events: none;
@@ -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 19.1.21
6
- * @date 2026-05-27T05:56:49.891Z
7
- * @hash 99ebe93
5
+ * @version 19.1.23
6
+ * @date 2026-06-17T08:50:59.790Z
7
+ * @hash 53aa85b
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, whenReady, xml } from "@odoo/owl";
@@ -4302,6 +4302,7 @@ const DEFAULT_LOCALE = DEFAULT_LOCALES[0];
4302
4302
  //#endregion
4303
4303
  //#region src/helpers/format/format_tokenizer.ts
4304
4304
  function tokenizeFormat(str) {
4305
+ str = str.replace(/\s/g, " ");
4305
4306
  const chars = new TokenizingChars(str);
4306
4307
  const result = [];
4307
4308
  let currentFormatPart = [];
@@ -7026,40 +7027,9 @@ var UuidGenerator = class {
7026
7027
  }
7027
7028
  };
7028
7029
 
7029
- //#endregion
7030
- //#region src/registry.ts
7031
- var Registry$1 = class {
7032
- content = {};
7033
- add(key, value) {
7034
- if (key in this.content) throw new Error(`${key} is already present in this registry!`);
7035
- return this.replace(key, value);
7036
- }
7037
- replace(key, value) {
7038
- this.content[key] = value;
7039
- return this;
7040
- }
7041
- get(key) {
7042
- const content = this.content[key];
7043
- if (!content && !(key in this.content)) throw new Error(`Cannot find ${key} in this registry!`);
7044
- return content;
7045
- }
7046
- contains(key) {
7047
- return key in this.content;
7048
- }
7049
- getAll() {
7050
- return Object.values(this.content);
7051
- }
7052
- getKeys() {
7053
- return Object.keys(this.content);
7054
- }
7055
- remove(key) {
7056
- delete this.content[key];
7057
- }
7058
- };
7059
-
7060
7030
  //#endregion
7061
7031
  //#region src/helpers/figures/charts/chart_js_extension.ts
7062
- const chartJsExtensionRegistry = new Registry$1();
7032
+ const chartJsExtensionRegistry = new Registry();
7063
7033
  function areChartJSExtensionsLoaded() {
7064
7034
  return globalThis.Chart ? !!globalThis.Chart.registry.plugins.get("chartShowValuesPlugin") : true;
7065
7035
  }
@@ -26307,7 +26277,7 @@ const HYPERLINK = {
26307
26277
  //#endregion
26308
26278
  //#region src/functions/function_registry.ts
26309
26279
  const functionNameRegex = /^[A-Z0-9\_\.]+$/;
26310
- var FunctionRegistry = class extends Registry$1 {
26280
+ var FunctionRegistry = class extends Registry {
26311
26281
  mapping = {};
26312
26282
  add(name, addDescr) {
26313
26283
  name = name.toUpperCase();
@@ -35797,7 +35767,7 @@ const WEEK_START = {
35797
35767
 
35798
35768
  //#endregion
35799
35769
  //#region src/migrations/migration_steps.ts
35800
- const migrationStepRegistry = new Registry$1();
35770
+ const migrationStepRegistry = new Registry();
35801
35771
  migrationStepRegistry.add("0.1", { migrate(data) {
35802
35772
  if (data.sheets && data.sheets[0]) data.activeSheet = data.sheets[0].name;
35803
35773
  return data;
@@ -36959,11 +36929,10 @@ const INSERT_TABLE = (env) => {
36959
36929
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
36960
36930
  };
36961
36931
  const DELETE_SELECTED_TABLE = (env) => {
36962
- const position = env.model.getters.getActivePosition();
36963
- const table = env.model.getters.getTable(position);
36932
+ const table = env.model.getters.getFirstTableInSelection();
36964
36933
  if (!table) return;
36965
36934
  env.model.dispatch("REMOVE_TABLE", {
36966
- sheetId: position.sheetId,
36935
+ sheetId: env.model.getters.getActiveSheetId(),
36967
36936
  target: [table.range.zone]
36968
36937
  });
36969
36938
  };
@@ -39332,7 +39301,7 @@ var SpreadsheetPivot = class {
39332
39301
 
39333
39302
  //#endregion
39334
39303
  //#region src/helpers/pivot/pivot_registry.ts
39335
- const pivotRegistry = new Registry$1();
39304
+ const pivotRegistry = new Registry();
39336
39305
  const dateGranularities = [
39337
39306
  "year",
39338
39307
  "quarter_number",
@@ -41224,8 +41193,12 @@ var CellComposerStore = class extends AbstractComposerStore {
41224
41193
  }
41225
41194
  stopEdition(direction) {
41226
41195
  if (this.canStopEdition()) {
41196
+ const { col, row } = this.currentEditedCell;
41227
41197
  this._stopEdition();
41228
- if (direction) this.model.selection.moveAnchorCell(direction, 1);
41198
+ if (direction) {
41199
+ this.model.selection.selectCell(col, row);
41200
+ this.model.selection.moveAnchorCell(direction, 1);
41201
+ }
41229
41202
  return;
41230
41203
  }
41231
41204
  const editedCell = this.currentEditedCell;
@@ -48492,9 +48465,9 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48492
48465
  allSheetsMatches = [];
48493
48466
  activeSheetMatches = [];
48494
48467
  specificRangeMatches = [];
48468
+ selectedMatchPosition = null;
48495
48469
  currentSearchRegex = null;
48496
48470
  initialShowFormulaState;
48497
- preserveSelectedMatchIndex = false;
48498
48471
  irreplaceableMatchCount = 0;
48499
48472
  isSearchDirty = false;
48500
48473
  shouldFinalizeUpdateSelection = false;
@@ -48616,7 +48589,10 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48616
48589
  */
48617
48590
  _updateSearch(toSearch, searchOptions) {
48618
48591
  this.searchOptions = searchOptions;
48619
- if (toSearch !== this.toSearch) this.selectedMatchIndex = null;
48592
+ if (toSearch !== this.toSearch) {
48593
+ this.selectedMatchIndex = null;
48594
+ this.selectedMatchPosition = null;
48595
+ }
48620
48596
  this.toSearch = toSearch;
48621
48597
  this.currentSearchRegex = getSearchRegex(this.toSearch, this.searchOptions);
48622
48598
  this.refreshSearch({
@@ -48628,8 +48604,14 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48628
48604
  * refresh the matches according to the current search options
48629
48605
  */
48630
48606
  refreshSearch(options) {
48631
- if (!this.preserveSelectedMatchIndex) this.selectedMatchIndex = null;
48632
48607
  this.findMatches();
48608
+ if (this.selectedMatchPosition) if (this.selectedMatchPosition.sheetId !== this.getters.getActiveSheetId()) {
48609
+ this.selectedMatchIndex = null;
48610
+ this.selectedMatchPosition = null;
48611
+ } else {
48612
+ const index = this.searchMatches.findIndex((match) => match.sheetId === this.selectedMatchPosition?.sheetId && match.col === this.selectedMatchPosition?.col && match.row === this.selectedMatchPosition?.row);
48613
+ if (index !== -1) this.selectedMatchIndex = index;
48614
+ }
48633
48615
  this.selectNextCell(0, options);
48634
48616
  }
48635
48617
  getSheetsInSearchOrder() {
@@ -48697,6 +48679,7 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48697
48679
  const matches = this.searchMatches;
48698
48680
  if (!matches.length) {
48699
48681
  this.selectedMatchIndex = null;
48682
+ this.selectedMatchPosition = null;
48700
48683
  return;
48701
48684
  }
48702
48685
  let nextIndex;
@@ -48710,14 +48693,13 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48710
48693
  } else nextIndex = this.selectedMatchIndex + indexChange;
48711
48694
  nextIndex = (nextIndex + matches.length) % matches.length;
48712
48695
  this.selectedMatchIndex = nextIndex;
48696
+ this.selectedMatchPosition = matches[this.selectedMatchIndex];
48713
48697
  const selectedMatch = matches[nextIndex];
48714
48698
  if (options.jumpToMatchSheet && this.getters.getActiveSheetId() !== selectedMatch.sheetId) {
48715
- this.preserveSelectedMatchIndex = true;
48716
48699
  this.model.dispatch("ACTIVATE_SHEET", {
48717
48700
  sheetIdFrom: this.getters.getActiveSheetId(),
48718
48701
  sheetIdTo: selectedMatch.sheetId
48719
48702
  });
48720
- this.preserveSelectedMatchIndex = false;
48721
48703
  this.isSearchDirty = false;
48722
48704
  }
48723
48705
  this.model.selection.getBackToDefault();
@@ -48728,7 +48710,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48728
48710
  */
48729
48711
  replace() {
48730
48712
  if (this.selectedMatchIndex === null) return;
48731
- this.preserveSelectedMatchIndex = true;
48732
48713
  this.shouldFinalizeUpdateSelection = true;
48733
48714
  this.model.dispatch("REPLACE_SEARCH", {
48734
48715
  searchString: this.toSearch,
@@ -48736,7 +48717,6 @@ var FindAndReplaceStore = class extends SpreadsheetStore {
48736
48717
  matches: [this.searchMatches[this.selectedMatchIndex]],
48737
48718
  searchOptions: this.searchOptions
48738
48719
  });
48739
- this.preserveSelectedMatchIndex = false;
48740
48720
  }
48741
48721
  /**
48742
48722
  * Apply the replace function to all the matches one time.
@@ -59659,7 +59639,7 @@ iconsOnCellRegistry.add("pivot_collapse", (getters, position) => {
59659
59639
  const definition = getters.getPivotCoreDefinition(pivotId);
59660
59640
  const isDashboard = getters.isDashboard();
59661
59641
  const fields = pivotCell.dimension === "COL" ? definition.columns : definition.rows;
59662
- const hasIcon = !isDashboard && pivotCell.domain.length !== fields.length;
59642
+ const hasIcon = !isDashboard && !getters.shouldShowFormulas() && pivotCell.domain.length !== fields.length;
59663
59643
  const isCollapsed = (definition.collapsedDomains?.[pivotCell.dimension] ?? []).some((domain) => deepEquals(domain, pivotCell.domain));
59664
59644
  const indent = pivotCell.dimension === "ROW" ? (pivotCell.domain.length - 1) * 15 : 0;
59665
59645
  return {
@@ -61261,9 +61241,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61261
61241
  this.refreshPivot(cmd.id);
61262
61242
  break;
61263
61243
  case "ADD_PIVOT":
61244
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
61264
61245
  this.setupPivot(cmd.pivotId);
61265
61246
  break;
61266
61247
  case "DUPLICATE_PIVOT":
61248
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
61267
61249
  this.setupPivot(cmd.newPivotId);
61268
61250
  break;
61269
61251
  case "UPDATE_PIVOT":
@@ -61455,8 +61437,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61455
61437
  }
61456
61438
  }
61457
61439
  for (const pivotId of this.getters.getPivotIds()) {
61458
- const pivot = this.getters.getPivot(pivotId);
61459
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
61440
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
61441
+ for (const measure of pivot.measures) if (measure.computedBy) {
61460
61442
  const { sheetId } = measure.computedBy;
61461
61443
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61462
61444
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -63136,7 +63118,8 @@ const invalidateTableStyleCommandsSet = new Set([
63136
63118
  "REMOVE_TABLE",
63137
63119
  "RESIZE_TABLE",
63138
63120
  "CREATE_TABLE_STYLE",
63139
- "REMOVE_TABLE_STYLE"
63121
+ "REMOVE_TABLE_STYLE",
63122
+ "DELETE_CONTENT"
63140
63123
  ]);
63141
63124
  function doesCommandInvalidatesTableStyle(cmd) {
63142
63125
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -68344,10 +68327,10 @@ var SheetViewPlugin = class extends UIPlugin {
68344
68327
 
68345
68328
  //#endregion
68346
68329
  //#region src/plugins/index.ts
68347
- const corePluginRegistry = new Registry$1().add("settings", SettingsPlugin).add("sheet", SheetPlugin).add("header grouping", HeaderGroupingPlugin).add("header visibility", HeaderVisibilityPlugin).add("tables", TablePlugin).add("dataValidation", DataValidationPlugin).add("cell", CellPlugin).add("merge", MergePlugin).add("style", StylePlugin).add("headerSize", HeaderSizePlugin).add("borders", BordersPlugin).add("conditional formatting", ConditionalFormatPlugin).add("figures", FigurePlugin).add("chart", ChartPlugin).add("carousel", CarouselPlugin).add("image", ImagePlugin).add("pivot_core", PivotCorePlugin).add("spreadsheet_pivot_core", SpreadsheetPivotCorePlugin).add("tableStyle", TableStylePlugin);
68348
- const featurePluginRegistry = new Registry$1().add("ui_sheet", SheetUIPlugin).add("ui_options", UIOptionsPlugin).add("autofill", AutofillPlugin).add("sort", SortPlugin).add("automatic_sum", AutomaticSumPlugin).add("format", FormatPlugin).add("insert_pivot", InsertPivotPlugin).add("pivot_presence", PivotPresencePlugin).add("split_to_columns", SplitToColumnsPlugin).add("subtotal_evaluation", SubtotalEvaluationPlugin).add("collaborative", CollaborativePlugin).add("history", HistoryPlugin).add("table_autofill", TableAutofillPlugin).add("table_ui_resize", TableResizeUI).add("datavalidation_insert", DataValidationInsertionPlugin).add("checkbox_toggle", CheckboxTogglePlugin).add("dynamic_translate", DynamicTranslate).add("geo_features", GeoFeaturePlugin).add("data_cleanup", DataCleanupPlugin);
68349
- const statefulUIPluginRegistry = new Registry$1().add("selection", GridSelectionPlugin).add("evaluation_filter", FilterEvaluationPlugin).add("header_visibility_ui", HeaderVisibilityUIPlugin).add("cell_computed_style", CellComputedStylePlugin).add("table_computed_style", TableComputedStylePlugin).add("header_positions", HeaderPositionsUIPlugin).add("viewport", SheetViewPlugin).add("clipboard", ClipboardPlugin).add("carousel_ui", CarouselUIPlugin);
68350
- const coreViewsPluginRegistry = new Registry$1().add("evaluation", EvaluationPlugin).add("evaluation_chart", EvaluationChartPlugin).add("evaluation_cf", EvaluationConditionalFormatPlugin).add("row_size", HeaderSizeUIPlugin).add("data_validation_ui", EvaluationDataValidationPlugin).add("dynamic_tables", DynamicTablesPlugin).add("custom_colors", CustomColorsPlugin).add("pivot_ui", PivotUIPlugin).add("cell_icon", CellIconPlugin);
68330
+ const corePluginRegistry = new Registry().add("settings", SettingsPlugin).add("sheet", SheetPlugin).add("header grouping", HeaderGroupingPlugin).add("header visibility", HeaderVisibilityPlugin).add("tables", TablePlugin).add("dataValidation", DataValidationPlugin).add("cell", CellPlugin).add("merge", MergePlugin).add("style", StylePlugin).add("headerSize", HeaderSizePlugin).add("borders", BordersPlugin).add("conditional formatting", ConditionalFormatPlugin).add("figures", FigurePlugin).add("chart", ChartPlugin).add("carousel", CarouselPlugin).add("image", ImagePlugin).add("pivot_core", PivotCorePlugin).add("spreadsheet_pivot_core", SpreadsheetPivotCorePlugin).add("tableStyle", TableStylePlugin);
68331
+ const featurePluginRegistry = new Registry().add("ui_sheet", SheetUIPlugin).add("ui_options", UIOptionsPlugin).add("autofill", AutofillPlugin).add("sort", SortPlugin).add("automatic_sum", AutomaticSumPlugin).add("format", FormatPlugin).add("insert_pivot", InsertPivotPlugin).add("pivot_presence", PivotPresencePlugin).add("split_to_columns", SplitToColumnsPlugin).add("subtotal_evaluation", SubtotalEvaluationPlugin).add("collaborative", CollaborativePlugin).add("history", HistoryPlugin).add("table_autofill", TableAutofillPlugin).add("table_ui_resize", TableResizeUI).add("datavalidation_insert", DataValidationInsertionPlugin).add("checkbox_toggle", CheckboxTogglePlugin).add("dynamic_translate", DynamicTranslate).add("geo_features", GeoFeaturePlugin).add("data_cleanup", DataCleanupPlugin);
68332
+ const statefulUIPluginRegistry = new Registry().add("selection", GridSelectionPlugin).add("evaluation_filter", FilterEvaluationPlugin).add("header_visibility_ui", HeaderVisibilityUIPlugin).add("cell_computed_style", CellComputedStylePlugin).add("table_computed_style", TableComputedStylePlugin).add("header_positions", HeaderPositionsUIPlugin).add("viewport", SheetViewPlugin).add("clipboard", ClipboardPlugin).add("carousel_ui", CarouselUIPlugin);
68333
+ const coreViewsPluginRegistry = new Registry().add("evaluation", EvaluationPlugin).add("evaluation_chart", EvaluationChartPlugin).add("evaluation_cf", EvaluationConditionalFormatPlugin).add("row_size", HeaderSizeUIPlugin).add("data_validation_ui", EvaluationDataValidationPlugin).add("dynamic_tables", DynamicTablesPlugin).add("custom_colors", CustomColorsPlugin).add("pivot_ui", PivotUIPlugin).add("cell_icon", CellIconPlugin);
68351
68334
 
68352
68335
  //#endregion
68353
68336
  //#region src/registries/auto_completes/data_validation_auto_complete.ts
@@ -74116,6 +74099,11 @@ function lineAttributes(params) {
74116
74099
  `;
74117
74100
  }
74118
74101
  function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74102
+ const textProperties = [
74103
+ ["b", style.bold ? "1" : "0"],
74104
+ ["i", style.italic ? "1" : "0"],
74105
+ ["sz", fontsize * 100]
74106
+ ];
74119
74107
  return escapeXml`
74120
74108
  <c:tx>
74121
74109
  <c:rich>
@@ -74123,13 +74111,13 @@ function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74123
74111
  <a:lstStyle />
74124
74112
  <a:p>
74125
74113
  <a:pPr lvl="0">
74126
- <a:defRPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}">
74114
+ <a:defRPr ${formatAttributes(textProperties)}>
74127
74115
  ${solidFill(fontColor)}
74128
74116
  <a:latin typeface="+mn-lt"/>
74129
74117
  </a:defRPr>
74130
74118
  </a:pPr>
74131
74119
  <a:r> <!-- Runs -->
74132
- <a:rPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}" sz="${fontsize * 100}"/>
74120
+ <a:rPr ${formatAttributes(textProperties)}/>
74133
74121
  <a:t>${text}</a:t>
74134
74122
  </a:r>
74135
74123
  </a:p>
@@ -79089,6 +79077,6 @@ const chartHelpers = {
79089
79077
  //#endregion
79090
79078
  export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
79091
79079
 
79092
- __info__.version = "19.1.21";
79093
- __info__.date = "2026-05-27T05:56:49.891Z";
79094
- __info__.hash = "99ebe93";
79080
+ __info__.version = "19.1.23";
79081
+ __info__.date = "2026-06-17T08:50:59.790Z";
79082
+ __info__.hash = "53aa85b";