@odoo/o-spreadsheet 19.3.4 → 19.3.6
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 +150 -124
- package/dist/o_spreadsheet.css +3 -3
- package/dist/o_spreadsheet.esm.js +150 -124
- package/dist/o_spreadsheet.iife.js +150 -124
- package/dist/o_spreadsheet.min.iife.js +94 -94
- package/dist/o_spreadsheet.xml +5 -4
- package/dist/types/functions/function_registry.d.ts +1 -1
- package/dist/types/helpers/figures/charts/chart_js_extension.d.ts +1 -1
- package/dist/types/helpers/pivot/pivot_composer_helpers.d.ts +4 -0
- package/dist/types/helpers/pivot/pivot_registry.d.ts +1 -1
- package/dist/types/index.d.ts +7 -7
- package/dist/types/migrations/migration_steps.d.ts +1 -1
- package/dist/types/plugins/index.d.ts +1 -1
- package/dist/types/plugins/ui_core_views/pivot_ui.d.ts +17 -8
- package/dist/types/plugins/ui_feature/table_computed_style.d.ts +1 -1
- package/package.json +1 -1
- package/dist/types/registry.d.ts +0 -10
|
@@ -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-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.6
|
|
6
|
+
* @date 2026-06-06T06:24:22.727Z
|
|
7
|
+
* @hash 0fe939b
|
|
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";
|
|
@@ -3239,31 +3239,78 @@ function validateArguments(descr) {
|
|
|
3239
3239
|
}
|
|
3240
3240
|
|
|
3241
3241
|
//#endregion
|
|
3242
|
-
//#region src/registry.ts
|
|
3243
|
-
|
|
3242
|
+
//#region src/registries/registry.ts
|
|
3243
|
+
/**
|
|
3244
|
+
* Registry
|
|
3245
|
+
*
|
|
3246
|
+
* The Registry class is basically just a mapping from a string key to an object.
|
|
3247
|
+
* It is really not much more than an object. It is however useful for the
|
|
3248
|
+
* following reasons:
|
|
3249
|
+
*
|
|
3250
|
+
* 1. it let us react and execute code when someone add something to the registry
|
|
3251
|
+
* (for example, the FunctionRegistry subclass this for this purpose)
|
|
3252
|
+
* 2. it throws an error when the get operation fails
|
|
3253
|
+
* 3. it provides a chained API to add items to the registry.
|
|
3254
|
+
*/
|
|
3255
|
+
var Registry = class {
|
|
3244
3256
|
content = {};
|
|
3257
|
+
/**
|
|
3258
|
+
* Add an item to the registry, you can only add if there is no item
|
|
3259
|
+
* already present in the registery with the given key
|
|
3260
|
+
*
|
|
3261
|
+
* Note that this also returns the registry, so another add method call can
|
|
3262
|
+
* be chained
|
|
3263
|
+
*/
|
|
3245
3264
|
add(key, value) {
|
|
3246
3265
|
if (key in this.content) throw new Error(`${key} is already present in this registry!`);
|
|
3247
3266
|
return this.replace(key, value);
|
|
3248
3267
|
}
|
|
3268
|
+
/**
|
|
3269
|
+
* Replace (or add) an item to the registry
|
|
3270
|
+
*
|
|
3271
|
+
* Note that this also returns the registry, so another add method call can
|
|
3272
|
+
* be chained
|
|
3273
|
+
*/
|
|
3249
3274
|
replace(key, value) {
|
|
3250
3275
|
this.content[key] = value;
|
|
3251
3276
|
return this;
|
|
3252
3277
|
}
|
|
3278
|
+
/**
|
|
3279
|
+
* Get an item from the registry
|
|
3280
|
+
*/
|
|
3253
3281
|
get(key) {
|
|
3282
|
+
/**
|
|
3283
|
+
* Note: key in {} is ~12 times slower than {}[key].
|
|
3284
|
+
* So, we check the absence of key only when the direct access returns
|
|
3285
|
+
* a falsy value. It's done to ensure that the registry can contains falsy values
|
|
3286
|
+
*/
|
|
3254
3287
|
const content = this.content[key];
|
|
3255
|
-
if (!content
|
|
3288
|
+
if (!content) {
|
|
3289
|
+
if (!(key in this.content)) throw new Error(`Cannot find ${key} in this registry!`);
|
|
3290
|
+
}
|
|
3256
3291
|
return content;
|
|
3257
3292
|
}
|
|
3293
|
+
/**
|
|
3294
|
+
* Check if the key is already in the registry
|
|
3295
|
+
*/
|
|
3258
3296
|
contains(key) {
|
|
3259
3297
|
return key in this.content;
|
|
3260
3298
|
}
|
|
3299
|
+
/**
|
|
3300
|
+
* Get a list of all elements in the registry
|
|
3301
|
+
*/
|
|
3261
3302
|
getAll() {
|
|
3262
3303
|
return Object.values(this.content);
|
|
3263
3304
|
}
|
|
3305
|
+
/**
|
|
3306
|
+
* Get a list of all keys in the registry
|
|
3307
|
+
*/
|
|
3264
3308
|
getKeys() {
|
|
3265
3309
|
return Object.keys(this.content);
|
|
3266
3310
|
}
|
|
3311
|
+
/**
|
|
3312
|
+
* Remove an item from the registry
|
|
3313
|
+
*/
|
|
3267
3314
|
remove(key) {
|
|
3268
3315
|
delete this.content[key];
|
|
3269
3316
|
}
|
|
@@ -4642,7 +4689,7 @@ function hasStringMessage(obj) {
|
|
|
4642
4689
|
//#endregion
|
|
4643
4690
|
//#region src/functions/function_registry.ts
|
|
4644
4691
|
const functionNameRegex = /^[A-Z0-9\_\.]+$/;
|
|
4645
|
-
var FunctionRegistry = class extends Registry
|
|
4692
|
+
var FunctionRegistry = class extends Registry {
|
|
4646
4693
|
mapping = {};
|
|
4647
4694
|
add(name, addDescr) {
|
|
4648
4695
|
name = name.toUpperCase();
|
|
@@ -5456,84 +5503,6 @@ function isFuncallToken(currentToken, nextToken) {
|
|
|
5456
5503
|
return nextToken?.type === "LEFT_PAREN" && functionRegex.test(currentToken.value) && currentToken.value === unquote(currentToken.value, "'");
|
|
5457
5504
|
}
|
|
5458
5505
|
|
|
5459
|
-
//#endregion
|
|
5460
|
-
//#region src/registries/registry.ts
|
|
5461
|
-
/**
|
|
5462
|
-
* Registry
|
|
5463
|
-
*
|
|
5464
|
-
* The Registry class is basically just a mapping from a string key to an object.
|
|
5465
|
-
* It is really not much more than an object. It is however useful for the
|
|
5466
|
-
* following reasons:
|
|
5467
|
-
*
|
|
5468
|
-
* 1. it let us react and execute code when someone add something to the registry
|
|
5469
|
-
* (for example, the FunctionRegistry subclass this for this purpose)
|
|
5470
|
-
* 2. it throws an error when the get operation fails
|
|
5471
|
-
* 3. it provides a chained API to add items to the registry.
|
|
5472
|
-
*/
|
|
5473
|
-
var Registry = class {
|
|
5474
|
-
content = {};
|
|
5475
|
-
/**
|
|
5476
|
-
* Add an item to the registry, you can only add if there is no item
|
|
5477
|
-
* already present in the registery with the given key
|
|
5478
|
-
*
|
|
5479
|
-
* Note that this also returns the registry, so another add method call can
|
|
5480
|
-
* be chained
|
|
5481
|
-
*/
|
|
5482
|
-
add(key, value) {
|
|
5483
|
-
if (key in this.content) throw new Error(`${key} is already present in this registry!`);
|
|
5484
|
-
return this.replace(key, value);
|
|
5485
|
-
}
|
|
5486
|
-
/**
|
|
5487
|
-
* Replace (or add) an item to the registry
|
|
5488
|
-
*
|
|
5489
|
-
* Note that this also returns the registry, so another add method call can
|
|
5490
|
-
* be chained
|
|
5491
|
-
*/
|
|
5492
|
-
replace(key, value) {
|
|
5493
|
-
this.content[key] = value;
|
|
5494
|
-
return this;
|
|
5495
|
-
}
|
|
5496
|
-
/**
|
|
5497
|
-
* Get an item from the registry
|
|
5498
|
-
*/
|
|
5499
|
-
get(key) {
|
|
5500
|
-
/**
|
|
5501
|
-
* Note: key in {} is ~12 times slower than {}[key].
|
|
5502
|
-
* So, we check the absence of key only when the direct access returns
|
|
5503
|
-
* a falsy value. It's done to ensure that the registry can contains falsy values
|
|
5504
|
-
*/
|
|
5505
|
-
const content = this.content[key];
|
|
5506
|
-
if (!content) {
|
|
5507
|
-
if (!(key in this.content)) throw new Error(`Cannot find ${key} in this registry!`);
|
|
5508
|
-
}
|
|
5509
|
-
return content;
|
|
5510
|
-
}
|
|
5511
|
-
/**
|
|
5512
|
-
* Check if the key is already in the registry
|
|
5513
|
-
*/
|
|
5514
|
-
contains(key) {
|
|
5515
|
-
return key in this.content;
|
|
5516
|
-
}
|
|
5517
|
-
/**
|
|
5518
|
-
* Get a list of all elements in the registry
|
|
5519
|
-
*/
|
|
5520
|
-
getAll() {
|
|
5521
|
-
return Object.values(this.content);
|
|
5522
|
-
}
|
|
5523
|
-
/**
|
|
5524
|
-
* Get a list of all keys in the registry
|
|
5525
|
-
*/
|
|
5526
|
-
getKeys() {
|
|
5527
|
-
return Object.keys(this.content);
|
|
5528
|
-
}
|
|
5529
|
-
/**
|
|
5530
|
-
* Remove an item from the registry
|
|
5531
|
-
*/
|
|
5532
|
-
remove(key) {
|
|
5533
|
-
delete this.content[key];
|
|
5534
|
-
}
|
|
5535
|
-
};
|
|
5536
|
-
|
|
5537
5506
|
//#endregion
|
|
5538
5507
|
//#region src/helpers/range.ts
|
|
5539
5508
|
function createRange(args, getSheetSize) {
|
|
@@ -5815,8 +5784,13 @@ function getApplyRangeChangeAddColRow(cmd) {
|
|
|
5815
5784
|
changeType: "NONE",
|
|
5816
5785
|
range
|
|
5817
5786
|
};
|
|
5787
|
+
const isUnboundedAtEnd = range.unboundedZone[end] === void 0;
|
|
5788
|
+
if (isUnboundedAtEnd && !range.unboundedZone.hasHeader) return {
|
|
5789
|
+
changeType: "RESIZE",
|
|
5790
|
+
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
5791
|
+
};
|
|
5818
5792
|
if (cmd.position === "after") {
|
|
5819
|
-
if (range.zone[start] <= cmd.base && cmd.base < range.zone[end]) return {
|
|
5793
|
+
if (range.zone[start] <= cmd.base && (cmd.base < range.zone[end] || isUnboundedAtEnd)) return {
|
|
5820
5794
|
changeType: "RESIZE",
|
|
5821
5795
|
range: createAdaptedRange(range, dimension, "RESIZE", cmd.quantity)
|
|
5822
5796
|
};
|
|
@@ -6554,6 +6528,7 @@ let CellValueType = /* @__PURE__ */ function(CellValueType) {
|
|
|
6554
6528
|
//#endregion
|
|
6555
6529
|
//#region src/helpers/format/format_tokenizer.ts
|
|
6556
6530
|
function tokenizeFormat(str) {
|
|
6531
|
+
str = str.replace(/\s/g, " ");
|
|
6557
6532
|
const chars = new TokenizingChars(str);
|
|
6558
6533
|
const result = [];
|
|
6559
6534
|
let currentFormatPart = [];
|
|
@@ -7684,7 +7659,12 @@ const lockedSheetAllowedCommands = new Set([
|
|
|
7684
7659
|
"SET_ZOOM",
|
|
7685
7660
|
"UPDATE_CAROUSEL_ACTIVE_ITEM",
|
|
7686
7661
|
"DUPLICATE_PIVOT_IN_NEW_SHEET",
|
|
7687
|
-
"UPDATE_FILTER"
|
|
7662
|
+
"UPDATE_FILTER",
|
|
7663
|
+
"ACTIVATE_NEXT_SHEET",
|
|
7664
|
+
"ACTIVATE_PREVIOUS_SHEET",
|
|
7665
|
+
"SCROLL_TO_CELL",
|
|
7666
|
+
"SHIFT_VIEWPORT_DOWN",
|
|
7667
|
+
"SHIFT_VIEWPORT_UP"
|
|
7688
7668
|
]);
|
|
7689
7669
|
const coreTypes = new Set([
|
|
7690
7670
|
"UPDATE_CELL",
|
|
@@ -8757,7 +8737,7 @@ var UuidGenerator = class {
|
|
|
8757
8737
|
|
|
8758
8738
|
//#endregion
|
|
8759
8739
|
//#region src/helpers/figures/charts/chart_js_extension.ts
|
|
8760
|
-
const chartJsExtensionRegistry = new Registry
|
|
8740
|
+
const chartJsExtensionRegistry = new Registry();
|
|
8761
8741
|
function areChartJSExtensionsLoaded() {
|
|
8762
8742
|
return globalThis.Chart ? !!globalThis.Chart.registry.plugins.get("chartShowValuesPlugin") : true;
|
|
8763
8743
|
}
|
|
@@ -9117,6 +9097,10 @@ const FORCE_DEFAULT_ARGS_FUNCTIONS = {
|
|
|
9117
9097
|
ROUNDDOWN: [{
|
|
9118
9098
|
type: "NUMBER",
|
|
9119
9099
|
value: 0
|
|
9100
|
+
}],
|
|
9101
|
+
IFERROR: [{
|
|
9102
|
+
type: "NUMBER",
|
|
9103
|
+
value: 0
|
|
9120
9104
|
}]
|
|
9121
9105
|
};
|
|
9122
9106
|
/**
|
|
@@ -23264,7 +23248,7 @@ const WEEK_START = {
|
|
|
23264
23248
|
|
|
23265
23249
|
//#endregion
|
|
23266
23250
|
//#region src/migrations/migration_steps.ts
|
|
23267
|
-
const migrationStepRegistry = new Registry
|
|
23251
|
+
const migrationStepRegistry = new Registry();
|
|
23268
23252
|
migrationStepRegistry.add("0.1", { migrate(data) {
|
|
23269
23253
|
if (data.sheets && data.sheets[0]) data.activeSheet = data.sheets[0].name;
|
|
23270
23254
|
return data;
|
|
@@ -30276,11 +30260,10 @@ const INSERT_TABLE = (env) => {
|
|
|
30276
30260
|
if (interactiveCreateTable(env, env.model.getters.getActiveSheetId()).isSuccessful) env.openSidePanel("TableSidePanel", {});
|
|
30277
30261
|
};
|
|
30278
30262
|
const DELETE_SELECTED_TABLE = (env) => {
|
|
30279
|
-
const
|
|
30280
|
-
const table = env.model.getters.getTable(position);
|
|
30263
|
+
const table = env.model.getters.getFirstTableInSelection();
|
|
30281
30264
|
if (!table) return;
|
|
30282
30265
|
env.model.dispatch("REMOVE_TABLE", {
|
|
30283
|
-
sheetId:
|
|
30266
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
30284
30267
|
target: [table.range.zone]
|
|
30285
30268
|
});
|
|
30286
30269
|
};
|
|
@@ -32873,11 +32856,12 @@ const ChartRangeDataSourceHandler = {
|
|
|
32873
32856
|
type: "range",
|
|
32874
32857
|
dataSets: [],
|
|
32875
32858
|
dataSetsHaveTitle: false,
|
|
32859
|
+
labelRange: context.auxiliaryRange,
|
|
32876
32860
|
...context.dataSource
|
|
32877
32861
|
};
|
|
32878
32862
|
},
|
|
32879
32863
|
fromHierarchicalContextCreation(context) {
|
|
32880
|
-
if (context.dataSource?.type !== "range" || context.hierarchicalDataSource
|
|
32864
|
+
if (context.dataSource?.type !== "range" || context.hierarchicalDataSource !== void 0 && context.hierarchicalDataSource.type !== "range") return {
|
|
32881
32865
|
type: "range",
|
|
32882
32866
|
dataSets: [],
|
|
32883
32867
|
dataSetsHaveTitle: false
|
|
@@ -37544,7 +37528,7 @@ function getVisiblePivotCellPositions(getters, pivotId) {
|
|
|
37544
37528
|
col,
|
|
37545
37529
|
row
|
|
37546
37530
|
};
|
|
37547
|
-
if (
|
|
37531
|
+
if (getters.getPivotIdsFromPosition(position).includes(pivotId)) positions.push(position);
|
|
37548
37532
|
}
|
|
37549
37533
|
return positions;
|
|
37550
37534
|
}
|
|
@@ -39554,7 +39538,7 @@ var SpreadsheetPivot = class {
|
|
|
39554
39538
|
|
|
39555
39539
|
//#endregion
|
|
39556
39540
|
//#region src/helpers/pivot/pivot_registry.ts
|
|
39557
|
-
const pivotRegistry = new Registry
|
|
39541
|
+
const pivotRegistry = new Registry();
|
|
39558
39542
|
const dateGranularities = [
|
|
39559
39543
|
"year",
|
|
39560
39544
|
"quarter_number",
|
|
@@ -39618,6 +39602,9 @@ const PIVOT_FUNCTIONS = [
|
|
|
39618
39602
|
function getFirstPivotFunction(compiledFormula, getters) {
|
|
39619
39603
|
return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters)[0];
|
|
39620
39604
|
}
|
|
39605
|
+
function getPivotFunctions(compiledFormula, getters) {
|
|
39606
|
+
return compiledFormula.getFunctionsFromTokens(PIVOT_FUNCTIONS, getters);
|
|
39607
|
+
}
|
|
39621
39608
|
/**
|
|
39622
39609
|
* Parse a spreadsheet formula and detect the number of PIVOT functions that are
|
|
39623
39610
|
* present in the given formula.
|
|
@@ -57832,6 +57819,7 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57832
57819
|
"getFirstPivotFunction",
|
|
57833
57820
|
"getPivotCellSortDirection",
|
|
57834
57821
|
"getPivotIdFromPosition",
|
|
57822
|
+
"getPivotIdsFromPosition",
|
|
57835
57823
|
"getPivotCellFromPosition",
|
|
57836
57824
|
"generateNewCalculatedMeasureName",
|
|
57837
57825
|
"isPivotUnused",
|
|
@@ -57858,9 +57846,11 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57858
57846
|
this.refreshPivot(cmd.id);
|
|
57859
57847
|
break;
|
|
57860
57848
|
case "ADD_PIVOT":
|
|
57849
|
+
this.unusedPivotsInFormulas?.push(cmd.pivotId);
|
|
57861
57850
|
this.setupPivot(cmd.pivotId);
|
|
57862
57851
|
break;
|
|
57863
57852
|
case "DUPLICATE_PIVOT":
|
|
57853
|
+
this.unusedPivotsInFormulas?.push(cmd.newPivotId);
|
|
57864
57854
|
this.setupPivot(cmd.newPivotId);
|
|
57865
57855
|
break;
|
|
57866
57856
|
case "UPDATE_PIVOT":
|
|
@@ -57891,37 +57881,52 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
57891
57881
|
}
|
|
57892
57882
|
}
|
|
57893
57883
|
/**
|
|
57894
|
-
* Get the id of the pivot at the given position. Returns undefined if there
|
|
57884
|
+
* Get the id of the first pivot in the formula at the given position. Returns undefined if there
|
|
57895
57885
|
* is no pivot at this position
|
|
57896
57886
|
*/
|
|
57897
57887
|
getPivotIdFromPosition(position) {
|
|
57888
|
+
return this.getPivotIdsFromPosition(position)[0];
|
|
57889
|
+
}
|
|
57890
|
+
/**
|
|
57891
|
+
* Get all of the ids of the pivot present in the formula at the given position.
|
|
57892
|
+
*/
|
|
57893
|
+
getPivotIdsFromPosition(position) {
|
|
57898
57894
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
57899
|
-
if (cell && cell.isFormula)
|
|
57900
|
-
|
|
57901
|
-
|
|
57902
|
-
|
|
57903
|
-
|
|
57904
|
-
|
|
57905
|
-
|
|
57895
|
+
if (cell && cell.isFormula) return this.getPivotIdsFromFormula(position.sheetId, cell.compiledFormula);
|
|
57896
|
+
return [];
|
|
57897
|
+
}
|
|
57898
|
+
getPivotIdsFromFormula(sheetId, formula) {
|
|
57899
|
+
return this.getPivotFunctions(sheetId, formula).map((pivotFunction) => {
|
|
57900
|
+
const pivotId = pivotFunction.args[0]?.toString();
|
|
57901
|
+
return pivotId && this.getters.getPivotId(pivotId);
|
|
57902
|
+
}).filter(isDefined);
|
|
57906
57903
|
}
|
|
57907
57904
|
isSpillPivotFormula(position) {
|
|
57908
57905
|
const cell = this.getters.getCorrespondingFormulaCell(position);
|
|
57909
57906
|
if (cell && cell.isFormula) return this.getFirstPivotFunction(position.sheetId, cell.compiledFormula)?.functionName === "PIVOT";
|
|
57910
57907
|
return false;
|
|
57911
57908
|
}
|
|
57912
|
-
|
|
57913
|
-
const
|
|
57914
|
-
if (!
|
|
57915
|
-
const
|
|
57916
|
-
|
|
57917
|
-
functionName,
|
|
57918
|
-
|
|
57909
|
+
getPivotFunctions(sheetId, formula) {
|
|
57910
|
+
const pivotFunctions = getPivotFunctions(formula, this.getters);
|
|
57911
|
+
if (!pivotFunctions.length) return [];
|
|
57912
|
+
const evaluatedPivotFunctions = [];
|
|
57913
|
+
for (const pivotFunction of pivotFunctions) {
|
|
57914
|
+
const { functionName, args } = pivotFunction;
|
|
57915
|
+
const evaluatedArgs = args.map((argAst) => {
|
|
57919
57916
|
if (argAst.type === "EMPTY") return;
|
|
57920
57917
|
else if (argAst.type === "STRING" || argAst.type === "BOOLEAN" || argAst.type === "NUMBER") return argAst.value;
|
|
57921
57918
|
const argsString = astToFormula(argAst);
|
|
57922
57919
|
return this.getters.evaluateFormula(sheetId, argsString);
|
|
57923
|
-
})
|
|
57924
|
-
|
|
57920
|
+
});
|
|
57921
|
+
evaluatedPivotFunctions.push({
|
|
57922
|
+
functionName,
|
|
57923
|
+
args: evaluatedArgs
|
|
57924
|
+
});
|
|
57925
|
+
}
|
|
57926
|
+
return evaluatedPivotFunctions;
|
|
57927
|
+
}
|
|
57928
|
+
getFirstPivotFunction(sheetId, formula) {
|
|
57929
|
+
return this.getPivotFunctions(sheetId, formula)[0];
|
|
57925
57930
|
}
|
|
57926
57931
|
/**
|
|
57927
57932
|
* Returns the domain args of a pivot formula from a position.
|
|
@@ -58027,8 +58032,8 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58027
58032
|
const unusedPivots = new Set(this.getters.getPivotIds());
|
|
58028
58033
|
for (const sheetId of this.getters.getSheetIds()) for (const cell of this.getters.getCells(sheetId)) {
|
|
58029
58034
|
const position = this.getters.getCellPosition(cell.id);
|
|
58030
|
-
const
|
|
58031
|
-
|
|
58035
|
+
const pivotIds = this.getPivotIdsFromPosition(position);
|
|
58036
|
+
for (const pivotId of pivotIds) {
|
|
58032
58037
|
unusedPivots.delete(pivotId);
|
|
58033
58038
|
if (!unusedPivots.size) {
|
|
58034
58039
|
this.unusedPivotsInFormulas = [];
|
|
@@ -58036,6 +58041,21 @@ var PivotUIPlugin = class extends CoreViewPlugin {
|
|
|
58036
58041
|
}
|
|
58037
58042
|
}
|
|
58038
58043
|
}
|
|
58044
|
+
for (const pivotId of this.getters.getPivotIds()) {
|
|
58045
|
+
const pivot = this.getters.getPivotCoreDefinition(pivotId);
|
|
58046
|
+
for (const measure of pivot.measures) if (measure.computedBy) {
|
|
58047
|
+
const { sheetId } = measure.computedBy;
|
|
58048
|
+
const formula = this.getters.getMeasureCompiledFormula(pivotId, measure);
|
|
58049
|
+
const relatedPivotIds = this.getPivotIdsFromFormula(sheetId, formula);
|
|
58050
|
+
for (const relatedPivotId of relatedPivotIds) {
|
|
58051
|
+
unusedPivots.delete(relatedPivotId);
|
|
58052
|
+
if (!unusedPivots.size) {
|
|
58053
|
+
this.unusedPivotsInFormulas = [];
|
|
58054
|
+
return [];
|
|
58055
|
+
}
|
|
58056
|
+
}
|
|
58057
|
+
}
|
|
58058
|
+
}
|
|
58039
58059
|
this.unusedPivotsInFormulas = [...unusedPivots];
|
|
58040
58060
|
return this.unusedPivotsInFormulas;
|
|
58041
58061
|
}
|
|
@@ -59785,7 +59805,8 @@ const invalidateTableStyleCommandsSet = new Set([
|
|
|
59785
59805
|
"REMOVE_TABLE",
|
|
59786
59806
|
"RESIZE_TABLE",
|
|
59787
59807
|
"CREATE_TABLE_STYLE",
|
|
59788
|
-
"REMOVE_TABLE_STYLE"
|
|
59808
|
+
"REMOVE_TABLE_STYLE",
|
|
59809
|
+
"DELETE_CONTENT"
|
|
59789
59810
|
]);
|
|
59790
59811
|
function doesCommandInvalidatesTableStyle(cmd) {
|
|
59791
59812
|
return invalidateTableStyleCommandsSet.has(cmd.type);
|
|
@@ -65480,10 +65501,10 @@ var SheetViewPlugin = class extends UIPlugin {
|
|
|
65480
65501
|
|
|
65481
65502
|
//#endregion
|
|
65482
65503
|
//#region src/plugins/index.ts
|
|
65483
|
-
const corePluginRegistry = new Registry
|
|
65484
|
-
const featurePluginRegistry = new Registry
|
|
65485
|
-
const statefulUIPluginRegistry = new Registry
|
|
65486
|
-
const coreViewsPluginRegistry = new Registry
|
|
65504
|
+
const corePluginRegistry = new Registry().add("settings", SettingsPlugin).add("sheet", SheetPlugin).add("header grouping", HeaderGroupingPlugin).add("header visibility", HeaderVisibilityPlugin).add("tables", TablePlugin).add("dataValidation", DataValidationPlugin).add("cell", CellPlugin).add("merge", MergePlugin).add("headerSize", HeaderSizePlugin).add("borders", BordersPlugin).add("conditional formatting", ConditionalFormatPlugin).add("figures", FigurePlugin).add("chart", ChartPlugin).add("carousel", CarouselPlugin).add("image", ImagePlugin).add("named_ranges", NamedRangesPlugin).add("pivot_core", PivotCorePlugin).add("spreadsheet_pivot_core", SpreadsheetPivotCorePlugin).add("tableStyle", TableStylePlugin);
|
|
65505
|
+
const featurePluginRegistry = new Registry().add("ui_sheet", SheetUIPlugin).add("ui_options", UIOptionsPlugin).add("autofill", AutofillPlugin).add("sort", SortPlugin).add("automatic_sum", AutomaticSumPlugin).add("format", FormatPlugin).add("insert_pivot", InsertPivotPlugin).add("pivot_presence", PivotPresencePlugin).add("split_to_columns", SplitToColumnsPlugin).add("subtotal_evaluation", SubtotalEvaluationPlugin).add("collaborative", CollaborativePlugin).add("history", HistoryPlugin).add("table_autofill", TableAutofillPlugin).add("table_ui_resize", TableResizeUI).add("datavalidation_insert", DataValidationInsertionPlugin).add("checkbox_toggle", CheckboxTogglePlugin).add("dynamic_translate", DynamicTranslate).add("geo_features", GeoFeaturePlugin).add("data_cleanup", DataCleanupPlugin);
|
|
65506
|
+
const statefulUIPluginRegistry = new Registry().add("selection", GridSelectionPlugin).add("evaluation_filter", FilterEvaluationPlugin).add("header_visibility_ui", HeaderVisibilityUIPlugin).add("cell_computed_style", CellComputedStylePlugin).add("table_computed_style", TableComputedStylePlugin).add("header_positions", HeaderPositionsUIPlugin).add("viewport", SheetViewPlugin).add("clipboard", ClipboardPlugin).add("carousel_ui", CarouselUIPlugin).add("lock_sheet", LockSheetPlugin);
|
|
65507
|
+
const coreViewsPluginRegistry = new Registry().add("evaluation", EvaluationPlugin).add("evaluation_chart", EvaluationChartPlugin).add("evaluation_cf", EvaluationConditionalFormatPlugin).add("row_size", HeaderSizeUIPlugin).add("data_validation_ui", EvaluationDataValidationPlugin).add("dynamic_tables", DynamicTablesPlugin).add("custom_colors", CustomColorsPlugin).add("pivot_ui", PivotUIPlugin).add("cell_icon", CellIconPlugin).add("formula_tracker", FormulaTrackerPlugin);
|
|
65487
65508
|
|
|
65488
65509
|
//#endregion
|
|
65489
65510
|
//#region src/registries/auto_completes/data_validation_auto_complete.ts
|
|
@@ -72281,6 +72302,11 @@ function lineAttributes(params) {
|
|
|
72281
72302
|
`;
|
|
72282
72303
|
}
|
|
72283
72304
|
function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
|
|
72305
|
+
const textProperties = [
|
|
72306
|
+
["b", style.bold ? "1" : "0"],
|
|
72307
|
+
["i", style.italic ? "1" : "0"],
|
|
72308
|
+
["sz", fontsize * 100]
|
|
72309
|
+
];
|
|
72284
72310
|
return escapeXml`
|
|
72285
72311
|
<c:tx>
|
|
72286
72312
|
<c:rich>
|
|
@@ -72288,13 +72314,13 @@ function insertText(text, fontColor = "000000", fontsize = 16, style = {}) {
|
|
|
72288
72314
|
<a:lstStyle />
|
|
72289
72315
|
<a:p>
|
|
72290
72316
|
<a:pPr lvl="0">
|
|
72291
|
-
<a:defRPr
|
|
72317
|
+
<a:defRPr ${formatAttributes(textProperties)}>
|
|
72292
72318
|
${solidFill(fontColor)}
|
|
72293
72319
|
<a:latin typeface="+mn-lt"/>
|
|
72294
72320
|
</a:defRPr>
|
|
72295
72321
|
</a:pPr>
|
|
72296
72322
|
<a:r> <!-- Runs -->
|
|
72297
|
-
<a:rPr
|
|
72323
|
+
<a:rPr ${formatAttributes(textProperties)}/>
|
|
72298
72324
|
<a:t>${text}</a:t>
|
|
72299
72325
|
</a:r>
|
|
72300
72326
|
</a:p>
|
|
@@ -84444,6 +84470,6 @@ const chartHelpers = {
|
|
|
84444
84470
|
//#endregion
|
|
84445
84471
|
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 };
|
|
84446
84472
|
|
|
84447
|
-
__info__.version = "19.3.
|
|
84448
|
-
__info__.date = "2026-
|
|
84449
|
-
__info__.hash = "
|
|
84473
|
+
__info__.version = "19.3.6";
|
|
84474
|
+
__info__.date = "2026-06-06T06:24:22.727Z";
|
|
84475
|
+
__info__.hash = "0fe939b";
|