@odoo/o-spreadsheet 19.3.11 → 19.3.13
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 +101 -39
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +101 -39
- package/dist/o_spreadsheet.iife.js +101 -39
- package/dist/o_spreadsheet.min.iife.js +9 -9
- package/dist/o_spreadsheet.xml +4 -7
- package/dist/types/components/grid/grid.d.ts +1 -0
- package/dist/types/formulas/compiler.d.ts +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/plugins/core/squisher.d.ts +1 -0
- package/dist/types/plugins/ui_core_views/pivot_ui.d.ts +3 -0
- package/dist/types/plugins/ui_feature/collaborative.d.ts +2 -1
- package/dist/types/types/range.d.ts +1 -0
- package/package.json +1 -1
package/dist/o_spreadsheet.cjs
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.3.
|
|
6
|
-
* @date 2026-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.13
|
|
6
|
+
* @date 2026-07-23T07:41:06.182Z
|
|
7
|
+
* @hash 2059bd0
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -5568,7 +5568,7 @@ function getRangeString(range, forSheetId, getSheetName, options = {
|
|
|
5568
5568
|
if (prefixSheet && !sheetName) return CellErrorType.InvalidReference;
|
|
5569
5569
|
let rangeString = getRangePartString(range, 0, options);
|
|
5570
5570
|
if (range.parts && range.parts.length === 2) {
|
|
5571
|
-
if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed) {
|
|
5571
|
+
if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed || options.doNotSimplifyRange) {
|
|
5572
5572
|
rangeString += ":";
|
|
5573
5573
|
rangeString += getRangePartString(range, 1, options);
|
|
5574
5574
|
}
|
|
@@ -6290,6 +6290,11 @@ var CompiledFormula = class CompiledFormula {
|
|
|
6290
6290
|
const params = compileTokens(rangeTokenize(formula));
|
|
6291
6291
|
return new CompiledFormula(sheetId, params.tokens, params.literalValues, params.symbols, params.dependencies.map((xc) => getters.getRangeFromSheetXC(sheetId, xc)), params.isBadExpression, params.normalizedFormula, params.execute);
|
|
6292
6292
|
}
|
|
6293
|
+
areRangeShapesInLineWithNormalizedFormula() {
|
|
6294
|
+
return Array.from(this.normalizedFormula.matchAll(/\|C\||\|R\|/g)).every((value, index) => {
|
|
6295
|
+
return this.rangeDependencies[index].parts.length === 1 && value[0] === "|C|" || this.rangeDependencies[index].parts.length === 2 && value[0] === "|R|" || this.rangeDependencies[index].invalidXc || this.rangeDependencies[index].invalidSheetName;
|
|
6296
|
+
});
|
|
6297
|
+
}
|
|
6293
6298
|
};
|
|
6294
6299
|
function compileTokens(tokens) {
|
|
6295
6300
|
try {
|
|
@@ -33915,7 +33920,7 @@ var ScorecardChartConfigPanel = class extends _odoo_owl.Component {
|
|
|
33915
33920
|
return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardKeyValue");
|
|
33916
33921
|
}
|
|
33917
33922
|
get isBaselineInvalid() {
|
|
33918
|
-
return !!this.state.
|
|
33923
|
+
return !!this.state.baselineDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
|
|
33919
33924
|
}
|
|
33920
33925
|
onKeyValueRangeChanged(ranges) {
|
|
33921
33926
|
this.keyValue = ranges[0];
|
|
@@ -44151,7 +44156,8 @@ var Autofill = class extends _odoo_owl.Component {
|
|
|
44151
44156
|
const { x, y } = this.state.handler ? this.state.position : this.props.position;
|
|
44152
44157
|
return cssPropertiesToCss({
|
|
44153
44158
|
top: `${y}px`,
|
|
44154
|
-
left: `${x}px
|
|
44159
|
+
left: `${x}px`,
|
|
44160
|
+
visibility: this.props.isVisible ? "visible" : "hidden"
|
|
44155
44161
|
});
|
|
44156
44162
|
}
|
|
44157
44163
|
get styleNextValue() {
|
|
@@ -44572,7 +44578,7 @@ var CellComposerStore = class extends AbstractComposerStore {
|
|
|
44572
44578
|
this._cancelEdition();
|
|
44573
44579
|
this.resetContent();
|
|
44574
44580
|
}
|
|
44575
|
-
if (cmd.sheetIdFrom !== cmd.sheetIdTo) {
|
|
44581
|
+
if (this.model.selection.isListening(this) && cmd.sheetIdFrom !== cmd.sheetIdTo) {
|
|
44576
44582
|
const activePosition = this.getters.getActivePosition();
|
|
44577
44583
|
const { col, row } = this.getters.getNextVisibleCellPosition({
|
|
44578
44584
|
sheetId: cmd.sheetIdTo,
|
|
@@ -48714,6 +48720,10 @@ var Grid = class extends _odoo_owl.Component {
|
|
|
48714
48720
|
get displaySelectionHandler() {
|
|
48715
48721
|
return this.env.isMobile() && this.composerFocusStore.activeComposer.editionMode === "inactive";
|
|
48716
48722
|
}
|
|
48723
|
+
get clientsToDisplay() {
|
|
48724
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
48725
|
+
return this.env.model.getters.getClientsToDisplay(sheetId);
|
|
48726
|
+
}
|
|
48717
48727
|
};
|
|
48718
48728
|
|
|
48719
48729
|
//#endregion
|
|
@@ -49718,6 +49728,7 @@ var Squisher = class {
|
|
|
49718
49728
|
alreadyAppliedNumberOffsets = [];
|
|
49719
49729
|
previousStrings = [];
|
|
49720
49730
|
baseFormulaWasTransformed = false;
|
|
49731
|
+
rangeToStringOptions = { doNotSimplifyRange: true };
|
|
49721
49732
|
baseNumber = void 0;
|
|
49722
49733
|
constructor(getters) {
|
|
49723
49734
|
this.getters = getters;
|
|
@@ -49773,9 +49784,9 @@ var Squisher = class {
|
|
|
49773
49784
|
let references = [];
|
|
49774
49785
|
if (!this.baseFormula || this.baseFormula.normalizedFormula !== cell.compiledFormula.normalizedFormula) {
|
|
49775
49786
|
this.resetBaseTo(cell.compiledFormula);
|
|
49776
|
-
return cell.compiledFormula.toFormulaString(this.getters);
|
|
49787
|
+
return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
|
|
49777
49788
|
} else {
|
|
49778
|
-
if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters);
|
|
49789
|
+
if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
|
|
49779
49790
|
numbers = this.squishNumbers(cell.compiledFormula.literalValues.numbers);
|
|
49780
49791
|
strings = this.squishStrings(cell.compiledFormula.literalValues.strings);
|
|
49781
49792
|
references = this.squishReferences(cell.compiledFormula.rangeDependencies, forSheetId);
|
|
@@ -49852,23 +49863,23 @@ var Squisher = class {
|
|
|
49852
49863
|
squishOneReference(reference, previousReferences, index, forSheetId) {
|
|
49853
49864
|
const previousReference = previousReferences[index];
|
|
49854
49865
|
if (deepEquals(previousReference, reference)) return "=";
|
|
49855
|
-
if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc) {
|
|
49866
|
+
if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc || previousReference.parts.length !== reference.parts.length) {
|
|
49856
49867
|
previousReferences[index] = deepCopy(reference);
|
|
49857
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49868
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49858
49869
|
}
|
|
49859
49870
|
if (previousReference.unboundedZone.bottom === void 0 || previousReference.unboundedZone.right === void 0 || reference.unboundedZone.bottom === void 0 || reference.unboundedZone.right === void 0) {
|
|
49860
49871
|
previousReferences[index] = deepCopy(reference);
|
|
49861
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49872
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49862
49873
|
}
|
|
49863
49874
|
for (let i = 0; i < reference.parts.length; i++) if (previousReference.parts[i].colFixed !== reference.parts[i].colFixed || previousReference.parts[i].rowFixed !== reference.parts[i].rowFixed) {
|
|
49864
49875
|
previousReferences[index] = deepCopy(reference);
|
|
49865
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49876
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49866
49877
|
}
|
|
49867
49878
|
const currentZone = reference.zone;
|
|
49868
49879
|
const previousZone = previousReference.zone;
|
|
49869
49880
|
if (currentZone.top !== currentZone.bottom || currentZone.left !== currentZone.right || previousZone.top !== previousZone.bottom || previousZone.left !== previousZone.right) {
|
|
49870
49881
|
previousReferences[index] = deepCopy(reference);
|
|
49871
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49882
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49872
49883
|
}
|
|
49873
49884
|
const diffCol = reference.zone.left - previousReference.zone.left;
|
|
49874
49885
|
const diffRow = reference.zone.top - previousReference.zone.top;
|
|
@@ -49876,7 +49887,7 @@ var Squisher = class {
|
|
|
49876
49887
|
previousReference.unboundedZone = deepCopy(reference.unboundedZone);
|
|
49877
49888
|
if (diffCol !== 0 && diffRow === 0) return `${diffCol > 0 ? "+" : "-"}C${Math.abs(diffCol)}`;
|
|
49878
49889
|
else if (diffRow !== 0 && diffCol === 0) return `${diffRow > 0 ? "+" : "-"}R${Math.abs(diffRow)}`;
|
|
49879
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49890
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49880
49891
|
}
|
|
49881
49892
|
/**
|
|
49882
49893
|
* Squish the number parameters. Result for each parameter should be compared the previous formula.
|
|
@@ -50085,10 +50096,19 @@ var Unsquisher = class {
|
|
|
50085
50096
|
case "FIRST_OFFSET": {
|
|
50086
50097
|
const currentOffset = current;
|
|
50087
50098
|
this.previousOffset = currentOffset;
|
|
50088
|
-
for (const position of targetPositions)
|
|
50089
|
-
|
|
50090
|
-
|
|
50091
|
-
|
|
50099
|
+
for (const position of targetPositions) {
|
|
50100
|
+
const result = this.unsquishFormula(currentOffset, sheetId, getters);
|
|
50101
|
+
if (!result.areRangeShapesInLineWithNormalizedFormula()) {
|
|
50102
|
+
const formulaString = result.toFormulaString(getters);
|
|
50103
|
+
yield {
|
|
50104
|
+
position,
|
|
50105
|
+
compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
|
|
50106
|
+
};
|
|
50107
|
+
} else yield {
|
|
50108
|
+
position,
|
|
50109
|
+
compiled: result
|
|
50110
|
+
};
|
|
50111
|
+
}
|
|
50092
50112
|
break;
|
|
50093
50113
|
}
|
|
50094
50114
|
case "COMBINE_OFFSET": {
|
|
@@ -50097,10 +50117,19 @@ var Unsquisher = class {
|
|
|
50097
50117
|
this.previousOffset.N = currentOffset.N ?? this.previousOffset.N;
|
|
50098
50118
|
this.previousOffset.S = currentOffset.S ?? this.previousOffset.S;
|
|
50099
50119
|
this.previousOffset.R = currentOffset.R ?? this.previousOffset.R;
|
|
50100
|
-
for (const position of targetPositions)
|
|
50101
|
-
|
|
50102
|
-
|
|
50103
|
-
|
|
50120
|
+
for (const position of targetPositions) {
|
|
50121
|
+
const result = this.unsquishFormula(this.previousOffset, sheetId, getters);
|
|
50122
|
+
if (!result.areRangeShapesInLineWithNormalizedFormula()) {
|
|
50123
|
+
const formulaString = result.toFormulaString(getters);
|
|
50124
|
+
yield {
|
|
50125
|
+
position,
|
|
50126
|
+
compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
|
|
50127
|
+
};
|
|
50128
|
+
} else yield {
|
|
50129
|
+
position,
|
|
50130
|
+
compiled: result
|
|
50131
|
+
};
|
|
50132
|
+
}
|
|
50104
50133
|
break;
|
|
50105
50134
|
}
|
|
50106
50135
|
case "NEW_NUMBER":
|
|
@@ -58045,6 +58074,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58045
58074
|
pivots = {};
|
|
58046
58075
|
unusedPivotsInFormulas;
|
|
58047
58076
|
custom;
|
|
58077
|
+
pivotPositionCache = new PositionMap();
|
|
58078
|
+
shouldInvalidateCache = false;
|
|
58048
58079
|
constructor(config) {
|
|
58049
58080
|
super(config);
|
|
58050
58081
|
this.custom = config.custom;
|
|
@@ -58055,7 +58086,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58055
58086
|
}
|
|
58056
58087
|
}
|
|
58057
58088
|
handle(cmd) {
|
|
58058
|
-
if (invalidateEvaluationCommands.has(cmd.type))
|
|
58089
|
+
if (invalidateEvaluationCommands.has(cmd.type)) {
|
|
58090
|
+
this.shouldInvalidateCache = true;
|
|
58091
|
+
for (const pivotId of this.getters.getPivotIds()) this.setupPivot(pivotId, { recreate: true });
|
|
58092
|
+
}
|
|
58093
|
+
if (cmd.type === "UPDATE_CELL") this.shouldInvalidateCache = true;
|
|
58059
58094
|
switch (cmd.type) {
|
|
58060
58095
|
case "REFRESH_PIVOT":
|
|
58061
58096
|
this.refreshPivot(cmd.id);
|
|
@@ -58095,6 +58130,12 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58095
58130
|
break;
|
|
58096
58131
|
}
|
|
58097
58132
|
}
|
|
58133
|
+
finalize() {
|
|
58134
|
+
if (this.shouldInvalidateCache) {
|
|
58135
|
+
this.pivotPositionCache = new PositionMap();
|
|
58136
|
+
this.shouldInvalidateCache = false;
|
|
58137
|
+
}
|
|
58138
|
+
}
|
|
58098
58139
|
/**
|
|
58099
58140
|
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
58100
58141
|
* is no pivot at this position
|
|
@@ -58106,9 +58147,14 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58106
58147
|
* Get all of the ids of the pivot present in the formula at the given position.
|
|
58107
58148
|
*/
|
|
58108
58149
|
getPivotIdsFromPosition(position) {
|
|
58109
|
-
|
|
58110
|
-
|
|
58111
|
-
|
|
58150
|
+
if (!this.pivotPositionCache.has(position)) {
|
|
58151
|
+
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
58152
|
+
if (cell && cell.isFormula) {
|
|
58153
|
+
const pivotIds = this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
58154
|
+
this.pivotPositionCache.set(position, pivotIds);
|
|
58155
|
+
}
|
|
58156
|
+
}
|
|
58157
|
+
return this.pivotPositionCache.get(position) || [];
|
|
58112
58158
|
}
|
|
58113
58159
|
getPivotIdsFromFormula(sheetId, formula) {
|
|
58114
58160
|
return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
|
|
@@ -59853,17 +59899,32 @@ var TableComputedStylePlugin = class extends UIPlugin {
|
|
|
59853
59899
|
getCellTableStyle(position) {
|
|
59854
59900
|
const table = this.getters.getTable(position);
|
|
59855
59901
|
if (!table) return;
|
|
59856
|
-
|
|
59902
|
+
try {
|
|
59903
|
+
return this.tableStyles[position.sheetId][table.id]().styles[position.col]?.[position.row];
|
|
59904
|
+
} catch (e) {
|
|
59905
|
+
if (isEvaluationError(e) || e instanceof EvaluationError) return;
|
|
59906
|
+
throw e;
|
|
59907
|
+
}
|
|
59857
59908
|
}
|
|
59858
59909
|
getCellTableBorder(position) {
|
|
59859
59910
|
const table = this.getters.getTable(position);
|
|
59860
59911
|
if (!table) return;
|
|
59861
|
-
|
|
59912
|
+
try {
|
|
59913
|
+
return this.tableStyles[position.sheetId][table.id]().borders[position.col]?.[position.row];
|
|
59914
|
+
} catch (e) {
|
|
59915
|
+
if (isEvaluationError(e) || e instanceof EvaluationError) return;
|
|
59916
|
+
throw e;
|
|
59917
|
+
}
|
|
59862
59918
|
}
|
|
59863
59919
|
computeTableStyle(sheetId, table) {
|
|
59864
59920
|
return lazy(() => {
|
|
59865
59921
|
const style = this.getters.getTableStyle(table.config.styleId);
|
|
59866
|
-
const
|
|
59922
|
+
const tableMetaDataAndConfig = this.getTableMetaData(sheetId, table);
|
|
59923
|
+
if (!tableMetaDataAndConfig) return {
|
|
59924
|
+
borders: {},
|
|
59925
|
+
styles: {}
|
|
59926
|
+
};
|
|
59927
|
+
const { tableMetaData, config } = tableMetaDataAndConfig;
|
|
59867
59928
|
const relativeTableStyle = getComputedTableStyle(config, style, tableMetaData);
|
|
59868
59929
|
const mapping = this.getTableMapping(sheetId, table);
|
|
59869
59930
|
const absoluteTableStyle = {
|
|
@@ -59901,6 +59962,7 @@ var TableComputedStylePlugin = class extends UIPlugin {
|
|
|
59901
59962
|
const pivotInfo = this.getters.getPivotStyleAtPosition(mainPosition);
|
|
59902
59963
|
if (!pivotInfo) throw new Error("No dynamic pivot info found at pivot table position");
|
|
59903
59964
|
const pivot = this.getters.getPivot(pivotInfo.pivotId);
|
|
59965
|
+
if (!pivot.isValid()) return;
|
|
59904
59966
|
const pivotStyle = pivotInfo.pivotStyle;
|
|
59905
59967
|
const maxRowDepth = pivot.getExpandedTableStructure().getNumberOfRowGroupBys();
|
|
59906
59968
|
const pivotTable = pivot.getCollapsedTableStructure();
|
|
@@ -61195,14 +61257,13 @@ var CollaborativePlugin = class extends UIPlugin {
|
|
|
61195
61257
|
* Get the list of others connected clients which are present in the same sheet
|
|
61196
61258
|
* and with a valid position
|
|
61197
61259
|
*/
|
|
61198
|
-
getClientsToDisplay() {
|
|
61260
|
+
getClientsToDisplay(sheetId) {
|
|
61199
61261
|
try {
|
|
61200
61262
|
this.getters.getCurrentClient();
|
|
61201
61263
|
} catch (e) {
|
|
61202
61264
|
if (e instanceof ClientDisconnectedError) return [];
|
|
61203
61265
|
else throw e;
|
|
61204
61266
|
}
|
|
61205
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
61206
61267
|
const clients = [];
|
|
61207
61268
|
for (const client of this.getters.getConnectedClients()) if (client.id !== this.getters.getCurrentClient().id && client.position && client.position.sheetId === sheetId && this.isPositionValid(client.position)) clients.push({
|
|
61208
61269
|
...client,
|
|
@@ -61213,7 +61274,7 @@ var CollaborativePlugin = class extends UIPlugin {
|
|
|
61213
61274
|
drawLayer(renderingContext) {
|
|
61214
61275
|
if (this.getters.isDashboard()) return;
|
|
61215
61276
|
const { ctx, thinLineWidth, viewports, sheetId } = renderingContext;
|
|
61216
|
-
for (const client of this.getClientsToDisplay()) {
|
|
61277
|
+
for (const client of this.getClientsToDisplay(sheetId)) {
|
|
61217
61278
|
const { row, col } = client.position;
|
|
61218
61279
|
const zone = this.getters.expandZone(sheetId, {
|
|
61219
61280
|
top: row,
|
|
@@ -61516,8 +61577,8 @@ var HeaderVisibilityUIPlugin = class extends UIPlugin {
|
|
|
61516
61577
|
getNextVisibleCellPosition({ sheetId, col, row }) {
|
|
61517
61578
|
return {
|
|
61518
61579
|
sheetId,
|
|
61519
|
-
col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1),
|
|
61520
|
-
row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1)
|
|
61580
|
+
col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1) || this.findVisibleHeader(sheetId, "COL", col, 0) || 0,
|
|
61581
|
+
row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1) || this.findVisibleHeader(sheetId, "ROW", row, 0) || 0
|
|
61521
61582
|
};
|
|
61522
61583
|
}
|
|
61523
61584
|
/**
|
|
@@ -84609,7 +84670,8 @@ const helpers = {
|
|
|
84609
84670
|
parseFormat,
|
|
84610
84671
|
isFormula,
|
|
84611
84672
|
domainToColRowDomain,
|
|
84612
|
-
collapseHierarchicalDisplayName
|
|
84673
|
+
collapseHierarchicalDisplayName,
|
|
84674
|
+
PositionMap
|
|
84613
84675
|
};
|
|
84614
84676
|
const links = {
|
|
84615
84677
|
isMarkdownLink,
|
|
@@ -84789,6 +84851,6 @@ exports.stores = stores;
|
|
|
84789
84851
|
exports.tokenColors = tokenColors;
|
|
84790
84852
|
exports.tokenize = tokenize;
|
|
84791
84853
|
|
|
84792
|
-
__info__.version = "19.3.
|
|
84793
|
-
__info__.date = "2026-07-
|
|
84794
|
-
__info__.hash = "
|
|
84854
|
+
__info__.version = "19.3.13";
|
|
84855
|
+
__info__.date = "2026-07-23T07:41:06.182Z";
|
|
84856
|
+
__info__.hash = "2059bd0";
|
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.3.
|
|
6
|
-
* @date 2026-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.13
|
|
6
|
+
* @date 2026-07-23T07:41:07.881Z
|
|
7
|
+
* @hash 2059bd0
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|
|
@@ -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.3.
|
|
6
|
-
* @date 2026-07-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.13
|
|
6
|
+
* @date 2026-07-23T07:41:06.182Z
|
|
7
|
+
* @hash 2059bd0
|
|
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";
|
|
@@ -5567,7 +5567,7 @@ function getRangeString(range, forSheetId, getSheetName, options = {
|
|
|
5567
5567
|
if (prefixSheet && !sheetName) return CellErrorType.InvalidReference;
|
|
5568
5568
|
let rangeString = getRangePartString(range, 0, options);
|
|
5569
5569
|
if (range.parts && range.parts.length === 2) {
|
|
5570
|
-
if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed) {
|
|
5570
|
+
if (range.zone.top !== range.zone.bottom || range.zone.left !== range.zone.right || range.parts[0].rowFixed || range.parts[0].colFixed || range.parts[1].rowFixed || range.parts[1].colFixed || options.doNotSimplifyRange) {
|
|
5571
5571
|
rangeString += ":";
|
|
5572
5572
|
rangeString += getRangePartString(range, 1, options);
|
|
5573
5573
|
}
|
|
@@ -6289,6 +6289,11 @@ var CompiledFormula = class CompiledFormula {
|
|
|
6289
6289
|
const params = compileTokens(rangeTokenize(formula));
|
|
6290
6290
|
return new CompiledFormula(sheetId, params.tokens, params.literalValues, params.symbols, params.dependencies.map((xc) => getters.getRangeFromSheetXC(sheetId, xc)), params.isBadExpression, params.normalizedFormula, params.execute);
|
|
6291
6291
|
}
|
|
6292
|
+
areRangeShapesInLineWithNormalizedFormula() {
|
|
6293
|
+
return Array.from(this.normalizedFormula.matchAll(/\|C\||\|R\|/g)).every((value, index) => {
|
|
6294
|
+
return this.rangeDependencies[index].parts.length === 1 && value[0] === "|C|" || this.rangeDependencies[index].parts.length === 2 && value[0] === "|R|" || this.rangeDependencies[index].invalidXc || this.rangeDependencies[index].invalidSheetName;
|
|
6295
|
+
});
|
|
6296
|
+
}
|
|
6292
6297
|
};
|
|
6293
6298
|
function compileTokens(tokens) {
|
|
6294
6299
|
try {
|
|
@@ -33914,7 +33919,7 @@ var ScorecardChartConfigPanel = class extends Component {
|
|
|
33914
33919
|
return !!this.state.keyValueDispatchResult?.isCancelledBecause("InvalidScorecardKeyValue");
|
|
33915
33920
|
}
|
|
33916
33921
|
get isBaselineInvalid() {
|
|
33917
|
-
return !!this.state.
|
|
33922
|
+
return !!this.state.baselineDispatchResult?.isCancelledBecause("InvalidScorecardBaseline");
|
|
33918
33923
|
}
|
|
33919
33924
|
onKeyValueRangeChanged(ranges) {
|
|
33920
33925
|
this.keyValue = ranges[0];
|
|
@@ -44150,7 +44155,8 @@ var Autofill = class extends Component {
|
|
|
44150
44155
|
const { x, y } = this.state.handler ? this.state.position : this.props.position;
|
|
44151
44156
|
return cssPropertiesToCss({
|
|
44152
44157
|
top: `${y}px`,
|
|
44153
|
-
left: `${x}px
|
|
44158
|
+
left: `${x}px`,
|
|
44159
|
+
visibility: this.props.isVisible ? "visible" : "hidden"
|
|
44154
44160
|
});
|
|
44155
44161
|
}
|
|
44156
44162
|
get styleNextValue() {
|
|
@@ -44571,7 +44577,7 @@ var CellComposerStore = class extends AbstractComposerStore {
|
|
|
44571
44577
|
this._cancelEdition();
|
|
44572
44578
|
this.resetContent();
|
|
44573
44579
|
}
|
|
44574
|
-
if (cmd.sheetIdFrom !== cmd.sheetIdTo) {
|
|
44580
|
+
if (this.model.selection.isListening(this) && cmd.sheetIdFrom !== cmd.sheetIdTo) {
|
|
44575
44581
|
const activePosition = this.getters.getActivePosition();
|
|
44576
44582
|
const { col, row } = this.getters.getNextVisibleCellPosition({
|
|
44577
44583
|
sheetId: cmd.sheetIdTo,
|
|
@@ -48713,6 +48719,10 @@ var Grid = class extends Component {
|
|
|
48713
48719
|
get displaySelectionHandler() {
|
|
48714
48720
|
return this.env.isMobile() && this.composerFocusStore.activeComposer.editionMode === "inactive";
|
|
48715
48721
|
}
|
|
48722
|
+
get clientsToDisplay() {
|
|
48723
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
48724
|
+
return this.env.model.getters.getClientsToDisplay(sheetId);
|
|
48725
|
+
}
|
|
48716
48726
|
};
|
|
48717
48727
|
|
|
48718
48728
|
//#endregion
|
|
@@ -49717,6 +49727,7 @@ var Squisher = class {
|
|
|
49717
49727
|
alreadyAppliedNumberOffsets = [];
|
|
49718
49728
|
previousStrings = [];
|
|
49719
49729
|
baseFormulaWasTransformed = false;
|
|
49730
|
+
rangeToStringOptions = { doNotSimplifyRange: true };
|
|
49720
49731
|
baseNumber = void 0;
|
|
49721
49732
|
constructor(getters) {
|
|
49722
49733
|
this.getters = getters;
|
|
@@ -49772,9 +49783,9 @@ var Squisher = class {
|
|
|
49772
49783
|
let references = [];
|
|
49773
49784
|
if (!this.baseFormula || this.baseFormula.normalizedFormula !== cell.compiledFormula.normalizedFormula) {
|
|
49774
49785
|
this.resetBaseTo(cell.compiledFormula);
|
|
49775
|
-
return cell.compiledFormula.toFormulaString(this.getters);
|
|
49786
|
+
return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
|
|
49776
49787
|
} else {
|
|
49777
|
-
if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters);
|
|
49788
|
+
if (!this.baseFormulaWasTransformed && deepEquals(cell.compiledFormula.literalValues, this.baseFormula.literalValues) && deepEquals(cell.compiledFormula.rangeDependencies, this.baseFormula.rangeDependencies)) return cell.compiledFormula.toFormulaString(this.getters, this.rangeToStringOptions);
|
|
49778
49789
|
numbers = this.squishNumbers(cell.compiledFormula.literalValues.numbers);
|
|
49779
49790
|
strings = this.squishStrings(cell.compiledFormula.literalValues.strings);
|
|
49780
49791
|
references = this.squishReferences(cell.compiledFormula.rangeDependencies, forSheetId);
|
|
@@ -49851,23 +49862,23 @@ var Squisher = class {
|
|
|
49851
49862
|
squishOneReference(reference, previousReferences, index, forSheetId) {
|
|
49852
49863
|
const previousReference = previousReferences[index];
|
|
49853
49864
|
if (deepEquals(previousReference, reference)) return "=";
|
|
49854
|
-
if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc) {
|
|
49865
|
+
if (previousReference.sheetId !== reference.sheetId || previousReference.prefixSheet !== reference.prefixSheet || previousReference.invalidSheetName !== reference.invalidSheetName || previousReference.invalidXc !== reference.invalidXc || previousReference.parts.length !== reference.parts.length) {
|
|
49855
49866
|
previousReferences[index] = deepCopy(reference);
|
|
49856
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49867
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49857
49868
|
}
|
|
49858
49869
|
if (previousReference.unboundedZone.bottom === void 0 || previousReference.unboundedZone.right === void 0 || reference.unboundedZone.bottom === void 0 || reference.unboundedZone.right === void 0) {
|
|
49859
49870
|
previousReferences[index] = deepCopy(reference);
|
|
49860
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49871
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49861
49872
|
}
|
|
49862
49873
|
for (let i = 0; i < reference.parts.length; i++) if (previousReference.parts[i].colFixed !== reference.parts[i].colFixed || previousReference.parts[i].rowFixed !== reference.parts[i].rowFixed) {
|
|
49863
49874
|
previousReferences[index] = deepCopy(reference);
|
|
49864
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49875
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49865
49876
|
}
|
|
49866
49877
|
const currentZone = reference.zone;
|
|
49867
49878
|
const previousZone = previousReference.zone;
|
|
49868
49879
|
if (currentZone.top !== currentZone.bottom || currentZone.left !== currentZone.right || previousZone.top !== previousZone.bottom || previousZone.left !== previousZone.right) {
|
|
49869
49880
|
previousReferences[index] = deepCopy(reference);
|
|
49870
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49881
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49871
49882
|
}
|
|
49872
49883
|
const diffCol = reference.zone.left - previousReference.zone.left;
|
|
49873
49884
|
const diffRow = reference.zone.top - previousReference.zone.top;
|
|
@@ -49875,7 +49886,7 @@ var Squisher = class {
|
|
|
49875
49886
|
previousReference.unboundedZone = deepCopy(reference.unboundedZone);
|
|
49876
49887
|
if (diffCol !== 0 && diffRow === 0) return `${diffCol > 0 ? "+" : "-"}C${Math.abs(diffCol)}`;
|
|
49877
49888
|
else if (diffRow !== 0 && diffCol === 0) return `${diffRow > 0 ? "+" : "-"}R${Math.abs(diffRow)}`;
|
|
49878
|
-
return getRangeString(reference, forSheetId, this.getters.getSheetName);
|
|
49889
|
+
return getRangeString(reference, forSheetId, this.getters.getSheetName, this.rangeToStringOptions);
|
|
49879
49890
|
}
|
|
49880
49891
|
/**
|
|
49881
49892
|
* Squish the number parameters. Result for each parameter should be compared the previous formula.
|
|
@@ -50084,10 +50095,19 @@ var Unsquisher = class {
|
|
|
50084
50095
|
case "FIRST_OFFSET": {
|
|
50085
50096
|
const currentOffset = current;
|
|
50086
50097
|
this.previousOffset = currentOffset;
|
|
50087
|
-
for (const position of targetPositions)
|
|
50088
|
-
|
|
50089
|
-
|
|
50090
|
-
|
|
50098
|
+
for (const position of targetPositions) {
|
|
50099
|
+
const result = this.unsquishFormula(currentOffset, sheetId, getters);
|
|
50100
|
+
if (!result.areRangeShapesInLineWithNormalizedFormula()) {
|
|
50101
|
+
const formulaString = result.toFormulaString(getters);
|
|
50102
|
+
yield {
|
|
50103
|
+
position,
|
|
50104
|
+
compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
|
|
50105
|
+
};
|
|
50106
|
+
} else yield {
|
|
50107
|
+
position,
|
|
50108
|
+
compiled: result
|
|
50109
|
+
};
|
|
50110
|
+
}
|
|
50091
50111
|
break;
|
|
50092
50112
|
}
|
|
50093
50113
|
case "COMBINE_OFFSET": {
|
|
@@ -50096,10 +50116,19 @@ var Unsquisher = class {
|
|
|
50096
50116
|
this.previousOffset.N = currentOffset.N ?? this.previousOffset.N;
|
|
50097
50117
|
this.previousOffset.S = currentOffset.S ?? this.previousOffset.S;
|
|
50098
50118
|
this.previousOffset.R = currentOffset.R ?? this.previousOffset.R;
|
|
50099
|
-
for (const position of targetPositions)
|
|
50100
|
-
|
|
50101
|
-
|
|
50102
|
-
|
|
50119
|
+
for (const position of targetPositions) {
|
|
50120
|
+
const result = this.unsquishFormula(this.previousOffset, sheetId, getters);
|
|
50121
|
+
if (!result.areRangeShapesInLineWithNormalizedFormula()) {
|
|
50122
|
+
const formulaString = result.toFormulaString(getters);
|
|
50123
|
+
yield {
|
|
50124
|
+
position,
|
|
50125
|
+
compiled: CompiledFormula.Compile(formulaString, sheetId, getters)
|
|
50126
|
+
};
|
|
50127
|
+
} else yield {
|
|
50128
|
+
position,
|
|
50129
|
+
compiled: result
|
|
50130
|
+
};
|
|
50131
|
+
}
|
|
50103
50132
|
break;
|
|
50104
50133
|
}
|
|
50105
50134
|
case "NEW_NUMBER":
|
|
@@ -57860,6 +57889,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57860
57889
|
pivots = {};
|
|
57861
57890
|
unusedPivotsInFormulas;
|
|
57862
57891
|
custom;
|
|
57892
|
+
pivotPositionCache = new PositionMap();
|
|
57893
|
+
shouldInvalidateCache = false;
|
|
57863
57894
|
constructor(config) {
|
|
57864
57895
|
super(config);
|
|
57865
57896
|
this.custom = config.custom;
|
|
@@ -57870,7 +57901,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57870
57901
|
}
|
|
57871
57902
|
}
|
|
57872
57903
|
handle(cmd) {
|
|
57873
|
-
if (invalidateEvaluationCommands.has(cmd.type))
|
|
57904
|
+
if (invalidateEvaluationCommands.has(cmd.type)) {
|
|
57905
|
+
this.shouldInvalidateCache = true;
|
|
57906
|
+
for (const pivotId of this.getters.getPivotIds()) this.setupPivot(pivotId, { recreate: true });
|
|
57907
|
+
}
|
|
57908
|
+
if (cmd.type === "UPDATE_CELL") this.shouldInvalidateCache = true;
|
|
57874
57909
|
switch (cmd.type) {
|
|
57875
57910
|
case "REFRESH_PIVOT":
|
|
57876
57911
|
this.refreshPivot(cmd.id);
|
|
@@ -57910,6 +57945,12 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57910
57945
|
break;
|
|
57911
57946
|
}
|
|
57912
57947
|
}
|
|
57948
|
+
finalize() {
|
|
57949
|
+
if (this.shouldInvalidateCache) {
|
|
57950
|
+
this.pivotPositionCache = new PositionMap();
|
|
57951
|
+
this.shouldInvalidateCache = false;
|
|
57952
|
+
}
|
|
57953
|
+
}
|
|
57913
57954
|
/**
|
|
57914
57955
|
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
57915
57956
|
* is no pivot at this position
|
|
@@ -57921,9 +57962,14 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57921
57962
|
* Get all of the ids of the pivot present in the formula at the given position.
|
|
57922
57963
|
*/
|
|
57923
57964
|
getPivotIdsFromPosition(position) {
|
|
57924
|
-
|
|
57925
|
-
|
|
57926
|
-
|
|
57965
|
+
if (!this.pivotPositionCache.has(position)) {
|
|
57966
|
+
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
57967
|
+
if (cell && cell.isFormula) {
|
|
57968
|
+
const pivotIds = this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
57969
|
+
this.pivotPositionCache.set(position, pivotIds);
|
|
57970
|
+
}
|
|
57971
|
+
}
|
|
57972
|
+
return this.pivotPositionCache.get(position) || [];
|
|
57927
57973
|
}
|
|
57928
57974
|
getPivotIdsFromFormula(sheetId, formula) {
|
|
57929
57975
|
return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
|
|
@@ -59668,17 +59714,32 @@ var TableComputedStylePlugin = class extends UIPlugin {
|
|
|
59668
59714
|
getCellTableStyle(position) {
|
|
59669
59715
|
const table = this.getters.getTable(position);
|
|
59670
59716
|
if (!table) return;
|
|
59671
|
-
|
|
59717
|
+
try {
|
|
59718
|
+
return this.tableStyles[position.sheetId][table.id]().styles[position.col]?.[position.row];
|
|
59719
|
+
} catch (e) {
|
|
59720
|
+
if (isEvaluationError(e) || e instanceof EvaluationError) return;
|
|
59721
|
+
throw e;
|
|
59722
|
+
}
|
|
59672
59723
|
}
|
|
59673
59724
|
getCellTableBorder(position) {
|
|
59674
59725
|
const table = this.getters.getTable(position);
|
|
59675
59726
|
if (!table) return;
|
|
59676
|
-
|
|
59727
|
+
try {
|
|
59728
|
+
return this.tableStyles[position.sheetId][table.id]().borders[position.col]?.[position.row];
|
|
59729
|
+
} catch (e) {
|
|
59730
|
+
if (isEvaluationError(e) || e instanceof EvaluationError) return;
|
|
59731
|
+
throw e;
|
|
59732
|
+
}
|
|
59677
59733
|
}
|
|
59678
59734
|
computeTableStyle(sheetId, table) {
|
|
59679
59735
|
return lazy(() => {
|
|
59680
59736
|
const style = this.getters.getTableStyle(table.config.styleId);
|
|
59681
|
-
const
|
|
59737
|
+
const tableMetaDataAndConfig = this.getTableMetaData(sheetId, table);
|
|
59738
|
+
if (!tableMetaDataAndConfig) return {
|
|
59739
|
+
borders: {},
|
|
59740
|
+
styles: {}
|
|
59741
|
+
};
|
|
59742
|
+
const { tableMetaData, config } = tableMetaDataAndConfig;
|
|
59682
59743
|
const relativeTableStyle = getComputedTableStyle(config, style, tableMetaData);
|
|
59683
59744
|
const mapping = this.getTableMapping(sheetId, table);
|
|
59684
59745
|
const absoluteTableStyle = {
|
|
@@ -59716,6 +59777,7 @@ var TableComputedStylePlugin = class extends UIPlugin {
|
|
|
59716
59777
|
const pivotInfo = this.getters.getPivotStyleAtPosition(mainPosition);
|
|
59717
59778
|
if (!pivotInfo) throw new Error("No dynamic pivot info found at pivot table position");
|
|
59718
59779
|
const pivot = this.getters.getPivot(pivotInfo.pivotId);
|
|
59780
|
+
if (!pivot.isValid()) return;
|
|
59719
59781
|
const pivotStyle = pivotInfo.pivotStyle;
|
|
59720
59782
|
const maxRowDepth = pivot.getExpandedTableStructure().getNumberOfRowGroupBys();
|
|
59721
59783
|
const pivotTable = pivot.getCollapsedTableStructure();
|
|
@@ -61010,14 +61072,13 @@ var CollaborativePlugin = class extends UIPlugin {
|
|
|
61010
61072
|
* Get the list of others connected clients which are present in the same sheet
|
|
61011
61073
|
* and with a valid position
|
|
61012
61074
|
*/
|
|
61013
|
-
getClientsToDisplay() {
|
|
61075
|
+
getClientsToDisplay(sheetId) {
|
|
61014
61076
|
try {
|
|
61015
61077
|
this.getters.getCurrentClient();
|
|
61016
61078
|
} catch (e) {
|
|
61017
61079
|
if (e instanceof ClientDisconnectedError) return [];
|
|
61018
61080
|
else throw e;
|
|
61019
61081
|
}
|
|
61020
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
61021
61082
|
const clients = [];
|
|
61022
61083
|
for (const client of this.getters.getConnectedClients()) if (client.id !== this.getters.getCurrentClient().id && client.position && client.position.sheetId === sheetId && this.isPositionValid(client.position)) clients.push({
|
|
61023
61084
|
...client,
|
|
@@ -61028,7 +61089,7 @@ var CollaborativePlugin = class extends UIPlugin {
|
|
|
61028
61089
|
drawLayer(renderingContext) {
|
|
61029
61090
|
if (this.getters.isDashboard()) return;
|
|
61030
61091
|
const { ctx, thinLineWidth, viewports, sheetId } = renderingContext;
|
|
61031
|
-
for (const client of this.getClientsToDisplay()) {
|
|
61092
|
+
for (const client of this.getClientsToDisplay(sheetId)) {
|
|
61032
61093
|
const { row, col } = client.position;
|
|
61033
61094
|
const zone = this.getters.expandZone(sheetId, {
|
|
61034
61095
|
top: row,
|
|
@@ -61331,8 +61392,8 @@ var HeaderVisibilityUIPlugin = class extends UIPlugin {
|
|
|
61331
61392
|
getNextVisibleCellPosition({ sheetId, col, row }) {
|
|
61332
61393
|
return {
|
|
61333
61394
|
sheetId,
|
|
61334
|
-
col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1),
|
|
61335
|
-
row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1)
|
|
61395
|
+
col: this.findVisibleHeader(sheetId, "COL", col, this.getters.getNumberCols(sheetId) - 1) || this.findVisibleHeader(sheetId, "COL", col, 0) || 0,
|
|
61396
|
+
row: this.findVisibleHeader(sheetId, "ROW", row, this.getters.getNumberRows(sheetId) - 1) || this.findVisibleHeader(sheetId, "ROW", row, 0) || 0
|
|
61336
61397
|
};
|
|
61337
61398
|
}
|
|
61338
61399
|
/**
|
|
@@ -84424,7 +84485,8 @@ const helpers = {
|
|
|
84424
84485
|
parseFormat,
|
|
84425
84486
|
isFormula,
|
|
84426
84487
|
domainToColRowDomain,
|
|
84427
|
-
collapseHierarchicalDisplayName
|
|
84488
|
+
collapseHierarchicalDisplayName,
|
|
84489
|
+
PositionMap
|
|
84428
84490
|
};
|
|
84429
84491
|
const links = {
|
|
84430
84492
|
isMarkdownLink,
|
|
@@ -84546,6 +84608,6 @@ const chartHelpers = {
|
|
|
84546
84608
|
//#endregion
|
|
84547
84609
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, canExecuteInReadonly, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isSheetDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
84548
84610
|
|
|
84549
|
-
__info__.version = "19.3.
|
|
84550
|
-
__info__.date = "2026-07-
|
|
84551
|
-
__info__.hash = "
|
|
84611
|
+
__info__.version = "19.3.13";
|
|
84612
|
+
__info__.date = "2026-07-23T07:41:06.182Z";
|
|
84613
|
+
__info__.hash = "2059bd0";
|