@odoo/o-spreadsheet 18.3.47 → 18.3.49
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 +164 -27
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +164 -27
- package/dist/o_spreadsheet.iife.js +164 -27
- package/dist/o_spreadsheet.iife.min.js +300 -300
- 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 18.3.
|
|
6
|
-
* @date 2026-05-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.3.49
|
|
6
|
+
* @date 2026-05-27T05:57:05.809Z
|
|
7
|
+
* @hash fc34456
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -1352,6 +1352,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
1352
1352
|
else return ALTERNATING_COLORS_XL;
|
|
1353
1353
|
}
|
|
1354
1354
|
var ColorGenerator = class {
|
|
1355
|
+
preferredColors;
|
|
1355
1356
|
currentColorIndex = 0;
|
|
1356
1357
|
palette;
|
|
1357
1358
|
constructor(paletteSize, preferredColors = []) {
|
|
@@ -2933,6 +2934,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
2933
2934
|
return sprintf(_translate(s), ...values);
|
|
2934
2935
|
};
|
|
2935
2936
|
var LazyTranslatedString = class extends String {
|
|
2937
|
+
values;
|
|
2936
2938
|
constructor(str, values) {
|
|
2937
2939
|
super(str);
|
|
2938
2940
|
this.values = values;
|
|
@@ -3331,6 +3333,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
3331
3333
|
};
|
|
3332
3334
|
const errorTypes = new Set(Object.values(CellErrorType));
|
|
3333
3335
|
var EvaluationError = class {
|
|
3336
|
+
message;
|
|
3337
|
+
value;
|
|
3334
3338
|
constructor(message = _t("Error"), value = CellErrorType.GenericError) {
|
|
3335
3339
|
this.message = message;
|
|
3336
3340
|
this.value = value;
|
|
@@ -3363,6 +3367,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
3363
3367
|
}
|
|
3364
3368
|
};
|
|
3365
3369
|
var SplillBlockedError = class extends EvaluationError {
|
|
3370
|
+
errorOriginPosition;
|
|
3366
3371
|
constructor(message = _t("Spill range is not empty"), errorOriginPosition) {
|
|
3367
3372
|
super(message, CellErrorType.SpilledBlocked);
|
|
3368
3373
|
this.errorOriginPosition = errorOriginPosition;
|
|
@@ -5514,8 +5519,13 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
5514
5519
|
changeType: "NONE",
|
|
5515
5520
|
range
|
|
5516
5521
|
};
|
|
5522
|
+
const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
|
|
5523
|
+
if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
|
|
5524
|
+
changeType: "RESIZE",
|
|
5525
|
+
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
5526
|
+
};
|
|
5517
5527
|
if (cmd.position === "after") {
|
|
5518
|
-
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
|
|
5528
|
+
if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
|
|
5519
5529
|
changeType: "RESIZE",
|
|
5520
5530
|
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
5521
5531
|
};
|
|
@@ -6159,6 +6169,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
6159
6169
|
//#endregion
|
|
6160
6170
|
//#region src/clipboard_handlers/abstract_clipboard_handler.ts
|
|
6161
6171
|
var ClipboardHandler = class {
|
|
6172
|
+
getters;
|
|
6173
|
+
dispatch;
|
|
6162
6174
|
constructor(getters, dispatch) {
|
|
6163
6175
|
this.getters = getters;
|
|
6164
6176
|
this.dispatch = dispatch;
|
|
@@ -8584,6 +8596,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
8584
8596
|
}
|
|
8585
8597
|
};
|
|
8586
8598
|
var StoreFactory = class {
|
|
8599
|
+
get;
|
|
8587
8600
|
pendingBuilds = /* @__PURE__ */ new Set();
|
|
8588
8601
|
constructor(get) {
|
|
8589
8602
|
this.get = get;
|
|
@@ -8628,6 +8641,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8628
8641
|
return MetaStore;
|
|
8629
8642
|
}
|
|
8630
8643
|
var DisposableStore = class {
|
|
8644
|
+
get;
|
|
8631
8645
|
disposeCallbacks = [];
|
|
8632
8646
|
constructor(get) {
|
|
8633
8647
|
this.get = get;
|
|
@@ -16906,6 +16920,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
16906
16920
|
//#endregion
|
|
16907
16921
|
//#region src/formulas/code_builder.ts
|
|
16908
16922
|
var FunctionCodeBuilder = class {
|
|
16923
|
+
scope;
|
|
16909
16924
|
code = "";
|
|
16910
16925
|
constructor(scope = new Scope()) {
|
|
16911
16926
|
this.scope = scope;
|
|
@@ -16921,6 +16936,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
16921
16936
|
}
|
|
16922
16937
|
};
|
|
16923
16938
|
var FunctionCodeImpl = class {
|
|
16939
|
+
scope;
|
|
16940
|
+
returnExpression;
|
|
16924
16941
|
code;
|
|
16925
16942
|
constructor(scope, code, returnExpression) {
|
|
16926
16943
|
this.scope = scope;
|
|
@@ -18781,6 +18798,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
18781
18798
|
}, runtime).computeDesign();
|
|
18782
18799
|
}
|
|
18783
18800
|
var ScorecardChartConfigBuilder = class {
|
|
18801
|
+
runtime;
|
|
18784
18802
|
context;
|
|
18785
18803
|
width;
|
|
18786
18804
|
height;
|
|
@@ -19899,6 +19917,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
19899
19917
|
function getFirstPivotFunction(tokens) {
|
|
19900
19918
|
return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS)[0];
|
|
19901
19919
|
}
|
|
19920
|
+
function getPivotFunctions(tokens) {
|
|
19921
|
+
return getFunctionsFromTokens(tokens, PIVOT_FUNCTIONS);
|
|
19922
|
+
}
|
|
19902
19923
|
/**
|
|
19903
19924
|
* Parse a spreadsheet formula and detect the number of PIVOT functions that are
|
|
19904
19925
|
* present in the given formula.
|
|
@@ -25564,6 +25585,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
25564
25585
|
* Represent a raw XML string
|
|
25565
25586
|
*/
|
|
25566
25587
|
var XMLString = class {
|
|
25588
|
+
xmlString;
|
|
25567
25589
|
/**
|
|
25568
25590
|
* @param xmlString should be a well formed, properly escaped XML string
|
|
25569
25591
|
*/
|
|
@@ -26159,6 +26181,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
26159
26181
|
ROUNDDOWN: [{
|
|
26160
26182
|
type: "NUMBER",
|
|
26161
26183
|
value: 0
|
|
26184
|
+
}],
|
|
26185
|
+
IFERROR: [{
|
|
26186
|
+
type: "NUMBER",
|
|
26187
|
+
value: 0
|
|
26162
26188
|
}]
|
|
26163
26189
|
};
|
|
26164
26190
|
/**
|
|
@@ -31888,6 +31914,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31888
31914
|
}
|
|
31889
31915
|
};
|
|
31890
31916
|
var PopoverPositionContext = class {
|
|
31917
|
+
anchorRect;
|
|
31918
|
+
containerRect;
|
|
31919
|
+
propsMaxSize;
|
|
31920
|
+
spreadsheetOffset;
|
|
31891
31921
|
constructor(anchorRect, containerRect, propsMaxSize, spreadsheetOffset) {
|
|
31892
31922
|
this.anchorRect = anchorRect;
|
|
31893
31923
|
this.containerRect = containerRect;
|
|
@@ -34674,7 +34704,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
34674
34704
|
col,
|
|
34675
34705
|
row
|
|
34676
34706
|
};
|
|
34677
|
-
if (
|
|
34707
|
+
if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
|
|
34678
34708
|
}
|
|
34679
34709
|
return positions;
|
|
34680
34710
|
}
|
|
@@ -35337,6 +35367,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35337
35367
|
}
|
|
35338
35368
|
};
|
|
35339
35369
|
var ContainerWrapper = class {
|
|
35370
|
+
el;
|
|
35340
35371
|
constructor(el) {
|
|
35341
35372
|
this.el = el;
|
|
35342
35373
|
}
|
|
@@ -35422,6 +35453,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35422
35453
|
* This plugin handles this internal state.
|
|
35423
35454
|
*/
|
|
35424
35455
|
var SelectionInputStore = class extends SpreadsheetStore {
|
|
35456
|
+
initialRanges;
|
|
35457
|
+
inputHasSingleRange;
|
|
35458
|
+
colors;
|
|
35425
35459
|
mutators = [
|
|
35426
35460
|
"resetWithRanges",
|
|
35427
35461
|
"focusById",
|
|
@@ -38725,6 +38759,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
38725
38759
|
//#endregion
|
|
38726
38760
|
//#region src/components/composer/standalone_composer/standalone_composer_store.ts
|
|
38727
38761
|
var StandaloneComposerStore = class extends AbstractComposerStore {
|
|
38762
|
+
args;
|
|
38728
38763
|
constructor(get, args) {
|
|
38729
38764
|
super(get);
|
|
38730
38765
|
this.args = args;
|
|
@@ -42497,6 +42532,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
42497
42532
|
//#endregion
|
|
42498
42533
|
//#region src/components/side_panel/pivot/pivot_measure_display_panel/pivot_measure_display_panel_store.ts
|
|
42499
42534
|
var PivotMeasureDisplayPanelStore = class extends SpreadsheetStore {
|
|
42535
|
+
pivotId;
|
|
42536
|
+
initialMeasure;
|
|
42500
42537
|
mutators = [
|
|
42501
42538
|
"cancelMeasureDisplayEdition",
|
|
42502
42539
|
"updateMeasureDisplayType",
|
|
@@ -43536,13 +43573,30 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
43536
43573
|
} : fields[fieldName];
|
|
43537
43574
|
const aggregator = measure.aggregator;
|
|
43538
43575
|
return {
|
|
43576
|
+
/**
|
|
43577
|
+
* Get the id of the measure, as it is stored in the pivot formula
|
|
43578
|
+
*/
|
|
43539
43579
|
id: measure.id,
|
|
43580
|
+
/**
|
|
43581
|
+
* Display name of the measure
|
|
43582
|
+
* e.g. "__count" -> "Count", "amount_total" -> "Total Amount"
|
|
43583
|
+
*/
|
|
43540
43584
|
get displayName() {
|
|
43541
43585
|
return measure.userDefinedName ?? field?.string ?? measure.fieldName;
|
|
43542
43586
|
},
|
|
43543
43587
|
userDefinedName: measure.userDefinedName,
|
|
43588
|
+
/**
|
|
43589
|
+
* Get the name of the field of the measure
|
|
43590
|
+
*/
|
|
43544
43591
|
fieldName,
|
|
43592
|
+
/**
|
|
43593
|
+
* Get the aggregator of the measure
|
|
43594
|
+
*/
|
|
43545
43595
|
aggregator,
|
|
43596
|
+
/**
|
|
43597
|
+
* Get the type of the measure field
|
|
43598
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
43599
|
+
*/
|
|
43546
43600
|
type: fieldName === "__count" ? "integer" : field?.type ?? "integer",
|
|
43547
43601
|
isValid: !!(field || measure.computedBy),
|
|
43548
43602
|
isHidden: measure.isHidden,
|
|
@@ -43556,10 +43610,30 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
43556
43610
|
const type = field?.type ?? "integer";
|
|
43557
43611
|
const granularity = field && isDateOrDatetimeField(field) ? dimension.granularity : void 0;
|
|
43558
43612
|
return {
|
|
43613
|
+
/**
|
|
43614
|
+
* Get the display name of the dimension
|
|
43615
|
+
* e.g. "stage_id" -> "Stage", "create_date:month" -> "Create Date"
|
|
43616
|
+
*/
|
|
43559
43617
|
displayName: field?.string ?? dimension.fieldName,
|
|
43618
|
+
/**
|
|
43619
|
+
* Get the name of the dimension, as it is stored in the pivot formula
|
|
43620
|
+
* e.g. "stage_id", "create_date:month"
|
|
43621
|
+
*/
|
|
43560
43622
|
nameWithGranularity: dimension.fieldName + (granularity ? `:${granularity}` : ""),
|
|
43623
|
+
/**
|
|
43624
|
+
* Get the name of the field of the dimension
|
|
43625
|
+
* e.g. "stage_id" -> "stage_id", "create_date:month" -> "create_date"
|
|
43626
|
+
*/
|
|
43561
43627
|
fieldName: dimension.fieldName,
|
|
43628
|
+
/**
|
|
43629
|
+
* Get the aggregate operator of the dimension
|
|
43630
|
+
* e.g. "stage_id" -> undefined, "create_date:month" -> "month"
|
|
43631
|
+
*/
|
|
43562
43632
|
granularity,
|
|
43633
|
+
/**
|
|
43634
|
+
* Get the type of the field of the dimension
|
|
43635
|
+
* e.g. "stage_id" -> "many2one", "create_date:month" -> "date"
|
|
43636
|
+
*/
|
|
43563
43637
|
type,
|
|
43564
43638
|
order: dimension.order,
|
|
43565
43639
|
isValid: !!field
|
|
@@ -44598,6 +44672,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44598
44672
|
//#endregion
|
|
44599
44673
|
//#region src/components/side_panel/pivot/pivot_side_panel/pivot_side_panel_store.ts
|
|
44600
44674
|
var PivotSidePanelStore = class extends SpreadsheetStore {
|
|
44675
|
+
pivotId;
|
|
44601
44676
|
mutators = [
|
|
44602
44677
|
"reset",
|
|
44603
44678
|
"deferUpdates",
|
|
@@ -52266,6 +52341,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
52266
52341
|
}
|
|
52267
52342
|
};
|
|
52268
52343
|
var FormulaCellWithDependencies = class {
|
|
52344
|
+
id;
|
|
52345
|
+
format;
|
|
52346
|
+
style;
|
|
52347
|
+
sheetId;
|
|
52348
|
+
getRangeString;
|
|
52269
52349
|
isFormula = true;
|
|
52270
52350
|
compiledFormula;
|
|
52271
52351
|
constructor(id, compiledFormula, format, style, dependencies, sheetId, getRangeString) {
|
|
@@ -52300,6 +52380,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
52300
52380
|
}
|
|
52301
52381
|
};
|
|
52302
52382
|
var RangeReferenceToken = class {
|
|
52383
|
+
ranges;
|
|
52384
|
+
rangeIndex;
|
|
52385
|
+
sheetId;
|
|
52386
|
+
getRangeString;
|
|
52303
52387
|
type = "REFERENCE";
|
|
52304
52388
|
constructor(ranges, rangeIndex, sheetId, getRangeString) {
|
|
52305
52389
|
this.ranges = ranges;
|
|
@@ -56111,6 +56195,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
56111
56195
|
return new CompilationParametersBuilder(context, getters, computeCell).getParameters();
|
|
56112
56196
|
}
|
|
56113
56197
|
var CompilationParametersBuilder = class {
|
|
56198
|
+
getters;
|
|
56199
|
+
computeCell;
|
|
56114
56200
|
evalContext;
|
|
56115
56201
|
rangeCache = {};
|
|
56116
56202
|
constructor(context, getters, computeCell) {
|
|
@@ -56564,6 +56650,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
56564
56650
|
* It uses an R-Tree data structure to efficiently find dependent cells.
|
|
56565
56651
|
*/
|
|
56566
56652
|
var FormulaDependencyGraph = class {
|
|
56653
|
+
createEmptyPositionSet;
|
|
56567
56654
|
dependencies = new PositionMap();
|
|
56568
56655
|
rTree;
|
|
56569
56656
|
constructor(createEmptyPositionSet, data = []) {
|
|
@@ -56865,6 +56952,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
56865
56952
|
const ERROR_CYCLE_CELL = Object.freeze(createEvaluatedCell(new CircularDependencyError()));
|
|
56866
56953
|
const EMPTY_CELL = Object.freeze(createEvaluatedCell({ value: null }));
|
|
56867
56954
|
var Evaluator = class {
|
|
56955
|
+
context;
|
|
56868
56956
|
getters;
|
|
56869
56957
|
compilationParams;
|
|
56870
56958
|
evaluatedCells = new PositionMap();
|
|
@@ -58870,6 +58958,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58870
58958
|
"getPivot",
|
|
58871
58959
|
"getFirstPivotFunction",
|
|
58872
58960
|
"getPivotIdFromPosition",
|
|
58961
|
+
"getPivotIdsFromPosition",
|
|
58873
58962
|
"getPivotCellFromPosition",
|
|
58874
58963
|
"generateNewCalculatedMeasureName",
|
|
58875
58964
|
"isPivotUnused",
|
|
@@ -58927,37 +59016,52 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58927
59016
|
}
|
|
58928
59017
|
}
|
|
58929
59018
|
/**
|
|
58930
|
-
* Get the id of the pivot at the given position. Returns undefined if there
|
|
59019
|
+
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
58931
59020
|
* is no pivot at this position
|
|
58932
59021
|
*/
|
|
58933
59022
|
getPivotIdFromPosition(position) {
|
|
59023
|
+
return this.getPivotIdsFromPosition(position)[0];
|
|
59024
|
+
}
|
|
59025
|
+
/**
|
|
59026
|
+
* Get all of the ids of the pivot present in the formula at the given position.
|
|
59027
|
+
*/
|
|
59028
|
+
getPivotIdsFromPosition(position) {
|
|
58934
59029
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
58935
|
-
if (cell && cell.isFormula)
|
|
58936
|
-
|
|
58937
|
-
|
|
58938
|
-
|
|
58939
|
-
|
|
58940
|
-
|
|
58941
|
-
|
|
59030
|
+
if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
59031
|
+
return [];
|
|
59032
|
+
}
|
|
59033
|
+
getPivotIdsFromFormula(sheetId, formula) {
|
|
59034
|
+
return this.getPivotFunctions(sheetId, formula.tokens).map((pivotFunction) => {
|
|
59035
|
+
const pivotId = pivotFunction.args[0]?.toString();
|
|
59036
|
+
return pivotId && this.getters.getPivotId(pivotId);
|
|
59037
|
+
}).filter(isDefined);
|
|
58942
59038
|
}
|
|
58943
59039
|
isSpillPivotFormula(position) {
|
|
58944
59040
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
58945
59041
|
if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula.tokens)?.functionName === "PIVOT";
|
|
58946
59042
|
return false;
|
|
58947
59043
|
}
|
|
58948
|
-
|
|
58949
|
-
const
|
|
58950
|
-
if (!
|
|
58951
|
-
const
|
|
58952
|
-
|
|
58953
|
-
functionName,
|
|
58954
|
-
|
|
59044
|
+
getPivotFunctions(sheetId, tokens) {
|
|
59045
|
+
const pivotFunctions = getPivotFunctions(tokens);
|
|
59046
|
+
if (!pivotFunctions.length) return [];
|
|
59047
|
+
const evaluatedPivotFunctions = [];
|
|
59048
|
+
for (const pivotFunction of pivotFunctions) {
|
|
59049
|
+
const { functionName, args } = pivotFunction;
|
|
59050
|
+
const evaluatedArgs = args.map((argAst) => {
|
|
58955
59051
|
if (argAst.type === "EMPTY") return;
|
|
58956
59052
|
else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
|
|
58957
59053
|
const argsString = astToFormula(argAst);
|
|
58958
59054
|
return this.getters.evaluateFormula(sheetId, argsString);
|
|
58959
|
-
})
|
|
58960
|
-
|
|
59055
|
+
});
|
|
59056
|
+
evaluatedPivotFunctions.push({
|
|
59057
|
+
functionName,
|
|
59058
|
+
args: evaluatedArgs
|
|
59059
|
+
});
|
|
59060
|
+
}
|
|
59061
|
+
return evaluatedPivotFunctions;
|
|
59062
|
+
}
|
|
59063
|
+
getFirstPivotFunction(sheetId, tokens) {
|
|
59064
|
+
return this.getPivotFunctions(sheetId, tokens)[0];
|
|
58961
59065
|
}
|
|
58962
59066
|
/**
|
|
58963
59067
|
* Returns the domain args of a pivot formula from a position.
|
|
@@ -59051,8 +59155,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59051
59155
|
const unusedPivots = new Set(this.getters.getPivotIds());
|
|
59052
59156
|
for (const sheetId of this.getters.getSheetIds()) for (const cellId in this.getters.getCells(sheetId)) {
|
|
59053
59157
|
const position = this.getters.getCellPosition(cellId);
|
|
59054
|
-
const
|
|
59055
|
-
|
|
59158
|
+
const pivotIds = this.getPivotIdsFromPosition(position);
|
|
59159
|
+
for (const pivotId of pivotIds) {
|
|
59056
59160
|
unusedPivots.delete(pivotId);
|
|
59057
59161
|
if (!unusedPivots.size) {
|
|
59058
59162
|
this.unusedPivots = [];
|
|
@@ -59060,6 +59164,21 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59060
59164
|
}
|
|
59061
59165
|
}
|
|
59062
59166
|
}
|
|
59167
|
+
for (const pivotId of this.getters.getPivotIds()) {
|
|
59168
|
+
const pivot = this.getters.getPivot(pivotId);
|
|
59169
|
+
for (const measure of pivot.definition.measures) if (measure.computedBy) {
|
|
59170
|
+
const { sheetId } = measure.computedBy;
|
|
59171
|
+
const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
|
|
59172
|
+
const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
|
|
59173
|
+
for (const relatedPivotId of relatedPivotIds) {
|
|
59174
|
+
unusedPivots.delete(relatedPivotId);
|
|
59175
|
+
if (!unusedPivots.size) {
|
|
59176
|
+
this.unusedPivots = [];
|
|
59177
|
+
return [];
|
|
59178
|
+
}
|
|
59179
|
+
}
|
|
59180
|
+
}
|
|
59181
|
+
}
|
|
59063
59182
|
this.unusedPivots = [...unusedPivots];
|
|
59064
59183
|
return this.unusedPivots;
|
|
59065
59184
|
}
|
|
@@ -60313,6 +60432,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60313
60432
|
//#endregion
|
|
60314
60433
|
//#region src/collaborative/revisions.ts
|
|
60315
60434
|
var Revision = class {
|
|
60435
|
+
rootCommand;
|
|
60436
|
+
timestamp;
|
|
60316
60437
|
id;
|
|
60317
60438
|
clientId;
|
|
60318
60439
|
_commands = [];
|
|
@@ -60349,6 +60470,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60349
60470
|
//#region src/collaborative/session.ts
|
|
60350
60471
|
var ClientDisconnectedError = class extends Error {};
|
|
60351
60472
|
var Session = class extends EventBus {
|
|
60473
|
+
revisions;
|
|
60474
|
+
transportService;
|
|
60475
|
+
serverRevisionId;
|
|
60352
60476
|
/**
|
|
60353
60477
|
* Positions of the others client.
|
|
60354
60478
|
*/
|
|
@@ -63922,6 +64046,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
63922
64046
|
//#endregion
|
|
63923
64047
|
//#region src/helpers/internal_viewport.ts
|
|
63924
64048
|
var InternalViewport = class {
|
|
64049
|
+
getters;
|
|
64050
|
+
sheetId;
|
|
64051
|
+
boundaries;
|
|
63925
64052
|
top;
|
|
63926
64053
|
bottom;
|
|
63927
64054
|
left;
|
|
@@ -67535,6 +67662,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
67535
67662
|
return new WebClipboardWrapper(navigator.clipboard);
|
|
67536
67663
|
}
|
|
67537
67664
|
var WebClipboardWrapper = class {
|
|
67665
|
+
clipboard;
|
|
67538
67666
|
constructor(clipboard) {
|
|
67539
67667
|
this.clipboard = clipboard;
|
|
67540
67668
|
}
|
|
@@ -68023,6 +68151,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68023
68151
|
* @param operations initial operations
|
|
68024
68152
|
*/
|
|
68025
68153
|
var Branch = class Branch {
|
|
68154
|
+
buildTransformation;
|
|
68155
|
+
operations;
|
|
68026
68156
|
constructor(buildTransformation, operations = []) {
|
|
68027
68157
|
this.buildTransformation = buildTransformation;
|
|
68028
68158
|
this.operations = operations;
|
|
@@ -68139,6 +68269,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68139
68269
|
* to revert it).
|
|
68140
68270
|
*/
|
|
68141
68271
|
var Operation = class {
|
|
68272
|
+
id;
|
|
68273
|
+
data;
|
|
68142
68274
|
constructor(id, data) {
|
|
68143
68275
|
this.id = id;
|
|
68144
68276
|
this.data = data;
|
|
@@ -68148,6 +68280,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68148
68280
|
}
|
|
68149
68281
|
};
|
|
68150
68282
|
var LazyOperation = class LazyOperation {
|
|
68283
|
+
id;
|
|
68284
|
+
lazyData;
|
|
68151
68285
|
constructor(id, lazyData) {
|
|
68152
68286
|
this.id = id;
|
|
68153
68287
|
this.lazyData = lazyData;
|
|
@@ -68173,6 +68307,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68173
68307
|
* ```
|
|
68174
68308
|
*/
|
|
68175
68309
|
var OperationSequence = class OperationSequence {
|
|
68310
|
+
operations;
|
|
68176
68311
|
constructor(operations) {
|
|
68177
68312
|
this.operations = operations;
|
|
68178
68313
|
}
|
|
@@ -68248,6 +68383,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68248
68383
|
*
|
|
68249
68384
|
*/
|
|
68250
68385
|
var Tree = class {
|
|
68386
|
+
buildTransformation;
|
|
68251
68387
|
branches;
|
|
68252
68388
|
branchingOperationIds = /* @__PURE__ */ new Map();
|
|
68253
68389
|
constructor(buildTransformation, initialBranch) {
|
|
@@ -68830,6 +68966,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68830
68966
|
* with the new selected anchor
|
|
68831
68967
|
*/
|
|
68832
68968
|
var SelectionStreamProcessorImpl = class {
|
|
68969
|
+
getters;
|
|
68833
68970
|
stream;
|
|
68834
68971
|
/**
|
|
68835
68972
|
* "Active" anchor used as a reference to compute new anchors
|
|
@@ -72132,8 +72269,8 @@ exports.stores = stores;
|
|
|
72132
72269
|
exports.tokenColors = tokenColors;
|
|
72133
72270
|
exports.tokenize = tokenize;
|
|
72134
72271
|
|
|
72135
|
-
__info__.version = "18.3.
|
|
72136
|
-
__info__.date = "2026-05-
|
|
72137
|
-
__info__.hash = "
|
|
72272
|
+
__info__.version = "18.3.49";
|
|
72273
|
+
__info__.date = "2026-05-27T05:57:05.809Z";
|
|
72274
|
+
__info__.hash = "fc34456";
|
|
72138
72275
|
|
|
72139
72276
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|