@odoo/o-spreadsheet 18.0.24 → 18.0.26
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 +106 -69
- package/dist/o-spreadsheet.d.ts +5 -2
- package/dist/o-spreadsheet.esm.js +106 -69
- package/dist/o-spreadsheet.iife.js +106 -69
- package/dist/o-spreadsheet.iife.min.js +10 -11
- package/dist/o_spreadsheet.xml +62 -55
- package/package.json +1 -1
|
@@ -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.0.
|
|
6
|
-
* @date 2025-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.0.26
|
|
6
|
+
* @date 2025-05-02T12:30:31.966Z
|
|
7
|
+
* @hash 5bdf504
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { useEnv, useSubEnv, onWillUnmount, useComponent, status, Component, useRef, onMounted, useEffect, useState, onPatched, onWillPatch, onWillUpdateProps, useExternalListener, onWillStart, xml, useChildSubEnv, markRaw, toRaw } from '@odoo/owl';
|
|
@@ -3591,6 +3591,7 @@ var CommandResult;
|
|
|
3591
3591
|
CommandResult["ValueCellIsInvalidFormula"] = "ValueCellIsInvalidFormula";
|
|
3592
3592
|
CommandResult["InvalidDefinition"] = "InvalidDefinition";
|
|
3593
3593
|
CommandResult["InvalidColor"] = "InvalidColor";
|
|
3594
|
+
CommandResult["InvalidPivotDataSet"] = "InvalidPivotDataSet";
|
|
3594
3595
|
})(CommandResult || (CommandResult = {}));
|
|
3595
3596
|
|
|
3596
3597
|
const DEFAULT_LOCALES = [
|
|
@@ -3663,11 +3664,13 @@ const CellErrorType = {
|
|
|
3663
3664
|
NullError: "#NULL!",
|
|
3664
3665
|
};
|
|
3665
3666
|
const errorTypes = new Set(Object.values(CellErrorType));
|
|
3666
|
-
class EvaluationError
|
|
3667
|
+
class EvaluationError {
|
|
3668
|
+
message;
|
|
3667
3669
|
value;
|
|
3668
3670
|
constructor(message = _t("Error"), value = CellErrorType.GenericError) {
|
|
3669
|
-
|
|
3671
|
+
this.message = message;
|
|
3670
3672
|
this.value = value;
|
|
3673
|
+
this.message = message.toString();
|
|
3671
3674
|
}
|
|
3672
3675
|
}
|
|
3673
3676
|
class BadExpressionError extends EvaluationError {
|
|
@@ -15666,9 +15669,11 @@ const GAUGE_TITLE_PADDING_LEFT = SCORECARD_GAUGE_CHART_PADDING;
|
|
|
15666
15669
|
const GAUGE_TITLE_PADDING_TOP = SCORECARD_GAUGE_CHART_PADDING;
|
|
15667
15670
|
function drawGaugeChart(canvas, runtime) {
|
|
15668
15671
|
const canvasBoundingRect = canvas.getBoundingClientRect();
|
|
15669
|
-
|
|
15670
|
-
canvas.
|
|
15672
|
+
const dpr = window.devicePixelRatio || 1;
|
|
15673
|
+
canvas.width = dpr * canvasBoundingRect.width;
|
|
15674
|
+
canvas.height = dpr * canvasBoundingRect.height;
|
|
15671
15675
|
const ctx = canvas.getContext("2d");
|
|
15676
|
+
ctx.scale(dpr, dpr);
|
|
15672
15677
|
const config = getGaugeRenderingConfig(canvasBoundingRect, runtime, ctx);
|
|
15673
15678
|
drawBackground(ctx, config);
|
|
15674
15679
|
drawGauge(ctx, config);
|
|
@@ -16230,9 +16235,11 @@ let ScorecardChart$1 = class ScorecardChart extends AbstractChart {
|
|
|
16230
16235
|
};
|
|
16231
16236
|
function drawScoreChart(structure, canvas) {
|
|
16232
16237
|
const ctx = canvas.getContext("2d");
|
|
16233
|
-
|
|
16234
|
-
|
|
16235
|
-
canvas.height = structure.canvas.height;
|
|
16238
|
+
const dpr = window.devicePixelRatio || 1;
|
|
16239
|
+
canvas.width = dpr * structure.canvas.width;
|
|
16240
|
+
canvas.height = dpr * structure.canvas.height;
|
|
16241
|
+
ctx.scale(dpr, dpr);
|
|
16242
|
+
const availableWidth = structure.canvas.width - DEFAULT_CHART_PADDING;
|
|
16236
16243
|
ctx.fillStyle = structure.canvas.backgroundColor;
|
|
16237
16244
|
ctx.fillRect(0, 0, structure.canvas.width, structure.canvas.height);
|
|
16238
16245
|
if (structure.title) {
|
|
@@ -16909,6 +16916,7 @@ class ChartJsComponent extends Component {
|
|
|
16909
16916
|
canvas = useRef("graphContainer");
|
|
16910
16917
|
chart;
|
|
16911
16918
|
currentRuntime;
|
|
16919
|
+
currentDevicePixelRatio = window.devicePixelRatio;
|
|
16912
16920
|
get background() {
|
|
16913
16921
|
return this.chartRuntime.background;
|
|
16914
16922
|
}
|
|
@@ -16942,6 +16950,10 @@ class ChartJsComponent extends Component {
|
|
|
16942
16950
|
}
|
|
16943
16951
|
this.currentRuntime = runtime;
|
|
16944
16952
|
}
|
|
16953
|
+
else if (this.currentDevicePixelRatio !== window.devicePixelRatio) {
|
|
16954
|
+
this.currentDevicePixelRatio = window.devicePixelRatio;
|
|
16955
|
+
this.updateChartJs(deepCopy(this.currentRuntime));
|
|
16956
|
+
}
|
|
16945
16957
|
});
|
|
16946
16958
|
}
|
|
16947
16959
|
createChart(chartData) {
|
|
@@ -16984,7 +16996,7 @@ class ScorecardChart extends Component {
|
|
|
16984
16996
|
useEffect(this.createChart.bind(this), () => {
|
|
16985
16997
|
const canvas = this.canvas.el;
|
|
16986
16998
|
const rect = canvas.getBoundingClientRect();
|
|
16987
|
-
return [rect.width, rect.height, this.runtime, this.canvas.el];
|
|
16999
|
+
return [rect.width, rect.height, this.runtime, this.canvas.el, window.devicePixelRatio];
|
|
16988
17000
|
});
|
|
16989
17001
|
}
|
|
16990
17002
|
createChart() {
|
|
@@ -17452,7 +17464,7 @@ const MINVERSE = {
|
|
|
17452
17464
|
assertSquareMatrix(_t("The argument square_matrix must have the same number of columns and rows."), _matrix);
|
|
17453
17465
|
const { inverted } = invertMatrix(_matrix);
|
|
17454
17466
|
if (!inverted) {
|
|
17455
|
-
|
|
17467
|
+
return new EvaluationError(_t("The matrix is not invertible."));
|
|
17456
17468
|
}
|
|
17457
17469
|
return inverted;
|
|
17458
17470
|
},
|
|
@@ -17612,7 +17624,7 @@ const TOCOL = {
|
|
|
17612
17624
|
.flat()
|
|
17613
17625
|
.filter(shouldKeepValue(_ignore));
|
|
17614
17626
|
if (result.length === 0) {
|
|
17615
|
-
|
|
17627
|
+
return new NotAvailableError(_t("No results for the given arguments of TOCOL."));
|
|
17616
17628
|
}
|
|
17617
17629
|
return [result];
|
|
17618
17630
|
},
|
|
@@ -17633,7 +17645,7 @@ const TOROW = {
|
|
|
17633
17645
|
.filter(shouldKeepValue(_ignore))
|
|
17634
17646
|
.map((item) => [item]);
|
|
17635
17647
|
if (result.length === 0 || result[0].length === 0) {
|
|
17636
|
-
|
|
17648
|
+
return new NotAvailableError(_t("No results for the given arguments of TOROW."));
|
|
17637
17649
|
}
|
|
17638
17650
|
return result;
|
|
17639
17651
|
},
|
|
@@ -18480,7 +18492,7 @@ const PRODUCT = {
|
|
|
18480
18492
|
count += 1;
|
|
18481
18493
|
}
|
|
18482
18494
|
if (isEvaluationError(f)) {
|
|
18483
|
-
|
|
18495
|
+
return j;
|
|
18484
18496
|
}
|
|
18485
18497
|
}
|
|
18486
18498
|
}
|
|
@@ -19383,7 +19395,7 @@ const MATTHEWS = {
|
|
|
19383
19395
|
const flatY = dataY.flat();
|
|
19384
19396
|
assertSameNumberOfElements(flatX, flatY);
|
|
19385
19397
|
if (flatX.length === 0) {
|
|
19386
|
-
|
|
19398
|
+
return new EvaluationError(_t("[[FUNCTION_NAME]] expects non-empty ranges for both parameters."));
|
|
19387
19399
|
}
|
|
19388
19400
|
const n = flatX.length;
|
|
19389
19401
|
let trueN = 0, trueP = 0, falseP = 0, falseN = 0;
|
|
@@ -19746,7 +19758,7 @@ const RANK = {
|
|
|
19746
19758
|
}
|
|
19747
19759
|
}
|
|
19748
19760
|
if (!found) {
|
|
19749
|
-
|
|
19761
|
+
return new NotAvailableError(_t("Value not found in the given data."));
|
|
19750
19762
|
}
|
|
19751
19763
|
return rank;
|
|
19752
19764
|
},
|
|
@@ -21371,7 +21383,7 @@ const FILTER = {
|
|
|
21371
21383
|
}
|
|
21372
21384
|
}
|
|
21373
21385
|
if (!result.length) {
|
|
21374
|
-
|
|
21386
|
+
return new NotAvailableError(_t("No match found in FILTER evaluation"));
|
|
21375
21387
|
}
|
|
21376
21388
|
return mode === "row" ? transposeMatrix(result) : result;
|
|
21377
21389
|
},
|
|
@@ -21500,7 +21512,7 @@ const UNIQUE = {
|
|
|
21500
21512
|
result.push(row.data);
|
|
21501
21513
|
}
|
|
21502
21514
|
if (!result.length)
|
|
21503
|
-
|
|
21515
|
+
return new EvaluationError(_t("No unique values found"));
|
|
21504
21516
|
return _byColumn ? result : transposeMatrix(result);
|
|
21505
21517
|
},
|
|
21506
21518
|
isExported: true,
|
|
@@ -24426,7 +24438,7 @@ const IFS = {
|
|
|
24426
24438
|
return result;
|
|
24427
24439
|
}
|
|
24428
24440
|
}
|
|
24429
|
-
|
|
24441
|
+
return new EvaluationError(_t("No match."));
|
|
24430
24442
|
},
|
|
24431
24443
|
isExported: true,
|
|
24432
24444
|
};
|
|
@@ -24617,7 +24629,7 @@ const COLUMN = {
|
|
|
24617
24629
|
],
|
|
24618
24630
|
compute: function (cellReference) {
|
|
24619
24631
|
if (isEvaluationError(cellReference?.value)) {
|
|
24620
|
-
|
|
24632
|
+
return cellReference;
|
|
24621
24633
|
}
|
|
24622
24634
|
const column = cellReference === undefined
|
|
24623
24635
|
? this.__originCellPosition?.col
|
|
@@ -24635,7 +24647,7 @@ const COLUMNS = {
|
|
|
24635
24647
|
args: [arg("range (meta)", _t("The range whose column count will be returned."))],
|
|
24636
24648
|
compute: function (range) {
|
|
24637
24649
|
if (isEvaluationError(range?.value)) {
|
|
24638
|
-
|
|
24650
|
+
return range;
|
|
24639
24651
|
}
|
|
24640
24652
|
const zone = toZone(range.value);
|
|
24641
24653
|
return zone.right - zone.left + 1;
|
|
@@ -24713,11 +24725,11 @@ const INDIRECT = {
|
|
|
24713
24725
|
compute: function (reference, useA1Notation = { value: true }) {
|
|
24714
24726
|
let _reference = reference?.value?.toString();
|
|
24715
24727
|
if (!_reference) {
|
|
24716
|
-
|
|
24728
|
+
return new InvalidReferenceError(_t("Reference should be defined."));
|
|
24717
24729
|
}
|
|
24718
24730
|
const _useA1Notation = toBoolean(useA1Notation);
|
|
24719
24731
|
if (!_useA1Notation) {
|
|
24720
|
-
|
|
24732
|
+
return new EvaluationError(_t("R1C1 notation is not supported."));
|
|
24721
24733
|
}
|
|
24722
24734
|
const sheetId = this.__originSheetId;
|
|
24723
24735
|
const originPosition = this.__originCellPosition;
|
|
@@ -24729,7 +24741,7 @@ const INDIRECT = {
|
|
|
24729
24741
|
}
|
|
24730
24742
|
const range = this.getters.getRangeFromSheetXC(sheetId, _reference);
|
|
24731
24743
|
if (range === undefined || range.invalidXc || range.invalidSheetName) {
|
|
24732
|
-
|
|
24744
|
+
return new InvalidReferenceError();
|
|
24733
24745
|
}
|
|
24734
24746
|
if (originPosition) {
|
|
24735
24747
|
this.addDependencies?.(originPosition, [range]);
|
|
@@ -24840,7 +24852,7 @@ const ROW = {
|
|
|
24840
24852
|
],
|
|
24841
24853
|
compute: function (cellReference) {
|
|
24842
24854
|
if (isEvaluationError(cellReference?.value)) {
|
|
24843
|
-
|
|
24855
|
+
return cellReference;
|
|
24844
24856
|
}
|
|
24845
24857
|
const row = cellReference === undefined
|
|
24846
24858
|
? this.__originCellPosition?.row
|
|
@@ -24858,7 +24870,7 @@ const ROWS = {
|
|
|
24858
24870
|
args: [arg("range (meta)", _t("The range whose row count will be returned."))],
|
|
24859
24871
|
compute: function (range) {
|
|
24860
24872
|
if (isEvaluationError(range?.value)) {
|
|
24861
|
-
|
|
24873
|
+
return range;
|
|
24862
24874
|
}
|
|
24863
24875
|
const zone = toZone(range.value);
|
|
24864
24876
|
return zone.bottom - zone.top + 1;
|
|
@@ -25044,11 +25056,11 @@ const PIVOT = {
|
|
|
25044
25056
|
const _pivotFormulaId = toString(pivotFormulaId);
|
|
25045
25057
|
const _rowCount = toNumber(rowCount, this.locale);
|
|
25046
25058
|
if (_rowCount < 0) {
|
|
25047
|
-
|
|
25059
|
+
return new EvaluationError(_t("The number of rows must be positive."));
|
|
25048
25060
|
}
|
|
25049
25061
|
const _columnCount = toNumber(columnCount, this.locale);
|
|
25050
25062
|
if (_columnCount < 0) {
|
|
25051
|
-
|
|
25063
|
+
return new EvaluationError(_t("The number of columns must be positive."));
|
|
25052
25064
|
}
|
|
25053
25065
|
const _includeColumnHeaders = toBoolean(includeColumnHeaders);
|
|
25054
25066
|
const _includedTotal = toBoolean(includeTotal);
|
|
@@ -25116,7 +25128,7 @@ const OFFSET = {
|
|
|
25116
25128
|
}
|
|
25117
25129
|
const _cellReference = cellReference?.value;
|
|
25118
25130
|
if (!_cellReference) {
|
|
25119
|
-
|
|
25131
|
+
return new EvaluationError("In this context, the function OFFSET needs to have a cell or range in parameter.");
|
|
25120
25132
|
}
|
|
25121
25133
|
const zone = toZone(_cellReference);
|
|
25122
25134
|
let offsetHeight = zone.bottom - zone.top + 1;
|
|
@@ -28922,7 +28934,7 @@ class GaugeChartComponent extends Component {
|
|
|
28922
28934
|
useEffect(() => drawGaugeChart(this.canvas.el, this.runtime), () => {
|
|
28923
28935
|
const canvas = this.canvas.el;
|
|
28924
28936
|
const rect = canvas.getBoundingClientRect();
|
|
28925
|
-
return [rect.width, rect.height, this.runtime, this.canvas.el];
|
|
28937
|
+
return [rect.width, rect.height, this.runtime, this.canvas.el, window.devicePixelRatio];
|
|
28926
28938
|
});
|
|
28927
28939
|
}
|
|
28928
28940
|
}
|
|
@@ -29047,9 +29059,6 @@ class BarChart extends AbstractChart {
|
|
|
29047
29059
|
};
|
|
29048
29060
|
}
|
|
29049
29061
|
getDefinitionForExcel() {
|
|
29050
|
-
// Excel does not support aggregating labels
|
|
29051
|
-
if (this.aggregated)
|
|
29052
|
-
return undefined;
|
|
29053
29062
|
const dataSets = this.dataSets
|
|
29054
29063
|
.map((ds) => toExcelDataset(this.getters, ds))
|
|
29055
29064
|
.filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
|
|
@@ -30290,9 +30299,6 @@ class LineChart extends AbstractChart {
|
|
|
30290
30299
|
return new LineChart(definition, this.sheetId, this.getters);
|
|
30291
30300
|
}
|
|
30292
30301
|
getDefinitionForExcel() {
|
|
30293
|
-
// Excel does not support aggregating labels
|
|
30294
|
-
if (this.aggregated)
|
|
30295
|
-
return undefined;
|
|
30296
30302
|
const dataSets = this.dataSets
|
|
30297
30303
|
.map((ds) => toExcelDataset(this.getters, ds))
|
|
30298
30304
|
.filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
|
|
@@ -30403,9 +30409,6 @@ class PieChart extends AbstractChart {
|
|
|
30403
30409
|
return new PieChart(definition, sheetId, this.getters);
|
|
30404
30410
|
}
|
|
30405
30411
|
getDefinitionForExcel() {
|
|
30406
|
-
// Excel does not support aggregating labels
|
|
30407
|
-
if (this.aggregated)
|
|
30408
|
-
return undefined;
|
|
30409
30412
|
const dataSets = this.dataSets
|
|
30410
30413
|
.map((ds) => toExcelDataset(this.getters, ds))
|
|
30411
30414
|
.filter((ds) => ds.range !== "" && ds.range !== CellErrorType.InvalidReference);
|
|
@@ -32624,18 +32627,28 @@ linkMenuRegistry.add("sheet", {
|
|
|
32624
32627
|
function useInterval(callback, delay) {
|
|
32625
32628
|
let intervalId;
|
|
32626
32629
|
const { setInterval, clearInterval } = window;
|
|
32630
|
+
const pause = () => {
|
|
32631
|
+
clearInterval(intervalId);
|
|
32632
|
+
intervalId = undefined;
|
|
32633
|
+
};
|
|
32634
|
+
const safeCallback = () => {
|
|
32635
|
+
try {
|
|
32636
|
+
callback();
|
|
32637
|
+
}
|
|
32638
|
+
catch (e) {
|
|
32639
|
+
pause();
|
|
32640
|
+
throw e;
|
|
32641
|
+
}
|
|
32642
|
+
};
|
|
32627
32643
|
useEffect(() => {
|
|
32628
|
-
intervalId = setInterval(
|
|
32644
|
+
intervalId = setInterval(safeCallback, delay);
|
|
32629
32645
|
return () => clearInterval(intervalId);
|
|
32630
32646
|
}, () => [delay]);
|
|
32631
32647
|
return {
|
|
32632
|
-
pause
|
|
32633
|
-
clearInterval(intervalId);
|
|
32634
|
-
intervalId = undefined;
|
|
32635
|
-
},
|
|
32648
|
+
pause,
|
|
32636
32649
|
resume: () => {
|
|
32637
32650
|
if (intervalId === undefined) {
|
|
32638
|
-
intervalId = setInterval(
|
|
32651
|
+
intervalId = setInterval(safeCallback, delay);
|
|
32639
32652
|
}
|
|
32640
32653
|
},
|
|
32641
32654
|
};
|
|
@@ -37480,7 +37493,7 @@ class ColorPicker extends Component {
|
|
|
37480
37493
|
}
|
|
37481
37494
|
setHexColor(ev) {
|
|
37482
37495
|
// only support HEX code input
|
|
37483
|
-
const val = ev.target.value.slice(0, 7);
|
|
37496
|
+
const val = ev.target.value.replace("##", "#").slice(0, 7);
|
|
37484
37497
|
this.state.customHexColor = val;
|
|
37485
37498
|
if (!isColorValid(val)) ;
|
|
37486
37499
|
else {
|
|
@@ -48355,7 +48368,7 @@ css /* scss */ `
|
|
|
48355
48368
|
position: absolute;
|
|
48356
48369
|
top: 0;
|
|
48357
48370
|
left: ${HEADER_WIDTH}px;
|
|
48358
|
-
right:
|
|
48371
|
+
right: ${SCROLLBAR_WIDTH}px;
|
|
48359
48372
|
height: ${HEADER_HEIGHT}px;
|
|
48360
48373
|
&.o-dragging {
|
|
48361
48374
|
cursor: grabbing;
|
|
@@ -48521,9 +48534,8 @@ css /* scss */ `
|
|
|
48521
48534
|
position: absolute;
|
|
48522
48535
|
top: ${HEADER_HEIGHT}px;
|
|
48523
48536
|
left: 0;
|
|
48524
|
-
|
|
48537
|
+
bottom: ${SCROLLBAR_WIDTH}px;
|
|
48525
48538
|
width: ${HEADER_WIDTH}px;
|
|
48526
|
-
height: calc(100% - ${HEADER_HEIGHT + SCROLLBAR_WIDTH}px);
|
|
48527
48539
|
&.o-dragging {
|
|
48528
48540
|
cursor: grabbing;
|
|
48529
48541
|
}
|
|
@@ -56608,6 +56620,15 @@ function adaptPivotRange(range, applyChange) {
|
|
|
56608
56620
|
}
|
|
56609
56621
|
}
|
|
56610
56622
|
class SpreadsheetPivotCorePlugin extends CorePlugin {
|
|
56623
|
+
allowDispatch(cmd) {
|
|
56624
|
+
switch (cmd.type) {
|
|
56625
|
+
case "ADD_PIVOT":
|
|
56626
|
+
case "UPDATE_PIVOT":
|
|
56627
|
+
const definition = cmd.pivot;
|
|
56628
|
+
return this.checkDataSetValidity(definition);
|
|
56629
|
+
}
|
|
56630
|
+
return "Success" /* CommandResult.Success */;
|
|
56631
|
+
}
|
|
56611
56632
|
adaptRanges(applyChange) {
|
|
56612
56633
|
for (const pivotId of this.getters.getPivotIds()) {
|
|
56613
56634
|
const definition = this.getters.getPivotCoreDefinition(pivotId);
|
|
@@ -56626,6 +56647,16 @@ class SpreadsheetPivotCorePlugin extends CorePlugin {
|
|
|
56626
56647
|
}
|
|
56627
56648
|
}
|
|
56628
56649
|
}
|
|
56650
|
+
checkDataSetValidity(definition) {
|
|
56651
|
+
if (definition.type === "SPREADSHEET" && definition.dataSet) {
|
|
56652
|
+
const { zone, sheetId } = definition.dataSet;
|
|
56653
|
+
if (!sheetId || !this.getters.tryGetSheet(sheetId) || !zone || !isZoneValid(zone)) {
|
|
56654
|
+
return "InvalidDataSet" /* CommandResult.InvalidDataSet */;
|
|
56655
|
+
}
|
|
56656
|
+
return this.getters.checkZonesExistInSheet(sheetId, [zone]);
|
|
56657
|
+
}
|
|
56658
|
+
return "Success" /* CommandResult.Success */;
|
|
56659
|
+
}
|
|
56629
56660
|
}
|
|
56630
56661
|
|
|
56631
56662
|
class TableStylePlugin extends CorePlugin {
|
|
@@ -59463,7 +59494,7 @@ class DynamicTablesPlugin extends UIPlugin {
|
|
|
59463
59494
|
tables = {};
|
|
59464
59495
|
handle(cmd) {
|
|
59465
59496
|
if (invalidateEvaluationCommands.has(cmd.type) ||
|
|
59466
|
-
(cmd.type === "UPDATE_CELL" && "content" in cmd) ||
|
|
59497
|
+
(cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
|
|
59467
59498
|
cmd.type === "EVALUATE_CELLS") {
|
|
59468
59499
|
this.tables = {};
|
|
59469
59500
|
return;
|
|
@@ -59896,6 +59927,16 @@ function withPivotPresentationLayer (PivotClass) {
|
|
|
59896
59927
|
}
|
|
59897
59928
|
return values;
|
|
59898
59929
|
}
|
|
59930
|
+
else if (rowDomain.length === this.definition.rows.length &&
|
|
59931
|
+
colDomain.length &&
|
|
59932
|
+
colDomain.length < this.definition.columns.length) {
|
|
59933
|
+
const colSubTree = this.getSubTreeMatchingDomain(table.getColTree(), colDomain);
|
|
59934
|
+
const domains = this.treeToLeafDomains(colSubTree, colDomain);
|
|
59935
|
+
for (const domain of domains) {
|
|
59936
|
+
values.push(this._getPivotCellValueAndFormat(measure.id, rowDomain.concat(domain)));
|
|
59937
|
+
}
|
|
59938
|
+
return values;
|
|
59939
|
+
}
|
|
59899
59940
|
else {
|
|
59900
59941
|
const tree = table.getRowTree();
|
|
59901
59942
|
const subTree = this.getSubTreeMatchingDomain(tree, rowDomain);
|
|
@@ -63257,7 +63298,7 @@ class TableComputedStylePlugin extends UIPlugin {
|
|
|
63257
63298
|
tableStyles = {};
|
|
63258
63299
|
handle(cmd) {
|
|
63259
63300
|
if (invalidateEvaluationCommands.has(cmd.type) ||
|
|
63260
|
-
(cmd.type === "UPDATE_CELL" && "content" in cmd) ||
|
|
63301
|
+
(cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd)) ||
|
|
63261
63302
|
cmd.type === "EVALUATE_CELLS") {
|
|
63262
63303
|
this.tableStyles = {};
|
|
63263
63304
|
return;
|
|
@@ -65221,6 +65262,8 @@ class GridSelectionPlugin extends UIPlugin {
|
|
|
65221
65262
|
});
|
|
65222
65263
|
this.selectCell(col, row);
|
|
65223
65264
|
}
|
|
65265
|
+
const { col, row } = this.gridSelection.anchor.cell;
|
|
65266
|
+
this.moveClient({ sheetId: this.activeSheet.id, col, row });
|
|
65224
65267
|
}
|
|
65225
65268
|
/**
|
|
65226
65269
|
* Ensure selections are not outside sheet boundaries.
|
|
@@ -65953,8 +65996,11 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
65953
65996
|
case "REMOVE_TABLE":
|
|
65954
65997
|
case "UPDATE_TABLE":
|
|
65955
65998
|
case "UPDATE_FILTER":
|
|
65956
|
-
|
|
65957
|
-
|
|
65999
|
+
case "UNFREEZE_ROWS":
|
|
66000
|
+
case "UNFREEZE_COLUMNS":
|
|
66001
|
+
case "FREEZE_COLUMNS":
|
|
66002
|
+
case "FREEZE_ROWS":
|
|
66003
|
+
case "UNFREEZE_COLUMNS_ROWS":
|
|
65958
66004
|
case "REMOVE_COLUMNS_ROWS":
|
|
65959
66005
|
case "RESIZE_COLUMNS_ROWS":
|
|
65960
66006
|
case "HIDE_COLUMNS_ROWS":
|
|
@@ -65967,11 +66013,9 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
65967
66013
|
case "FOLD_HEADER_GROUPS_IN_ZONE":
|
|
65968
66014
|
case "UNFOLD_HEADER_GROUPS_IN_ZONE":
|
|
65969
66015
|
case "UNFOLD_ALL_HEADER_GROUPS":
|
|
65970
|
-
case "FOLD_ALL_HEADER_GROUPS":
|
|
65971
|
-
|
|
65972
|
-
this.sheetsWithDirtyViewports.add(sheetId);
|
|
66016
|
+
case "FOLD_ALL_HEADER_GROUPS":
|
|
66017
|
+
this.sheetsWithDirtyViewports.add(cmd.sheetId);
|
|
65973
66018
|
break;
|
|
65974
|
-
}
|
|
65975
66019
|
case "UPDATE_CELL":
|
|
65976
66020
|
// update cell content or format can change hidden rows because of data filters
|
|
65977
66021
|
if ("content" in cmd || "format" in cmd || cmd.style?.fontSize !== undefined) {
|
|
@@ -65987,13 +66031,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
65987
66031
|
case "ACTIVATE_SHEET":
|
|
65988
66032
|
this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
|
|
65989
66033
|
break;
|
|
65990
|
-
case "UNFREEZE_ROWS":
|
|
65991
|
-
case "UNFREEZE_COLUMNS":
|
|
65992
|
-
case "FREEZE_COLUMNS":
|
|
65993
|
-
case "FREEZE_ROWS":
|
|
65994
|
-
case "UNFREEZE_COLUMNS_ROWS":
|
|
65995
|
-
this.resetViewports(this.getters.getActiveSheetId());
|
|
65996
|
-
break;
|
|
65997
66034
|
case "DELETE_SHEET":
|
|
65998
66035
|
this.sheetsWithDirtyViewports.delete(cmd.sheetId);
|
|
65999
66036
|
break;
|
|
@@ -67173,7 +67210,7 @@ class AggregateStatisticsStore extends SpreadsheetStore {
|
|
|
67173
67210
|
}
|
|
67174
67211
|
handle(cmd) {
|
|
67175
67212
|
if (invalidateEvaluationCommands.has(cmd.type) ||
|
|
67176
|
-
(cmd.type === "UPDATE_CELL" && "content" in cmd)) {
|
|
67213
|
+
(cmd.type === "UPDATE_CELL" && ("content" in cmd || "format" in cmd))) {
|
|
67177
67214
|
this.isDirty = true;
|
|
67178
67215
|
}
|
|
67179
67216
|
switch (cmd.type) {
|
|
@@ -73712,6 +73749,6 @@ const constants = {
|
|
|
73712
73749
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, CommandResult, CorePlugin, DispatchResult, EvaluationError, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, hooks, invalidateCFEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
73713
73750
|
|
|
73714
73751
|
|
|
73715
|
-
__info__.version = "18.0.
|
|
73716
|
-
__info__.date = "2025-
|
|
73717
|
-
__info__.hash = "
|
|
73752
|
+
__info__.version = "18.0.26";
|
|
73753
|
+
__info__.date = "2025-05-02T12:30:31.966Z";
|
|
73754
|
+
__info__.hash = "5bdf504";
|