@odoo/o-spreadsheet 18.2.53 → 18.2.54
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 +159 -26
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +159 -26
- package/dist/o_spreadsheet.iife.js +159 -26
- package/dist/o_spreadsheet.iife.min.js +296 -296
- package/dist/o_spreadsheet.xml +3 -3
- package/package.json +17 -17
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 18.2.
|
|
6
|
-
* @date 2026-05-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.2.54
|
|
6
|
+
* @date 2026-05-27T05:56:03.418Z
|
|
7
|
+
* @hash bd06c51
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -1346,6 +1346,7 @@ function getAlternatingColorsPalette(quantity) {
|
|
|
1346
1346
|
else return ALTERNATING_COLORS_XL;
|
|
1347
1347
|
}
|
|
1348
1348
|
var ColorGenerator = class {
|
|
1349
|
+
preferredColors;
|
|
1349
1350
|
currentColorIndex = 0;
|
|
1350
1351
|
palette;
|
|
1351
1352
|
constructor(paletteSize, preferredColors = []) {
|
|
@@ -1812,6 +1813,7 @@ const _t = function(s, ...values) {
|
|
|
1812
1813
|
return sprintf(_translate(s), ...values);
|
|
1813
1814
|
};
|
|
1814
1815
|
var LazyTranslatedString = class extends String {
|
|
1816
|
+
values;
|
|
1815
1817
|
constructor(str, values) {
|
|
1816
1818
|
super(str);
|
|
1817
1819
|
this.values = values;
|
|
@@ -3308,6 +3310,8 @@ const CellErrorType = {
|
|
|
3308
3310
|
};
|
|
3309
3311
|
const errorTypes = new Set(Object.values(CellErrorType));
|
|
3310
3312
|
var EvaluationError = class {
|
|
3313
|
+
message;
|
|
3314
|
+
value;
|
|
3311
3315
|
constructor(message = _t("Error"), value = CellErrorType.GenericError) {
|
|
3312
3316
|
this.message = message;
|
|
3313
3317
|
this.value = value;
|
|
@@ -3340,6 +3344,7 @@ var UnknownFunctionError = class extends EvaluationError {
|
|
|
3340
3344
|
}
|
|
3341
3345
|
};
|
|
3342
3346
|
var SplillBlockedError = class extends EvaluationError {
|
|
3347
|
+
errorOriginPosition;
|
|
3343
3348
|
constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
|
|
3344
3349
|
super(message, CellErrorType.SpilledBlocked);
|
|
3345
3350
|
this.errorOriginPosition = errorOriginPosition;
|
|
@@ -5173,6 +5178,7 @@ function getFullReference(sheetName, xc) {
|
|
|
5173
5178
|
//#endregion
|
|
5174
5179
|
//#region src/helpers/range.ts
|
|
5175
5180
|
var RangeImpl = class RangeImpl {
|
|
5181
|
+
getSheetSize;
|
|
5176
5182
|
_zone;
|
|
5177
5183
|
parts;
|
|
5178
5184
|
invalidXc;
|
|
@@ -5860,6 +5866,8 @@ const selectPastedZone = (selection, sourceZones, pastedZones) => {
|
|
|
5860
5866
|
//#endregion
|
|
5861
5867
|
//#region src/clipboard_handlers/abstract_clipboard_handler.ts
|
|
5862
5868
|
var ClipboardHandler = class {
|
|
5869
|
+
getters;
|
|
5870
|
+
dispatch;
|
|
5863
5871
|
constructor(getters, dispatch) {
|
|
5864
5872
|
this.getters = getters;
|
|
5865
5873
|
this.dispatch = dispatch;
|
|
@@ -8267,6 +8275,7 @@ var DependencyContainer = class extends EventBus {
|
|
|
8267
8275
|
}
|
|
8268
8276
|
};
|
|
8269
8277
|
var StoreFactory = class {
|
|
8278
|
+
get;
|
|
8270
8279
|
pendingBuilds = /* @__PURE__ */ new Set();
|
|
8271
8280
|
constructor(get) {
|
|
8272
8281
|
this.get = get;
|
|
@@ -8311,6 +8320,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8311
8320
|
return MetaStore;
|
|
8312
8321
|
}
|
|
8313
8322
|
var DisposableStore = class {
|
|
8323
|
+
get;
|
|
8314
8324
|
disposeCallbacks = [];
|
|
8315
8325
|
constructor(get) {
|
|
8316
8326
|
this.get = get;
|
|
@@ -9454,6 +9464,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
|
|
|
9454
9464
|
}, runtime).computeDesign();
|
|
9455
9465
|
}
|
|
9456
9466
|
var ScorecardChartConfigBuilder = class {
|
|
9467
|
+
runtime;
|
|
9457
9468
|
context;
|
|
9458
9469
|
width;
|
|
9459
9470
|
height;
|
|
@@ -18108,6 +18119,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
|
|
|
18108
18119
|
//#endregion
|
|
18109
18120
|
//#region src/formulas/code_builder.ts
|
|
18110
18121
|
var FunctionCodeBuilder = class {
|
|
18122
|
+
scope;
|
|
18111
18123
|
code = "";
|
|
18112
18124
|
constructor(scope = new Scope()) {
|
|
18113
18125
|
this.scope = scope;
|
|
@@ -18123,6 +18135,8 @@ var FunctionCodeBuilder = class {
|
|
|
18123
18135
|
}
|
|
18124
18136
|
};
|
|
18125
18137
|
var FunctionCodeImpl = class {
|
|
18138
|
+
scope;
|
|
18139
|
+
returnExpression;
|
|
18126
18140
|
code;
|
|
18127
18141
|
constructor(scope, code, returnExpression) {
|
|
18128
18142
|
this.scope = scope;
|
|
@@ -18503,6 +18517,9 @@ function extractFormulaIdFromToken(tokenAtCursor) {
|
|
|
18503
18517
|
function getFirstPivotFunction(tokens) {
|
|
18504
18518
|
return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS)[0];
|
|
18505
18519
|
}
|
|
18520
|
+
function getPivotFunctions(tokens) {
|
|
18521
|
+
return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS);
|
|
18522
|
+
}
|
|
18506
18523
|
/**
|
|
18507
18524
|
* Parse a spreadsheet formula and detect the number of PIVOT functions that are
|
|
18508
18525
|
* present in the given formula.
|
|
@@ -19553,6 +19570,7 @@ const backgroundColorChartJSPlugin = {
|
|
|
19553
19570
|
* Represent a raw XML string
|
|
19554
19571
|
*/
|
|
19555
19572
|
var XMLString = class {
|
|
19573
|
+
xmlString;
|
|
19556
19574
|
/**
|
|
19557
19575
|
* @param xmlString should be a well formed, properly escaped XML string
|
|
19558
19576
|
*/
|
|
@@ -19671,6 +19689,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
|
|
|
19671
19689
|
ROUNDDOWN: [{
|
|
19672
19690
|
type: "NUMBER",
|
|
19673
19691
|
value: 0
|
|
19692
|
+
}],
|
|
19693
|
+
IFERROR: [{
|
|
19694
|
+
type: "NUMBER",
|
|
19695
|
+
value: 0
|
|
19674
19696
|
}]
|
|
19675
19697
|
};
|
|
19676
19698
|
/**
|
|
@@ -29586,6 +29608,10 @@ var Popover = class extends _odoo_owl.Component {
|
|
|
29586
29608
|
}
|
|
29587
29609
|
};
|
|
29588
29610
|
var PopoverPositionContext = class {
|
|
29611
|
+
anchorRect;
|
|
29612
|
+
containerRect;
|
|
29613
|
+
propsMaxSize;
|
|
29614
|
+
spreadsheetOffset;
|
|
29589
29615
|
constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset) {
|
|
29590
29616
|
this.anchorRect = anchorRect;
|
|
29591
29617
|
this.containerRect = containerRect;
|
|
@@ -32624,7 +32650,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
|
|
|
32624
32650
|
col,
|
|
32625
32651
|
row
|
|
32626
32652
|
};
|
|
32627
|
-
if (
|
|
32653
|
+
if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
|
|
32628
32654
|
}
|
|
32629
32655
|
return positions;
|
|
32630
32656
|
}
|
|
@@ -33402,6 +33428,7 @@ var DOMDndHelper = class {
|
|
|
33402
33428
|
}
|
|
33403
33429
|
};
|
|
33404
33430
|
var ContainerWrapper = class {
|
|
33431
|
+
el;
|
|
33405
33432
|
constructor(el) {
|
|
33406
33433
|
this.el = el;
|
|
33407
33434
|
}
|
|
@@ -33487,6 +33514,9 @@ var FocusStore = class {
|
|
|
33487
33514
|
* This plugin handles this internal state.
|
|
33488
33515
|
*/
|
|
33489
33516
|
var SelectionInputStore = class extends SpreadsheetStore {
|
|
33517
|
+
initialRanges;
|
|
33518
|
+
inputHasSingleRange;
|
|
33519
|
+
colors;
|
|
33490
33520
|
mutators = [
|
|
33491
33521
|
"resetWithRanges",
|
|
33492
33522
|
"focusById",
|
|
@@ -36399,6 +36429,7 @@ var Composer = class extends _odoo_owl.Component {
|
|
|
36399
36429
|
//#endregion
|
|
36400
36430
|
//#region src/components/composer/standalone_composer/standalone_composer_store.ts
|
|
36401
36431
|
var StandaloneComposerStore = class extends AbstractComposerStore {
|
|
36432
|
+
args;
|
|
36402
36433
|
constructor(get, args) {
|
|
36403
36434
|
super(get);
|
|
36404
36435
|
this.args = args;
|
|
@@ -39973,6 +40004,8 @@ var MoreFormatsPanel = class extends _odoo_owl.Component {
|
|
|
39973
40004
|
//#endregion
|
|
39974
40005
|
//#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
|
|
39975
40006
|
var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
|
|
40007
|
+
pivotId;
|
|
40008
|
+
initialMeasure;
|
|
39976
40009
|
mutators = [
|
|
39977
40010
|
"cancelMeasureDisplayEdition",
|
|
39978
40011
|
"updateMeasureDisplayType",
|
|
@@ -41011,13 +41044,30 @@ function createMeasure(fields, measure) {
|
|
|
41011
41044
|
} : fields[fieldName];
|
|
41012
41045
|
const aggregator = measure.aggregator;
|
|
41013
41046
|
return {
|
|
41047
|
+
/**
|
|
41048
|
+
* Get the id of the measure, as it is stored in the pivot formula
|
|
41049
|
+
*/
|
|
41014
41050
|
id: measure.id,
|
|
41051
|
+
/**
|
|
41052
|
+
* Display name of the measure
|
|
41053
|
+
* e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
|
|
41054
|
+
*/
|
|
41015
41055
|
get displayName() {
|
|
41016
41056
|
return measure.userDefinedName ?? field?.string ?? measure.fieldName;
|
|
41017
41057
|
},
|
|
41018
41058
|
userDefinedName: measure.userDefinedName,
|
|
41059
|
+
/**
|
|
41060
|
+
* Get the name of the field of the measure
|
|
41061
|
+
*/
|
|
41019
41062
|
fieldName,
|
|
41063
|
+
/**
|
|
41064
|
+
* Get the aggregator of the measure
|
|
41065
|
+
*/
|
|
41020
41066
|
aggregator,
|
|
41067
|
+
/**
|
|
41068
|
+
* Get the type of the measure field
|
|
41069
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
41070
|
+
*/
|
|
41021
41071
|
type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
|
|
41022
41072
|
isValid: !!(field || measure.computedBy),
|
|
41023
41073
|
isHidden: measure.isHidden,
|
|
@@ -41031,10 +41081,30 @@ function createPivotDimension(fields, dimension) {
|
|
|
41031
41081
|
const type = field?.type ?? "integer";
|
|
41032
41082
|
const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
|
|
41033
41083
|
return {
|
|
41084
|
+
/**
|
|
41085
|
+
* Get the display name of the dimension
|
|
41086
|
+
* e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
|
|
41087
|
+
*/
|
|
41034
41088
|
displayName: field?.string ?? dimension.fieldName,
|
|
41089
|
+
/**
|
|
41090
|
+
* Get the name of the dimension, as it is stored in the pivot formula
|
|
41091
|
+
* e.g. "stage_id", "create_date:month"
|
|
41092
|
+
*/
|
|
41035
41093
|
nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
|
|
41094
|
+
/**
|
|
41095
|
+
* Get the name of the field of the dimension
|
|
41096
|
+
* e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
|
|
41097
|
+
*/
|
|
41036
41098
|
fieldName: dimension.fieldName,
|
|
41099
|
+
/**
|
|
41100
|
+
* Get the aggregate operator of the dimension
|
|
41101
|
+
* e.g. "stage_id" -> undefined, "create_date:month" -> "month"
|
|
41102
|
+
*/
|
|
41037
41103
|
granularity,
|
|
41104
|
+
/**
|
|
41105
|
+
* Get the type of the field of the dimension
|
|
41106
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
41107
|
+
*/
|
|
41038
41108
|
type,
|
|
41039
41109
|
order: dimension.order,
|
|
41040
41110
|
isValid: !!field
|
|
@@ -42074,6 +42144,7 @@ function adaptPivotRange(range, applyChange) {
|
|
|
42074
42144
|
//#endregion
|
|
42075
42145
|
//#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
|
|
42076
42146
|
var PivotSidePanelStore = class extends SpreadsheetStore {
|
|
42147
|
+
pivotId;
|
|
42077
42148
|
mutators = [
|
|
42078
42149
|
"reset",
|
|
42079
42150
|
"deferUpdates",
|
|
@@ -49575,6 +49646,11 @@ var CellPlugin = class extends CorePlugin {
|
|
|
49575
49646
|
}
|
|
49576
49647
|
};
|
|
49577
49648
|
var FormulaCellWithDependencies = class {
|
|
49649
|
+
id;
|
|
49650
|
+
format;
|
|
49651
|
+
style;
|
|
49652
|
+
sheetId;
|
|
49653
|
+
getRangeString;
|
|
49578
49654
|
isFormula = true;
|
|
49579
49655
|
compiledFormula;
|
|
49580
49656
|
constructor(id, compiledFormula, format, style, dependencies, sheetId, getRangeString) {
|
|
@@ -49609,6 +49685,10 @@ var FormulaCellWithDependencies = class {
|
|
|
49609
49685
|
}
|
|
49610
49686
|
};
|
|
49611
49687
|
var RangeReferenceToken = class {
|
|
49688
|
+
ranges;
|
|
49689
|
+
rangeIndex;
|
|
49690
|
+
sheetId;
|
|
49691
|
+
getRangeString;
|
|
49612
49692
|
type = "REFERENCE";
|
|
49613
49693
|
constructor(ranges, rangeIndex, sheetId, getRangeString) {
|
|
49614
49694
|
this.ranges = ranges;
|
|
@@ -53505,6 +53585,8 @@ function buildCompilationParameters(context, getters, computeCell) {
|
|
|
53505
53585
|
return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
|
|
53506
53586
|
}
|
|
53507
53587
|
var CompilationParametersBuilder = class {
|
|
53588
|
+
getters;
|
|
53589
|
+
computeCell;
|
|
53508
53590
|
evalContext;
|
|
53509
53591
|
rangeCache = {};
|
|
53510
53592
|
constructor(context, getters, computeCell) {
|
|
@@ -54142,6 +54224,7 @@ var ZoneRBush = class extends import_rbush.default {
|
|
|
54142
54224
|
* It uses an R-Tree data structure to efficiently find dependent cells.
|
|
54143
54225
|
*/
|
|
54144
54226
|
var FormulaDependencyGraph = class {
|
|
54227
|
+
createEmptyPositionSet;
|
|
54145
54228
|
dependencies = new PositionMap();
|
|
54146
54229
|
rTree;
|
|
54147
54230
|
constructor(createEmptyPositionSet, data = []) {
|
|
@@ -54443,6 +54526,7 @@ const MAX_ITERATION = 30;
|
|
|
54443
54526
|
const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell(new CircularDependencyError()));
|
|
54444
54527
|
const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
|
|
54445
54528
|
var Evaluator = class {
|
|
54529
|
+
context;
|
|
54446
54530
|
getters;
|
|
54447
54531
|
compilationParams;
|
|
54448
54532
|
evaluatedCells = new PositionMap();
|
|
@@ -56425,6 +56509,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
56425
56509
|
"getPivot",
|
|
56426
56510
|
"getFirstPivotFunction",
|
|
56427
56511
|
"getPivotIdFromPosition",
|
|
56512
|
+
"getPivotIdsFromPosition",
|
|
56428
56513
|
"getPivotCellFromPosition",
|
|
56429
56514
|
"generateNewCalculatedMeasureName",
|
|
56430
56515
|
"isPivotUnused",
|
|
@@ -56482,37 +56567,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
56482
56567
|
}
|
|
56483
56568
|
}
|
|
56484
56569
|
/**
|
|
56485
|
-
* Get the id of the pivot at the given position. Returns undefined if there
|
|
56570
|
+
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
56486
56571
|
* is no pivot at this position
|
|
56487
56572
|
*/
|
|
56488
56573
|
getPivotIdFromPosition(position) {
|
|
56574
|
+
return this.getPivotIdsFromPosition(position)[0];
|
|
56575
|
+
}
|
|
56576
|
+
/**
|
|
56577
|
+
* Get all of the ids of the pivot present in the formula at the given position.
|
|
56578
|
+
*/
|
|
56579
|
+
getPivotIdsFromPosition(position) {
|
|
56489
56580
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
56490
|
-
if (cell && cell.isFormula)
|
|
56491
|
-
|
|
56492
|
-
|
|
56493
|
-
|
|
56494
|
-
|
|
56495
|
-
|
|
56496
|
-
|
|
56581
|
+
if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
56582
|
+
return [];
|
|
56583
|
+
}
|
|
56584
|
+
getPivotIdsFromFormula(sheetId, formula) {
|
|
56585
|
+
return this.getPivotFunctions(sheetId, formula.tokens).map((pivotFunction) => {
|
|
56586
|
+
const pivotId = pivotFunction.args[0]?.toString();
|
|
56587
|
+
return pivotId && this.getters.getPivotId(pivotId);
|
|
56588
|
+
}).filter(isDefined);
|
|
56497
56589
|
}
|
|
56498
56590
|
isSpillPivotFormula(position) {
|
|
56499
56591
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
56500
56592
|
if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens)?.functionName === "PIVOT";
|
|
56501
56593
|
return false;
|
|
56502
56594
|
}
|
|
56503
|
-
|
|
56504
|
-
const
|
|
56505
|
-
if (!
|
|
56506
|
-
const
|
|
56507
|
-
|
|
56508
|
-
functionName,
|
|
56509
|
-
|
|
56595
|
+
getPivotFunctions(sheetId, tokens) {
|
|
56596
|
+
const pivotFunctions = getPivotFunctions(tokens);
|
|
56597
|
+
if (!pivotFunctions.length) return [];
|
|
56598
|
+
const evaluatedPivotFunctions = [];
|
|
56599
|
+
for (const pivotFunction of pivotFunctions) {
|
|
56600
|
+
const { functionName, args } = pivotFunction;
|
|
56601
|
+
const evaluatedArgs = args.map((argAst) => {
|
|
56510
56602
|
if (argAst.type === "EMPTY") return;
|
|
56511
56603
|
else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
|
|
56512
56604
|
const argsString = astToFormula(argAst);
|
|
56513
56605
|
return this.getters.evaluateFormula(sheetId, argsString);
|
|
56514
|
-
})
|
|
56515
|
-
|
|
56606
|
+
});
|
|
56607
|
+
evaluatedPivotFunctions.push({
|
|
56608
|
+
functionName,
|
|
56609
|
+
args: evaluatedArgs
|
|
56610
|
+
});
|
|
56611
|
+
}
|
|
56612
|
+
return evaluatedPivotFunctions;
|
|
56613
|
+
}
|
|
56614
|
+
getFirstPivotFunction(sheetId, tokens) {
|
|
56615
|
+
return this.getPivotFunctions(sheetId, tokens)[0];
|
|
56516
56616
|
}
|
|
56517
56617
|
/**
|
|
56518
56618
|
* Returns the domain args of a pivot formula from a position.
|
|
@@ -56606,8 +56706,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
56606
56706
|
const unusedPivots = new Set(this.getters.getPivotIds());
|
|
56607
56707
|
for (const sheetId of this.getters.getSheetIds()) for (const cellId in this.getters.getCells(sheetId)) {
|
|
56608
56708
|
const position = this.getters.getCellPosition(cellId);
|
|
56609
|
-
const
|
|
56610
|
-
|
|
56709
|
+
const pivotIds = this.getPivotIdsFromPosition(position);
|
|
56710
|
+
for (const pivotId of pivotIds) {
|
|
56611
56711
|
unusedPivots.delete(pivotId);
|
|
56612
56712
|
if (!unusedPivots.size) {
|
|
56613
56713
|
this.unusedPivots = [];
|
|
@@ -56615,6 +56715,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
56615
56715
|
}
|
|
56616
56716
|
}
|
|
56617
56717
|
}
|
|
56718
|
+
for (const pivotId of this.getters.getPivotIds()) {
|
|
56719
|
+
const pivot = this.getters.getPivot(pivotId);
|
|
56720
|
+
for (const measure of pivot.definition.measures) if (measure.computedBy) {
|
|
56721
|
+
const { sheetId } = measure.computedBy;
|
|
56722
|
+
const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
|
|
56723
|
+
const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
|
|
56724
|
+
for (const relatedPivotId of relatedPivotIds) {
|
|
56725
|
+
unusedPivots.delete(relatedPivotId);
|
|
56726
|
+
if (!unusedPivots.size) {
|
|
56727
|
+
this.unusedPivots = [];
|
|
56728
|
+
return [];
|
|
56729
|
+
}
|
|
56730
|
+
}
|
|
56731
|
+
}
|
|
56732
|
+
}
|
|
56618
56733
|
this.unusedPivots = [...unusedPivots];
|
|
56619
56734
|
return this.unusedPivots;
|
|
56620
56735
|
}
|
|
@@ -57767,6 +57882,8 @@ function transformPositionWithMerge(toTransform, executed) {
|
|
|
57767
57882
|
//#endregion
|
|
57768
57883
|
//#region src/collaborative/revisions.ts
|
|
57769
57884
|
var Revision = class {
|
|
57885
|
+
rootCommand;
|
|
57886
|
+
timestamp;
|
|
57770
57887
|
id;
|
|
57771
57888
|
clientId;
|
|
57772
57889
|
_commands = [];
|
|
@@ -57803,6 +57920,9 @@ var Revision = class {
|
|
|
57803
57920
|
//#region src/collaborative/session.ts
|
|
57804
57921
|
var ClientDisconnectedError = class extends Error {};
|
|
57805
57922
|
var Session = class extends EventBus {
|
|
57923
|
+
revisions;
|
|
57924
|
+
transportService;
|
|
57925
|
+
serverRevisionId;
|
|
57806
57926
|
/**
|
|
57807
57927
|
* Positions of the others client.
|
|
57808
57928
|
*/
|
|
@@ -61242,6 +61362,9 @@ var GridSelectionPlugin = class extends UIPlugin {
|
|
|
61242
61362
|
//#endregion
|
|
61243
61363
|
//#region src/helpers/internal_viewport.ts
|
|
61244
61364
|
var InternalViewport = class {
|
|
61365
|
+
getters;
|
|
61366
|
+
sheetId;
|
|
61367
|
+
boundaries;
|
|
61245
61368
|
top;
|
|
61246
61369
|
bottom;
|
|
61247
61370
|
left;
|
|
@@ -64455,6 +64578,7 @@ function instantiateClipboard() {
|
|
|
64455
64578
|
return new WebClipboardWrapper(navigator.clipboard);
|
|
64456
64579
|
}
|
|
64457
64580
|
var WebClipboardWrapper = class {
|
|
64581
|
+
clipboard;
|
|
64458
64582
|
constructor(clipboard) {
|
|
64459
64583
|
this.clipboard = clipboard;
|
|
64460
64584
|
}
|
|
@@ -64933,6 +65057,8 @@ function inverseCommand(cmd) {
|
|
|
64933
65057
|
* @param operations initial operations
|
|
64934
65058
|
*/
|
|
64935
65059
|
var Branch = class Branch {
|
|
65060
|
+
buildTransformation;
|
|
65061
|
+
operations;
|
|
64936
65062
|
constructor(buildTransformation, operations = []) {
|
|
64937
65063
|
this.buildTransformation = buildTransformation;
|
|
64938
65064
|
this.operations = operations;
|
|
@@ -65049,6 +65175,8 @@ var Branch = class Branch {
|
|
|
65049
65175
|
* to revert it).
|
|
65050
65176
|
*/
|
|
65051
65177
|
var Operation = class {
|
|
65178
|
+
id;
|
|
65179
|
+
data;
|
|
65052
65180
|
constructor(id, data) {
|
|
65053
65181
|
this.id = id;
|
|
65054
65182
|
this.data = data;
|
|
@@ -65058,6 +65186,8 @@ var Operation = class {
|
|
|
65058
65186
|
}
|
|
65059
65187
|
};
|
|
65060
65188
|
var LazyOperation = class LazyOperation {
|
|
65189
|
+
id;
|
|
65190
|
+
lazyData;
|
|
65061
65191
|
constructor(id, lazyData) {
|
|
65062
65192
|
this.id = id;
|
|
65063
65193
|
this.lazyData = lazyData;
|
|
@@ -65083,6 +65213,7 @@ var LazyOperation = class LazyOperation {
|
|
|
65083
65213
|
* ```
|
|
65084
65214
|
*/
|
|
65085
65215
|
var OperationSequence = class OperationSequence {
|
|
65216
|
+
operations;
|
|
65086
65217
|
constructor(operations) {
|
|
65087
65218
|
this.operations = operations;
|
|
65088
65219
|
}
|
|
@@ -65158,6 +65289,7 @@ var OperationSequence = class OperationSequence {
|
|
|
65158
65289
|
*
|
|
65159
65290
|
*/
|
|
65160
65291
|
var Tree = class {
|
|
65292
|
+
buildTransformation;
|
|
65161
65293
|
branches;
|
|
65162
65294
|
branchingOperationIds = /* @__PURE__ */ new Map();
|
|
65163
65295
|
constructor(buildTransformation, initialBranch) {
|
|
@@ -65740,6 +65872,7 @@ var EventStream = class {
|
|
|
65740
65872
|
* with the new selected anchor
|
|
65741
65873
|
*/
|
|
65742
65874
|
var SelectionStreamProcessorImpl = class {
|
|
65875
|
+
getters;
|
|
65743
65876
|
stream;
|
|
65744
65877
|
/**
|
|
65745
65878
|
* "Active" anchor used as a reference to compute new anchors
|
|
@@ -69033,6 +69166,6 @@ exports.stores = stores;
|
|
|
69033
69166
|
exports.tokenColors = tokenColors;
|
|
69034
69167
|
exports.tokenize = tokenize;
|
|
69035
69168
|
|
|
69036
|
-
__info__.version = "18.2.
|
|
69037
|
-
__info__.date = "2026-05-
|
|
69038
|
-
__info__.hash = "
|
|
69169
|
+
__info__.version = "18.2.54";
|
|
69170
|
+
__info__.date = "2026-05-27T05:56:03.418Z";
|
|
69171
|
+
__info__.hash = "bd06c51";
|
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 18.2.
|
|
6
|
-
* @date 2026-05-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.2.54
|
|
6
|
+
* @date 2026-05-27T05:56:04.950Z
|
|
7
|
+
* @hash bd06c51
|
|
8
8
|
*/
|
|
9
9
|
/* Originates from src/components/spreadsheet/spreadsheet.scss */
|
|
10
10
|
.o-spreadsheet {
|