@odoo/o-spreadsheet 19.1.21 → 19.1.22

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.22
6
+ * @date 2026-06-06T06:23:19.222Z
7
+ * @hash 97a02db
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",
@@ -61446,9 +61415,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61446
61415
  this.refreshPivot(cmd.id);
61447
61416
  break;
61448
61417
  case "ADD_PIVOT":
61418
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
61449
61419
  this.setupPivot(cmd.pivotId);
61450
61420
  break;
61451
61421
  case "DUPLICATE_PIVOT":
61422
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
61452
61423
  this.setupPivot(cmd.newPivotId);
61453
61424
  break;
61454
61425
  case "UPDATE_PIVOT":
@@ -61640,8 +61611,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61640
61611
  }
61641
61612
  }
61642
61613
  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) {
61614
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
61615
+ for (const measure of pivot.measures) if (measure.computedBy) {
61645
61616
  const { sheetId } = measure.computedBy;
61646
61617
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61647
61618
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -63321,7 +63292,8 @@ const invalidateTableStyleCommandsSet = new Set([
63321
63292
  "REMOVE_TABLE",
63322
63293
  "RESIZE_TABLE",
63323
63294
  "CREATE_TABLE_STYLE",
63324
- "REMOVE_TABLE_STYLE"
63295
+ "REMOVE_TABLE_STYLE",
63296
+ "DELETE_CONTENT"
63325
63297
  ]);
63326
63298
  function doesCommandInvalidatesTableStyle(cmd) {
63327
63299
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -68529,10 +68501,10 @@ var SheetViewPlugin = class extends UIPlugin {
68529
68501
 
68530
68502
  //#endregion
68531
68503
  //#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);
68504
+ 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);
68505
+ 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);
68506
+ 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);
68507
+ 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
68508
 
68537
68509
  //#endregion
68538
68510
  //#region src/registries/auto_completes/data_validation_auto_complete.ts
@@ -74301,6 +74273,11 @@ function lineAttributes(params) {
74301
74273
  `;
74302
74274
  }
74303
74275
  function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74276
+ const textProperties = [
74277
+ ["b", style.bold ? "1" : "0"],
74278
+ ["i", style.italic ? "1" : "0"],
74279
+ ["sz", fontsize * 100]
74280
+ ];
74304
74281
  return escapeXml`
74305
74282
  <c:tx>
74306
74283
  <c:rich>
@@ -74308,13 +74285,13 @@ function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74308
74285
  <a:lstStyle />
74309
74286
  <a:p>
74310
74287
  <a:pPr lvl="0">
74311
- <a:defRPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}">
74288
+ <a:defRPr ${formatAttributes(textProperties)}>
74312
74289
  ${solidFill(fontColor)}
74313
74290
  <a:latin typeface="+mn-lt"/>
74314
74291
  </a:defRPr>
74315
74292
  </a:pPr>
74316
74293
  <a:r> <!-- Runs -->
74317
- <a:rPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}" sz="${fontsize * 100}"/>
74294
+ <a:rPr ${formatAttributes(textProperties)}/>
74318
74295
  <a:t>${text}</a:t>
74319
74296
  </a:r>
74320
74297
  </a:p>
@@ -79327,6 +79304,6 @@ exports.stores = stores;
79327
79304
  exports.tokenColors = tokenColors;
79328
79305
  exports.tokenize = tokenize;
79329
79306
 
79330
- __info__.version = "19.1.21";
79331
- __info__.date = "2026-05-27T05:56:49.891Z";
79332
- __info__.hash = "99ebe93";
79307
+ __info__.version = "19.1.22";
79308
+ __info__.date = "2026-06-06T06:23:19.222Z";
79309
+ __info__.hash = "97a02db";
@@ -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.22
6
+ * @date 2026-06-06T06:23:20.902Z
7
+ * @hash 97a02db
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
 
@@ -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.22
6
+ * @date 2026-06-06T06:23:19.222Z
7
+ * @hash 97a02db
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",
@@ -61261,9 +61230,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61261
61230
  this.refreshPivot(cmd.id);
61262
61231
  break;
61263
61232
  case "ADD_PIVOT":
61233
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
61264
61234
  this.setupPivot(cmd.pivotId);
61265
61235
  break;
61266
61236
  case "DUPLICATE_PIVOT":
61237
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
61267
61238
  this.setupPivot(cmd.newPivotId);
61268
61239
  break;
61269
61240
  case "UPDATE_PIVOT":
@@ -61455,8 +61426,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
61455
61426
  }
61456
61427
  }
61457
61428
  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) {
61429
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
61430
+ for (const measure of pivot.measures) if (measure.computedBy) {
61460
61431
  const { sheetId } = measure.computedBy;
61461
61432
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61462
61433
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -63136,7 +63107,8 @@ const invalidateTableStyleCommandsSet = new Set([
63136
63107
  "REMOVE_TABLE",
63137
63108
  "RESIZE_TABLE",
63138
63109
  "CREATE_TABLE_STYLE",
63139
- "REMOVE_TABLE_STYLE"
63110
+ "REMOVE_TABLE_STYLE",
63111
+ "DELETE_CONTENT"
63140
63112
  ]);
63141
63113
  function doesCommandInvalidatesTableStyle(cmd) {
63142
63114
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -68344,10 +68316,10 @@ var SheetViewPlugin = class extends UIPlugin {
68344
68316
 
68345
68317
  //#endregion
68346
68318
  //#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);
68319
+ 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);
68320
+ 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);
68321
+ 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);
68322
+ 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
68323
 
68352
68324
  //#endregion
68353
68325
  //#region src/registries/auto_completes/data_validation_auto_complete.ts
@@ -74116,6 +74088,11 @@ function lineAttributes(params) {
74116
74088
  `;
74117
74089
  }
74118
74090
  function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74091
+ const textProperties = [
74092
+ ["b", style.bold ? "1" : "0"],
74093
+ ["i", style.italic ? "1" : "0"],
74094
+ ["sz", fontsize * 100]
74095
+ ];
74119
74096
  return escapeXml`
74120
74097
  <c:tx>
74121
74098
  <c:rich>
@@ -74123,13 +74100,13 @@ function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74123
74100
  <a:lstStyle />
74124
74101
  <a:p>
74125
74102
  <a:pPr lvl="0">
74126
- <a:defRPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}">
74103
+ <a:defRPr ${formatAttributes(textProperties)}>
74127
74104
  ${solidFill(fontColor)}
74128
74105
  <a:latin typeface="+mn-lt"/>
74129
74106
  </a:defRPr>
74130
74107
  </a:pPr>
74131
74108
  <a:r> <!-- Runs -->
74132
- <a:rPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}" sz="${fontsize * 100}"/>
74109
+ <a:rPr ${formatAttributes(textProperties)}/>
74133
74110
  <a:t>${text}</a:t>
74134
74111
  </a:r>
74135
74112
  </a:p>
@@ -79089,6 +79066,6 @@ const chartHelpers = {
79089
79066
  //#endregion
79090
79067
  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
79068
 
79092
- __info__.version = "19.1.21";
79093
- __info__.date = "2026-05-27T05:56:49.891Z";
79094
- __info__.hash = "99ebe93";
79069
+ __info__.version = "19.1.22";
79070
+ __info__.date = "2026-06-06T06:23:19.222Z";
79071
+ __info__.hash = "97a02db";
@@ -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.22
6
+ * @date 2026-06-06T06:23:19.222Z
7
+ * @hash 97a02db
8
8
  */
9
9
 
10
10
  (function(exports, _odoo_owl) {
@@ -4304,6 +4304,7 @@ stores.inject(MyMetaStore, storeInstance);
4304
4304
  //#endregion
4305
4305
  //#region src/helpers/format/format_tokenizer.ts
4306
4306
  function tokenizeFormat(str) {
4307
+ str = str.replace(/\s/g, " ");
4307
4308
  const chars = new TokenizingChars(str);
4308
4309
  const result = [];
4309
4310
  let currentFormatPart = [];
@@ -7028,40 +7029,9 @@ stores.inject(MyMetaStore, storeInstance);
7028
7029
  }
7029
7030
  };
7030
7031
 
7031
- //#endregion
7032
- //#region src/registry.ts
7033
- var Registry$1 = class {
7034
- content = {};
7035
- add(key, value) {
7036
- if (key in this.content) throw new Error(`${key} is already present in this registry!`);
7037
- return this.replace(key, value);
7038
- }
7039
- replace(key, value) {
7040
- this.content[key] = value;
7041
- return this;
7042
- }
7043
- get(key) {
7044
- const content = this.content[key];
7045
- if (!content && !(key in this.content)) throw new Error(`Cannot find ${key} in this registry!`);
7046
- return content;
7047
- }
7048
- contains(key) {
7049
- return key in this.content;
7050
- }
7051
- getAll() {
7052
- return Object.values(this.content);
7053
- }
7054
- getKeys() {
7055
- return Object.keys(this.content);
7056
- }
7057
- remove(key) {
7058
- delete this.content[key];
7059
- }
7060
- };
7061
-
7062
7032
  //#endregion
7063
7033
  //#region src/helpers/figures/charts/chart_js_extension.ts
7064
- const chartJsExtensionRegistry = new Registry$1();
7034
+ const chartJsExtensionRegistry = new Registry();
7065
7035
  function areChartJSExtensionsLoaded() {
7066
7036
  return globalThis.Chart ? !!globalThis.Chart.registry.plugins.get("chartShowValuesPlugin") : true;
7067
7037
  }
@@ -26309,7 +26279,7 @@ stores.inject(MyMetaStore, storeInstance);
26309
26279
  //#endregion
26310
26280
  //#region src/functions/function_registry.ts
26311
26281
  const functionNameRegex = /^[A-Z0-9\_\.]+$/;
26312
- var FunctionRegistry = class extends Registry$1 {
26282
+ var FunctionRegistry = class extends Registry {
26313
26283
  mapping = {};
26314
26284
  add(name, addDescr) {
26315
26285
  name = name.toUpperCase();
@@ -35799,7 +35769,7 @@ stores.inject(MyMetaStore, storeInstance);
35799
35769
 
35800
35770
  //#endregion
35801
35771
  //#region src/migrations/migration_steps.ts
35802
- const migrationStepRegistry = new Registry$1();
35772
+ const migrationStepRegistry = new Registry();
35803
35773
  migrationStepRegistry.add("0.1", { migrate(data) {
35804
35774
  if (data.sheets && data.sheets[0]) data.activeSheet = data.sheets[0].name;
35805
35775
  return data;
@@ -36961,11 +36931,10 @@ stores.inject(MyMetaStore, storeInstance);
36961
36931
  if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
36962
36932
  };
36963
36933
  const DELETE_SELECTED_TABLE = (env) => {
36964
- const position = env.model.getters.getActivePosition();
36965
- const table = env.model.getters.getTable(position);
36934
+ const table = env.model.getters.getFirstTableInSelection();
36966
36935
  if (!table) return;
36967
36936
  env.model.dispatch("REMOVE_TABLE", {
36968
- sheetId: position.sheetId,
36937
+ sheetId: env.model.getters.getActiveSheetId(),
36969
36938
  target: [table.range.zone]
36970
36939
  });
36971
36940
  };
@@ -39334,7 +39303,7 @@ stores.inject(MyMetaStore, storeInstance);
39334
39303
 
39335
39304
  //#endregion
39336
39305
  //#region src/helpers/pivot/pivot_registry.ts
39337
- const pivotRegistry = new Registry$1();
39306
+ const pivotRegistry = new Registry();
39338
39307
  const dateGranularities = [
39339
39308
  "year",
39340
39309
  "quarter_number",
@@ -61263,9 +61232,11 @@ stores.inject(MyMetaStore, storeInstance);
61263
61232
  this.refreshPivot(cmd.id);
61264
61233
  break;
61265
61234
  case "ADD_PIVOT":
61235
+ this.unusedPivotsInFormulas?.push(cmd.pivotId);
61266
61236
  this.setupPivot(cmd.pivotId);
61267
61237
  break;
61268
61238
  case "DUPLICATE_PIVOT":
61239
+ this.unusedPivotsInFormulas?.push(cmd.newPivotId);
61269
61240
  this.setupPivot(cmd.newPivotId);
61270
61241
  break;
61271
61242
  case "UPDATE_PIVOT":
@@ -61457,8 +61428,8 @@ stores.inject(MyMetaStore, storeInstance);
61457
61428
  }
61458
61429
  }
61459
61430
  for (const pivotId of this.getters.getPivotIds()) {
61460
- const pivot = this.getters.getPivot(pivotId);
61461
- for (const measure of pivot.definition.measures) if (measure.computedBy) {
61431
+ const pivot = this.getters.getPivotCoreDefinition(pivotId);
61432
+ for (const measure of pivot.measures) if (measure.computedBy) {
61462
61433
  const { sheetId } = measure.computedBy;
61463
61434
  const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
61464
61435
  const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
@@ -63138,7 +63109,8 @@ stores.inject(MyMetaStore, storeInstance);
63138
63109
  "REMOVE_TABLE",
63139
63110
  "RESIZE_TABLE",
63140
63111
  "CREATE_TABLE_STYLE",
63141
- "REMOVE_TABLE_STYLE"
63112
+ "REMOVE_TABLE_STYLE",
63113
+ "DELETE_CONTENT"
63142
63114
  ]);
63143
63115
  function doesCommandInvalidatesTableStyle(cmd) {
63144
63116
  return invalidateTableStyleCommandsSet.has(cmd.type);
@@ -68346,10 +68318,10 @@ stores.inject(MyMetaStore, storeInstance);
68346
68318
 
68347
68319
  //#endregion
68348
68320
  //#region src/plugins/index.ts
68349
- 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);
68350
- 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);
68351
- 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);
68352
- 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);
68321
+ 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);
68322
+ 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);
68323
+ 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);
68324
+ 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);
68353
68325
 
68354
68326
  //#endregion
68355
68327
  //#region src/registries/auto_completes/data_validation_auto_complete.ts
@@ -74118,6 +74090,11 @@ stores.inject(MyMetaStore, storeInstance);
74118
74090
  `;
74119
74091
  }
74120
74092
  function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
74093
+ const textProperties = [
74094
+ ["b", style.bold ? "1" : "0"],
74095
+ ["i", style.italic ? "1" : "0"],
74096
+ ["sz", fontsize * 100]
74097
+ ];
74121
74098
  return escapeXml`
74122
74099
  <c:tx>
74123
74100
  <c:rich>
@@ -74125,13 +74102,13 @@ stores.inject(MyMetaStore, storeInstance);
74125
74102
  <a:lstStyle />
74126
74103
  <a:p>
74127
74104
  <a:pPr lvl="0">
74128
- <a:defRPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}">
74105
+ <a:defRPr ${formatAttributes(textProperties)}>
74129
74106
  ${solidFill(fontColor)}
74130
74107
  <a:latin typeface="+mn-lt"/>
74131
74108
  </a:defRPr>
74132
74109
  </a:pPr>
74133
74110
  <a:r> <!-- Runs -->
74134
- <a:rPr b="${style?.bold ? 1 : 0}" i="${style?.italic ? 1 : 0}" sz="${fontsize * 100}"/>
74111
+ <a:rPr ${formatAttributes(textProperties)}/>
74135
74112
  <a:t>${text}</a:t>
74136
74113
  </a:r>
74137
74114
  </a:p>
@@ -79144,8 +79121,8 @@ exports.stores = stores;
79144
79121
  exports.tokenColors = tokenColors;
79145
79122
  exports.tokenize = tokenize;
79146
79123
 
79147
- __info__.version = "19.1.21";
79148
- __info__.date = "2026-05-27T05:56:49.891Z";
79149
- __info__.hash = "99ebe93";
79124
+ __info__.version = "19.1.22";
79125
+ __info__.date = "2026-06-06T06:23:19.222Z";
79126
+ __info__.hash = "97a02db";
79150
79127
 
79151
79128
  })(this.o_spreadsheet = this.o_spreadsheet || {}, owl);