@odoo/o-spreadsheet 19.2.12 → 19.2.14
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 +169 -27
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +169 -27
- package/dist/o_spreadsheet.iife.js +169 -27
- package/dist/o_spreadsheet.iife.min.js +235 -235
- package/dist/o_spreadsheet.xml +4 -4
- 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 19.2.
|
|
6
|
-
* @date 2026-05-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.14
|
|
6
|
+
* @date 2026-05-27T05:57:14.898Z
|
|
7
|
+
* @hash 96730cd
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -2062,6 +2062,7 @@ var DependencyContainer = class extends EventBus {
|
|
|
2062
2062
|
}
|
|
2063
2063
|
};
|
|
2064
2064
|
var StoreFactory = class {
|
|
2065
|
+
get;
|
|
2065
2066
|
pendingBuilds = /* @__PURE__ */ new Set();
|
|
2066
2067
|
constructor(get) {
|
|
2067
2068
|
this.get = get;
|
|
@@ -2106,6 +2107,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
2106
2107
|
return MetaStore;
|
|
2107
2108
|
}
|
|
2108
2109
|
var DisposableStore = class {
|
|
2110
|
+
get;
|
|
2109
2111
|
disposeCallbacks = [];
|
|
2110
2112
|
constructor(get) {
|
|
2111
2113
|
this.get = get;
|
|
@@ -2861,6 +2863,7 @@ function getAlternatingColorsPalette(quantity) {
|
|
|
2861
2863
|
else return ALTERNATING_COLORS_XL;
|
|
2862
2864
|
}
|
|
2863
2865
|
var ColorGenerator = class {
|
|
2866
|
+
preferredColors;
|
|
2864
2867
|
currentColorIndex = 0;
|
|
2865
2868
|
palette;
|
|
2866
2869
|
constructor(paletteSize, preferredColors = []) {
|
|
@@ -3579,6 +3582,7 @@ const _t = function(s, ...values) {
|
|
|
3579
3582
|
return sprintf(_translate(s), ...values);
|
|
3580
3583
|
};
|
|
3581
3584
|
var LazyTranslatedString = class extends String {
|
|
3585
|
+
values;
|
|
3582
3586
|
constructor(str, values) {
|
|
3583
3587
|
super(str);
|
|
3584
3588
|
this.values = values;
|
|
@@ -3608,6 +3612,8 @@ const CellErrorType = {
|
|
|
3608
3612
|
};
|
|
3609
3613
|
const errorTypes = new Set(Object.values(CellErrorType));
|
|
3610
3614
|
var EvaluationError = class {
|
|
3615
|
+
message;
|
|
3616
|
+
value;
|
|
3611
3617
|
constructor(message = _t("Error"), value = CellErrorType.GenericError) {
|
|
3612
3618
|
this.message = message;
|
|
3613
3619
|
this.value = value;
|
|
@@ -3640,6 +3646,7 @@ var UnknownFunctionError = class extends EvaluationError {
|
|
|
3640
3646
|
}
|
|
3641
3647
|
};
|
|
3642
3648
|
var SplillBlockedError = class extends EvaluationError {
|
|
3649
|
+
errorOriginPosition;
|
|
3643
3650
|
constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
|
|
3644
3651
|
super(message, CellErrorType.SpilledBlocked);
|
|
3645
3652
|
this.errorOriginPosition = errorOriginPosition;
|
|
@@ -6477,8 +6484,13 @@ function getApplyRangeChangeAddColRow(cmd) {
|
|
|
6477
6484
|
changeType: "NONE",
|
|
6478
6485
|
range
|
|
6479
6486
|
};
|
|
6487
|
+
const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
|
|
6488
|
+
if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
|
|
6489
|
+
changeType: "RESIZE",
|
|
6490
|
+
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
6491
|
+
};
|
|
6480
6492
|
if (cmd.position === "after") {
|
|
6481
|
-
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
|
|
6493
|
+
if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
|
|
6482
6494
|
changeType: "RESIZE",
|
|
6483
6495
|
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
6484
6496
|
};
|
|
@@ -7422,6 +7434,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
|
|
|
7422
7434
|
ROUNDDOWN: [{
|
|
7423
7435
|
type: "NUMBER",
|
|
7424
7436
|
value: 0
|
|
7437
|
+
}],
|
|
7438
|
+
IFERROR: [{
|
|
7439
|
+
type: "NUMBER",
|
|
7440
|
+
value: 0
|
|
7425
7441
|
}]
|
|
7426
7442
|
};
|
|
7427
7443
|
/**
|
|
@@ -10135,6 +10151,7 @@ function getScorecardConfiguration({ width, height }, runtime) {
|
|
|
10135
10151
|
}, runtime).computeDesign();
|
|
10136
10152
|
}
|
|
10137
10153
|
var ScorecardChartConfigBuilder = class {
|
|
10154
|
+
runtime;
|
|
10138
10155
|
context;
|
|
10139
10156
|
width;
|
|
10140
10157
|
height;
|
|
@@ -16214,6 +16231,10 @@ var GaugeChartComponent = class extends _odoo_owl.Component {
|
|
|
16214
16231
|
* Animation interpolating values using the ease-out quartic curve function (chartJS default easing)
|
|
16215
16232
|
*/
|
|
16216
16233
|
var Animation = class {
|
|
16234
|
+
startValue;
|
|
16235
|
+
endValue;
|
|
16236
|
+
duration;
|
|
16237
|
+
callback;
|
|
16217
16238
|
startTime = void 0;
|
|
16218
16239
|
animationFrameId = null;
|
|
16219
16240
|
constructor(startValue, endValue, duration, callback) {
|
|
@@ -16680,6 +16701,11 @@ var Popover = class extends _odoo_owl.Component {
|
|
|
16680
16701
|
}
|
|
16681
16702
|
};
|
|
16682
16703
|
var PopoverPositionContext = class {
|
|
16704
|
+
anchorRect;
|
|
16705
|
+
containerRect;
|
|
16706
|
+
propsMaxSize;
|
|
16707
|
+
spreadsheetOffset;
|
|
16708
|
+
lastPosition;
|
|
16683
16709
|
constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset, lastPosition) {
|
|
16684
16710
|
this.anchorRect = anchorRect;
|
|
16685
16711
|
this.containerRect = containerRect;
|
|
@@ -25784,6 +25810,7 @@ for (const category of categories) {
|
|
|
25784
25810
|
* Represent a raw XML string
|
|
25785
25811
|
*/
|
|
25786
25812
|
var XMLString = class {
|
|
25813
|
+
xmlString;
|
|
25787
25814
|
/**
|
|
25788
25815
|
* @param xmlString should be a well formed, properly escaped XML string
|
|
25789
25816
|
*/
|
|
@@ -34022,6 +34049,7 @@ var AbstractComposerStore = class extends SpreadsheetStore {
|
|
|
34022
34049
|
//#endregion
|
|
34023
34050
|
//#region src/components/composer/standalone_composer/standalone_composer_store.ts
|
|
34024
34051
|
var StandaloneComposerStore = class extends AbstractComposerStore {
|
|
34052
|
+
args;
|
|
34025
34053
|
constructor(get, args) {
|
|
34026
34054
|
super(get);
|
|
34027
34055
|
this.args = args;
|
|
@@ -34925,6 +34953,7 @@ var DOMDndHelper = class {
|
|
|
34925
34953
|
}
|
|
34926
34954
|
};
|
|
34927
34955
|
var ContainerWrapper = class {
|
|
34956
|
+
el;
|
|
34928
34957
|
constructor(el) {
|
|
34929
34958
|
this.el = el;
|
|
34930
34959
|
}
|
|
@@ -34996,6 +35025,10 @@ var FocusStore = class {
|
|
|
34996
35025
|
* This plugin handles this internal state.
|
|
34997
35026
|
*/
|
|
34998
35027
|
var SelectionInputStore = class extends SpreadsheetStore {
|
|
35028
|
+
initialRanges;
|
|
35029
|
+
inputHasSingleRange;
|
|
35030
|
+
colors;
|
|
35031
|
+
disabledRanges;
|
|
34999
35032
|
mutators = [
|
|
35000
35033
|
"resetWithRanges",
|
|
35001
35034
|
"focusById",
|
|
@@ -43089,6 +43122,8 @@ var MoreFormatsPanel = class extends _odoo_owl.Component {
|
|
|
43089
43122
|
//#endregion
|
|
43090
43123
|
//#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
|
|
43091
43124
|
var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
|
|
43125
|
+
pivotId;
|
|
43126
|
+
initialMeasure;
|
|
43092
43127
|
mutators = [
|
|
43093
43128
|
"cancelMeasureDisplayEdition",
|
|
43094
43129
|
"updateMeasureDisplayType",
|
|
@@ -43280,7 +43315,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
|
|
|
43280
43315
|
col,
|
|
43281
43316
|
row
|
|
43282
43317
|
};
|
|
43283
|
-
if (
|
|
43318
|
+
if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
|
|
43284
43319
|
}
|
|
43285
43320
|
return positions;
|
|
43286
43321
|
}
|
|
@@ -43571,6 +43606,7 @@ var PivotDimensionOrder = class extends _odoo_owl.Component {
|
|
|
43571
43606
|
//#endregion
|
|
43572
43607
|
//#region src/formulas/code_builder.ts
|
|
43573
43608
|
var FunctionCodeBuilder = class {
|
|
43609
|
+
scope;
|
|
43574
43610
|
code = "";
|
|
43575
43611
|
constructor(scope = new Scope()) {
|
|
43576
43612
|
this.scope = scope;
|
|
@@ -43586,6 +43622,8 @@ var FunctionCodeBuilder = class {
|
|
|
43586
43622
|
}
|
|
43587
43623
|
};
|
|
43588
43624
|
var FunctionCodeImpl = class {
|
|
43625
|
+
scope;
|
|
43626
|
+
returnExpression;
|
|
43589
43627
|
code;
|
|
43590
43628
|
constructor(scope, code, returnExpression) {
|
|
43591
43629
|
this.scope = scope;
|
|
@@ -43668,6 +43706,13 @@ const collator = new Intl.Collator("en", { sensitivity: "accent" });
|
|
|
43668
43706
|
* without recompiling it (for example when the formula is copied to another cell, or when we want to replace literal values but keep the same structure).
|
|
43669
43707
|
* */
|
|
43670
43708
|
var CompiledFormula = class CompiledFormula {
|
|
43709
|
+
sheetId;
|
|
43710
|
+
tokens;
|
|
43711
|
+
literalValues;
|
|
43712
|
+
symbols;
|
|
43713
|
+
isBadExpression;
|
|
43714
|
+
normalizedFormula;
|
|
43715
|
+
execute;
|
|
43671
43716
|
rangeDependencies;
|
|
43672
43717
|
hasDependencies;
|
|
43673
43718
|
constructor(sheetId, tokens, literalValues, symbols, dependencies, isBadExpression, normalizedFormula, execute) {
|
|
@@ -44552,13 +44597,30 @@ var PivotRuntimeDefinition = class {
|
|
|
44552
44597
|
break;
|
|
44553
44598
|
}
|
|
44554
44599
|
return {
|
|
44600
|
+
/**
|
|
44601
|
+
* Get the id of the measure, as it is stored in the pivot formula
|
|
44602
|
+
*/
|
|
44555
44603
|
id: measure.id,
|
|
44604
|
+
/**
|
|
44605
|
+
* Display name of the measure
|
|
44606
|
+
* e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
|
|
44607
|
+
*/
|
|
44556
44608
|
get displayName() {
|
|
44557
44609
|
return measure.userDefinedName ?? field?.string ?? measure.fieldName;
|
|
44558
44610
|
},
|
|
44559
44611
|
userDefinedName: measure.userDefinedName,
|
|
44612
|
+
/**
|
|
44613
|
+
* Get the name of the field of the measure
|
|
44614
|
+
*/
|
|
44560
44615
|
fieldName,
|
|
44616
|
+
/**
|
|
44617
|
+
* Get the aggregator of the measure
|
|
44618
|
+
*/
|
|
44561
44619
|
aggregator,
|
|
44620
|
+
/**
|
|
44621
|
+
* Get the type of the measure field
|
|
44622
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
44623
|
+
*/
|
|
44562
44624
|
type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
|
|
44563
44625
|
isValid,
|
|
44564
44626
|
isHidden: measure.isHidden,
|
|
@@ -44572,10 +44634,30 @@ var PivotRuntimeDefinition = class {
|
|
|
44572
44634
|
const type = field?.type ?? "integer";
|
|
44573
44635
|
const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
|
|
44574
44636
|
return {
|
|
44637
|
+
/**
|
|
44638
|
+
* Get the display name of the dimension
|
|
44639
|
+
* e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
|
|
44640
|
+
*/
|
|
44575
44641
|
displayName: field?.string ?? dimension.fieldName,
|
|
44642
|
+
/**
|
|
44643
|
+
* Get the name of the dimension, as it is stored in the pivot formula
|
|
44644
|
+
* e.g. "stage_id", "create_date:month"
|
|
44645
|
+
*/
|
|
44576
44646
|
nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
|
|
44647
|
+
/**
|
|
44648
|
+
* Get the name of the field of the dimension
|
|
44649
|
+
* e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
|
|
44650
|
+
*/
|
|
44577
44651
|
fieldName: dimension.fieldName,
|
|
44652
|
+
/**
|
|
44653
|
+
* Get the aggregate operator of the dimension
|
|
44654
|
+
* e.g. "stage_id" -> undefined, "create_date:month" -> "month"
|
|
44655
|
+
*/
|
|
44578
44656
|
granularity,
|
|
44657
|
+
/**
|
|
44658
|
+
* Get the type of the field of the dimension
|
|
44659
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
44660
|
+
*/
|
|
44579
44661
|
type: field?.isCustomField ? "custom" : type,
|
|
44580
44662
|
order: dimension.order,
|
|
44581
44663
|
isValid: !!field,
|
|
@@ -45721,6 +45803,9 @@ const PIVOT_FUNCTIONS = [
|
|
|
45721
45803
|
function getFirstPivotFunction(compiledFormula, getters) {
|
|
45722
45804
|
return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters)[0];
|
|
45723
45805
|
}
|
|
45806
|
+
function getPivotFunctions(compiledFormula, getters) {
|
|
45807
|
+
return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters);
|
|
45808
|
+
}
|
|
45724
45809
|
/**
|
|
45725
45810
|
* Parse a spreadsheet formula and detect the number of PIVOT functions that are
|
|
45726
45811
|
* present in the given formula.
|
|
@@ -45797,6 +45882,8 @@ function extractFormulaIdFromToken(tokenAtCursor) {
|
|
|
45797
45882
|
//#endregion
|
|
45798
45883
|
//#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
|
|
45799
45884
|
var PivotSidePanelStore = class extends SpreadsheetStore {
|
|
45885
|
+
pivotId;
|
|
45886
|
+
updateMode;
|
|
45800
45887
|
mutators = [
|
|
45801
45888
|
"reset",
|
|
45802
45889
|
"deferUpdates",
|
|
@@ -60108,6 +60195,8 @@ function buildCompilationParameters(context, getters, computeCell) {
|
|
|
60108
60195
|
return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
|
|
60109
60196
|
}
|
|
60110
60197
|
var CompilationParametersBuilder = class {
|
|
60198
|
+
getters;
|
|
60199
|
+
computeCell;
|
|
60111
60200
|
evalContext;
|
|
60112
60201
|
rangeCache = {};
|
|
60113
60202
|
constructor(context, getters, computeCell) {
|
|
@@ -61238,6 +61327,7 @@ const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell({
|
|
|
61238
61327
|
}));
|
|
61239
61328
|
const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
|
|
61240
61329
|
var Evaluator = class {
|
|
61330
|
+
context;
|
|
61241
61331
|
getters;
|
|
61242
61332
|
compilationParams;
|
|
61243
61333
|
evaluatedCells = new PositionMap();
|
|
@@ -63628,6 +63718,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
63628
63718
|
"getFirstPivotFunction",
|
|
63629
63719
|
"getPivotCellSortDirection",
|
|
63630
63720
|
"getPivotIdFromPosition",
|
|
63721
|
+
"getPivotIdsFromPosition",
|
|
63631
63722
|
"getPivotCellFromPosition",
|
|
63632
63723
|
"generateNewCalculatedMeasureName",
|
|
63633
63724
|
"isPivotUnused",
|
|
@@ -63687,37 +63778,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
63687
63778
|
}
|
|
63688
63779
|
}
|
|
63689
63780
|
/**
|
|
63690
|
-
* Get the id of the pivot at the given position. Returns undefined if there
|
|
63781
|
+
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
63691
63782
|
* is no pivot at this position
|
|
63692
63783
|
*/
|
|
63693
63784
|
getPivotIdFromPosition(position) {
|
|
63785
|
+
return this.getPivotIdsFromPosition(position)[0];
|
|
63786
|
+
}
|
|
63787
|
+
/**
|
|
63788
|
+
* Get all of the ids of the pivot present in the formula at the given position.
|
|
63789
|
+
*/
|
|
63790
|
+
getPivotIdsFromPosition(position) {
|
|
63694
63791
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
63695
|
-
if (cell && cell.isFormula)
|
|
63696
|
-
|
|
63697
|
-
|
|
63698
|
-
|
|
63699
|
-
|
|
63700
|
-
|
|
63701
|
-
|
|
63792
|
+
if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
63793
|
+
return [];
|
|
63794
|
+
}
|
|
63795
|
+
getPivotIdsFromFormula(sheetId, formula) {
|
|
63796
|
+
return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
|
|
63797
|
+
const pivotId = pivotFunction.args[0]?.toString();
|
|
63798
|
+
return pivotId && this.getters.getPivotId(pivotId);
|
|
63799
|
+
}).filter(isDefined);
|
|
63702
63800
|
}
|
|
63703
63801
|
isSpillPivotFormula(position) {
|
|
63704
63802
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
63705
63803
|
if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula)?.functionName === "PIVOT";
|
|
63706
63804
|
return false;
|
|
63707
63805
|
}
|
|
63708
|
-
|
|
63709
|
-
const
|
|
63710
|
-
if (!
|
|
63711
|
-
const
|
|
63712
|
-
|
|
63713
|
-
functionName,
|
|
63714
|
-
|
|
63806
|
+
getPivotFunctions(sheetId, formula) {
|
|
63807
|
+
const pivotFunctions = getPivotFunctions(formula, this.getters);
|
|
63808
|
+
if (!pivotFunctions.length) return [];
|
|
63809
|
+
const evaluatedPivotFunctions = [];
|
|
63810
|
+
for (const pivotFunction of pivotFunctions) {
|
|
63811
|
+
const { functionName, args } = pivotFunction;
|
|
63812
|
+
const evaluatedArgs = args.map((argAst) => {
|
|
63715
63813
|
if (argAst.type === "EMPTY") return;
|
|
63716
63814
|
else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
|
|
63717
63815
|
const argsString = astToFormula(argAst);
|
|
63718
63816
|
return this.getters.evaluateFormula(sheetId, argsString);
|
|
63719
|
-
})
|
|
63720
|
-
|
|
63817
|
+
});
|
|
63818
|
+
evaluatedPivotFunctions.push({
|
|
63819
|
+
functionName,
|
|
63820
|
+
args: evaluatedArgs
|
|
63821
|
+
});
|
|
63822
|
+
}
|
|
63823
|
+
return evaluatedPivotFunctions;
|
|
63824
|
+
}
|
|
63825
|
+
getFirstPivotFunction(sheetId, formula) {
|
|
63826
|
+
return this.getPivotFunctions(sheetId, formula)[0];
|
|
63721
63827
|
}
|
|
63722
63828
|
/**
|
|
63723
63829
|
* Returns the domain args of a pivot formula from a position.
|
|
@@ -63823,8 +63929,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
63823
63929
|
const unusedPivots = new Set(this.getters.getPivotIds());
|
|
63824
63930
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) {
|
|
63825
63931
|
const position = this.getters.getCellPosition(cell.id);
|
|
63826
|
-
const
|
|
63827
|
-
|
|
63932
|
+
const pivotIds = this.getPivotIdsFromPosition(position);
|
|
63933
|
+
for (const pivotId of pivotIds) {
|
|
63828
63934
|
unusedPivots.delete(pivotId);
|
|
63829
63935
|
if (!unusedPivots.size) {
|
|
63830
63936
|
this.unusedPivotsInFormulas = [];
|
|
@@ -63832,6 +63938,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
63832
63938
|
}
|
|
63833
63939
|
}
|
|
63834
63940
|
}
|
|
63941
|
+
for (const pivotId of this.getters.getPivotIds()) {
|
|
63942
|
+
const pivot = this.getters.getPivot(pivotId);
|
|
63943
|
+
for (const measure of pivot.definition.measures) if (measure.computedBy) {
|
|
63944
|
+
const { sheetId } = measure.computedBy;
|
|
63945
|
+
const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
|
|
63946
|
+
const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
|
|
63947
|
+
for (const relatedPivotId of relatedPivotIds) {
|
|
63948
|
+
unusedPivots.delete(relatedPivotId);
|
|
63949
|
+
if (!unusedPivots.size) {
|
|
63950
|
+
this.unusedPivotsInFormulas = [];
|
|
63951
|
+
return [];
|
|
63952
|
+
}
|
|
63953
|
+
}
|
|
63954
|
+
}
|
|
63955
|
+
}
|
|
63835
63956
|
this.unusedPivotsInFormulas = [...unusedPivots];
|
|
63836
63957
|
return this.unusedPivotsInFormulas;
|
|
63837
63958
|
}
|
|
@@ -63870,6 +63991,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
63870
63991
|
//#endregion
|
|
63871
63992
|
//#region src/clipboard_handlers/abstract_clipboard_handler.ts
|
|
63872
63993
|
var ClipboardHandler = class {
|
|
63994
|
+
getters;
|
|
63995
|
+
dispatch;
|
|
63873
63996
|
constructor(getters, dispatch) {
|
|
63874
63997
|
this.getters = getters;
|
|
63875
63998
|
this.dispatch = dispatch;
|
|
@@ -66164,6 +66287,8 @@ function transformPositionWithMerge(toTransform, executed) {
|
|
|
66164
66287
|
//#endregion
|
|
66165
66288
|
//#region src/collaborative/revisions.ts
|
|
66166
66289
|
var Revision = class {
|
|
66290
|
+
rootCommand;
|
|
66291
|
+
timestamp;
|
|
66167
66292
|
id;
|
|
66168
66293
|
clientId;
|
|
66169
66294
|
_commands = [];
|
|
@@ -66200,6 +66325,9 @@ var Revision = class {
|
|
|
66200
66325
|
//#region src/collaborative/session.ts
|
|
66201
66326
|
var ClientDisconnectedError = class extends Error {};
|
|
66202
66327
|
var Session = class extends EventBus {
|
|
66328
|
+
revisions;
|
|
66329
|
+
transportService;
|
|
66330
|
+
serverRevisionId;
|
|
66203
66331
|
/**
|
|
66204
66332
|
* Positions of the others client.
|
|
66205
66333
|
*/
|
|
@@ -69779,6 +69907,9 @@ var GridSelectionPlugin = class extends UIPlugin {
|
|
|
69779
69907
|
//#endregion
|
|
69780
69908
|
//#region src/helpers/internal_viewport.ts
|
|
69781
69909
|
var InternalViewport = class {
|
|
69910
|
+
getters;
|
|
69911
|
+
sheetId;
|
|
69912
|
+
boundaries;
|
|
69782
69913
|
top;
|
|
69783
69914
|
bottom;
|
|
69784
69915
|
left;
|
|
@@ -74589,6 +74720,7 @@ function instantiateClipboard() {
|
|
|
74589
74720
|
return new WebClipboardWrapper(navigator.clipboard);
|
|
74590
74721
|
}
|
|
74591
74722
|
var WebClipboardWrapper = class {
|
|
74723
|
+
clipboard;
|
|
74592
74724
|
constructor(clipboard) {
|
|
74593
74725
|
this.clipboard = clipboard;
|
|
74594
74726
|
}
|
|
@@ -74860,6 +74992,7 @@ var Spreadsheet = class extends _odoo_owl.Component {
|
|
|
74860
74992
|
//#endregion
|
|
74861
74993
|
//#region src/collaborative/readonly_transport_filter.ts
|
|
74862
74994
|
var ReadonlyTransportFilter = class {
|
|
74995
|
+
transportService;
|
|
74863
74996
|
constructor(transportService) {
|
|
74864
74997
|
this.transportService = transportService;
|
|
74865
74998
|
}
|
|
@@ -74891,6 +75024,8 @@ function inverseCommand(cmd) {
|
|
|
74891
75024
|
* @param operations initial operations
|
|
74892
75025
|
*/
|
|
74893
75026
|
var Branch = class Branch {
|
|
75027
|
+
buildTransformation;
|
|
75028
|
+
operations;
|
|
74894
75029
|
constructor(buildTransformation, operations = []) {
|
|
74895
75030
|
this.buildTransformation = buildTransformation;
|
|
74896
75031
|
this.operations = operations;
|
|
@@ -75007,6 +75142,8 @@ var Branch = class Branch {
|
|
|
75007
75142
|
* to revert it).
|
|
75008
75143
|
*/
|
|
75009
75144
|
var Operation = class {
|
|
75145
|
+
id;
|
|
75146
|
+
data;
|
|
75010
75147
|
constructor(id, data) {
|
|
75011
75148
|
this.id = id;
|
|
75012
75149
|
this.data = data;
|
|
@@ -75016,6 +75153,8 @@ var Operation = class {
|
|
|
75016
75153
|
}
|
|
75017
75154
|
};
|
|
75018
75155
|
var LazyOperation = class LazyOperation {
|
|
75156
|
+
id;
|
|
75157
|
+
lazyData;
|
|
75019
75158
|
constructor(id, lazyData) {
|
|
75020
75159
|
this.id = id;
|
|
75021
75160
|
this.lazyData = lazyData;
|
|
@@ -75041,6 +75180,7 @@ var LazyOperation = class LazyOperation {
|
|
|
75041
75180
|
* ```
|
|
75042
75181
|
*/
|
|
75043
75182
|
var OperationSequence = class OperationSequence {
|
|
75183
|
+
operations;
|
|
75044
75184
|
constructor(operations) {
|
|
75045
75185
|
this.operations = operations;
|
|
75046
75186
|
}
|
|
@@ -75116,6 +75256,7 @@ var OperationSequence = class OperationSequence {
|
|
|
75116
75256
|
*
|
|
75117
75257
|
*/
|
|
75118
75258
|
var Tree = class {
|
|
75259
|
+
buildTransformation;
|
|
75119
75260
|
branches;
|
|
75120
75261
|
branchingOperationIds = /* @__PURE__ */ new Map();
|
|
75121
75262
|
constructor(buildTransformation, initialBranch) {
|
|
@@ -75930,6 +76071,7 @@ var EventStream = class {
|
|
|
75930
76071
|
* with the new selected anchor
|
|
75931
76072
|
*/
|
|
75932
76073
|
var SelectionStreamProcessorImpl = class {
|
|
76074
|
+
getters;
|
|
75933
76075
|
stream;
|
|
75934
76076
|
/**
|
|
75935
76077
|
* "Active" anchor used as a reference to compute new anchors
|
|
@@ -81747,6 +81889,6 @@ exports.stores = stores;
|
|
|
81747
81889
|
exports.tokenColors = tokenColors;
|
|
81748
81890
|
exports.tokenize = tokenize;
|
|
81749
81891
|
|
|
81750
|
-
__info__.version = "19.2.
|
|
81751
|
-
__info__.date = "2026-05-
|
|
81752
|
-
__info__.hash = "
|
|
81892
|
+
__info__.version = "19.2.14";
|
|
81893
|
+
__info__.date = "2026-05-27T05:57:14.898Z";
|
|
81894
|
+
__info__.hash = "96730cd";
|
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.2.
|
|
6
|
-
* @date 2026-05-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.14
|
|
6
|
+
* @date 2026-05-27T05:57:16.585Z
|
|
7
|
+
* @hash 96730cd
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|