@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.
- package/dist/o_spreadsheet.cjs.js +50 -62
- package/dist/o_spreadsheet.css +19 -11
- package/dist/o_spreadsheet.esm.js +50 -62
- package/dist/o_spreadsheet.iife.js +50 -62
- package/dist/o_spreadsheet.iife.min.js +240 -240
- package/dist/o_spreadsheet.xml +5 -4
- package/package.json +1 -1
|
@@ -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.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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)
|
|
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)
|
|
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.
|
|
61644
|
-
for (const measure of pivot.
|
|
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
|
|
68533
|
-
const featurePluginRegistry = new Registry
|
|
68534
|
-
const statefulUIPluginRegistry = new Registry
|
|
68535
|
-
const coreViewsPluginRegistry = new Registry
|
|
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
|
|
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
|
|
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.
|
|
79331
|
-
__info__.date = "2026-
|
|
79332
|
-
__info__.hash = "
|
|
79318
|
+
__info__.version = "19.1.23";
|
|
79319
|
+
__info__.date = "2026-06-17T08:50:59.790Z";
|
|
79320
|
+
__info__.hash = "53aa85b";
|
package/dist/o_spreadsheet.css
CHANGED
|
@@ -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.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
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
|
|
2040
|
-
|
|
2041
|
-
|
|
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
|
|
2087
|
-
|
|
2088
|
-
|
|
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:
|
|
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.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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:
|
|
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
|
|
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)
|
|
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)
|
|
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.
|
|
61459
|
-
for (const measure of pivot.
|
|
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
|
|
68348
|
-
const featurePluginRegistry = new Registry
|
|
68349
|
-
const statefulUIPluginRegistry = new Registry
|
|
68350
|
-
const coreViewsPluginRegistry = new Registry
|
|
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
|
|
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
|
|
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.
|
|
79093
|
-
__info__.date = "2026-
|
|
79094
|
-
__info__.hash = "
|
|
79080
|
+
__info__.version = "19.1.23";
|
|
79081
|
+
__info__.date = "2026-06-17T08:50:59.790Z";
|
|
79082
|
+
__info__.hash = "53aa85b";
|