@odoo/o-spreadsheet 16.1.19 → 16.1.23
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 +214 -99
- package/dist/o-spreadsheet.d.ts +18 -7
- package/dist/o-spreadsheet.esm.js +214 -99
- package/dist/o-spreadsheet.iife.js +214 -99
- package/dist/o-spreadsheet.iife.min.js +231 -230
- package/package.json +2 -2
|
@@ -318,7 +318,16 @@
|
|
|
318
318
|
const mdyDateRegexp = /^\d{1,2}(\/|-|\s)\d{1,2}((\/|-|\s)\d{1,4})?$/;
|
|
319
319
|
const ymdDateRegexp = /^\d{3,4}(\/|-|\s)\d{1,2}(\/|-|\s)\d{1,2}$/;
|
|
320
320
|
const timeRegexp = /((\d+(:\d+)?(:\d+)?\s*(AM|PM))|(\d+:\d+(:\d+)?))$/;
|
|
321
|
+
const CACHE = {};
|
|
321
322
|
function parseDateTime(str) {
|
|
323
|
+
if (str in CACHE) {
|
|
324
|
+
return CACHE[str];
|
|
325
|
+
}
|
|
326
|
+
const date = _parseDateTime(str);
|
|
327
|
+
CACHE[str] = date;
|
|
328
|
+
return date;
|
|
329
|
+
}
|
|
330
|
+
function _parseDateTime(str) {
|
|
322
331
|
str = str.trim();
|
|
323
332
|
let time;
|
|
324
333
|
const timeMatch = str.match(timeRegexp);
|
|
@@ -1003,13 +1012,17 @@
|
|
|
1003
1012
|
return position === "after" ? base + 1 : base;
|
|
1004
1013
|
}
|
|
1005
1014
|
/**
|
|
1006
|
-
*
|
|
1015
|
+
* Compares two objects.
|
|
1007
1016
|
*/
|
|
1008
1017
|
function deepEquals(o1, o2) {
|
|
1009
1018
|
if (o1 === o2)
|
|
1010
1019
|
return true;
|
|
1011
1020
|
if ((o1 && !o2) || (o2 && !o1))
|
|
1012
1021
|
return false;
|
|
1022
|
+
if (typeof o1 !== typeof o2)
|
|
1023
|
+
return false;
|
|
1024
|
+
if (typeof o1 !== "object")
|
|
1025
|
+
return o1 === o2;
|
|
1013
1026
|
// Objects can have different keys if the values are undefined
|
|
1014
1027
|
const keys = new Set();
|
|
1015
1028
|
Object.keys(o1).forEach((key) => keys.add(key));
|
|
@@ -2118,8 +2131,9 @@
|
|
|
2118
2131
|
}
|
|
2119
2132
|
get zone() {
|
|
2120
2133
|
const { left, top, bottom, right } = this._zone;
|
|
2121
|
-
if (right !== undefined && bottom !== undefined)
|
|
2122
|
-
return
|
|
2134
|
+
if (right !== undefined && bottom !== undefined) {
|
|
2135
|
+
return this._zone;
|
|
2136
|
+
}
|
|
2123
2137
|
else if (bottom === undefined && right !== undefined) {
|
|
2124
2138
|
return { right, top, left, bottom: this.getSheetSize(this.sheetId).height - 1 };
|
|
2125
2139
|
}
|
|
@@ -3645,6 +3659,9 @@
|
|
|
3645
3659
|
CommandResult[CommandResult["InvalidQuantity"] = 87] = "InvalidQuantity";
|
|
3646
3660
|
})(exports.CommandResult || (exports.CommandResult = {}));
|
|
3647
3661
|
|
|
3662
|
+
function isMatrix(x) {
|
|
3663
|
+
return Array.isArray(x) && Array.isArray(x[0]);
|
|
3664
|
+
}
|
|
3648
3665
|
var DIRECTION;
|
|
3649
3666
|
(function (DIRECTION) {
|
|
3650
3667
|
DIRECTION["UP"] = "up";
|
|
@@ -4827,6 +4844,7 @@
|
|
|
4827
4844
|
this.labelsAsText = definition.labelsAsText;
|
|
4828
4845
|
this.stacked = definition.stacked;
|
|
4829
4846
|
this.aggregated = definition.aggregated;
|
|
4847
|
+
this.cumulative = definition.cumulative;
|
|
4830
4848
|
}
|
|
4831
4849
|
static validateChartDefinition(validator, definition) {
|
|
4832
4850
|
return validator.checkValidations(definition, checkDataset, checkLabelRange);
|
|
@@ -4847,6 +4865,7 @@
|
|
|
4847
4865
|
labelRange: context.auxiliaryRange || undefined,
|
|
4848
4866
|
stacked: false,
|
|
4849
4867
|
aggregated: false,
|
|
4868
|
+
cumulative: false,
|
|
4850
4869
|
};
|
|
4851
4870
|
}
|
|
4852
4871
|
getDefinition() {
|
|
@@ -4867,6 +4886,7 @@
|
|
|
4867
4886
|
labelsAsText: this.labelsAsText,
|
|
4868
4887
|
stacked: this.stacked,
|
|
4869
4888
|
aggregated: this.aggregated,
|
|
4889
|
+
cumulative: this.cumulative,
|
|
4870
4890
|
};
|
|
4871
4891
|
}
|
|
4872
4892
|
getContextCreation() {
|
|
@@ -5060,6 +5080,16 @@
|
|
|
5060
5080
|
if (chart.stacked) {
|
|
5061
5081
|
backgroundRGBA.a = LINE_FILL_TRANSPARENCY;
|
|
5062
5082
|
}
|
|
5083
|
+
if (chart.cumulative) {
|
|
5084
|
+
let accumulator = 0;
|
|
5085
|
+
data = data.map((value) => {
|
|
5086
|
+
if (!isNaN(value)) {
|
|
5087
|
+
accumulator += parseFloat(value);
|
|
5088
|
+
return accumulator;
|
|
5089
|
+
}
|
|
5090
|
+
return value;
|
|
5091
|
+
});
|
|
5092
|
+
}
|
|
5063
5093
|
const backgroundColor = rgbaToHex(backgroundRGBA);
|
|
5064
5094
|
const dataset = {
|
|
5065
5095
|
label,
|
|
@@ -6401,6 +6431,7 @@
|
|
|
6401
6431
|
labelsAsText: false,
|
|
6402
6432
|
stacked: false,
|
|
6403
6433
|
aggregated: false,
|
|
6434
|
+
cumulative: false,
|
|
6404
6435
|
labelRange: labelRangeXc,
|
|
6405
6436
|
type: "line",
|
|
6406
6437
|
dataSetsHaveTitle,
|
|
@@ -6754,6 +6785,13 @@
|
|
|
6754
6785
|
elements: rows,
|
|
6755
6786
|
});
|
|
6756
6787
|
};
|
|
6788
|
+
const CAN_REMOVE_COLUMNS_ROWS = (dimension, env) => {
|
|
6789
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
6790
|
+
const selectedElements = env.model.getters.getElementsFromSelection(dimension);
|
|
6791
|
+
const includesAllVisibleHeaders = env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, dimension, selectedElements);
|
|
6792
|
+
const includesAllNonFrozenHeaders = env.model.getters.checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, selectedElements);
|
|
6793
|
+
return !includesAllVisibleHeaders && !includesAllNonFrozenHeaders;
|
|
6794
|
+
};
|
|
6757
6795
|
const REMOVE_COLUMNS_NAME = (env) => {
|
|
6758
6796
|
if (env.model.getters.getSelectedZones().length > 1) {
|
|
6759
6797
|
return _lt("Delete columns");
|
|
@@ -7344,11 +7382,7 @@
|
|
|
7344
7382
|
name: REMOVE_COLUMNS_NAME,
|
|
7345
7383
|
sequence: 90,
|
|
7346
7384
|
action: REMOVE_COLUMNS_ACTION,
|
|
7347
|
-
isVisible: (env) =>
|
|
7348
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
7349
|
-
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
7350
|
-
return env.model.getters.canRemoveHeaders(sheetId, "COL", selectedCols);
|
|
7351
|
-
},
|
|
7385
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
7352
7386
|
})
|
|
7353
7387
|
.add("clear_column", {
|
|
7354
7388
|
name: DELETE_CONTENT_COLUMNS_NAME,
|
|
@@ -7362,7 +7396,7 @@
|
|
|
7362
7396
|
isVisible: (env) => {
|
|
7363
7397
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
7364
7398
|
const selectedCols = env.model.getters.getElementsFromSelection("COL");
|
|
7365
|
-
return env.model.getters.
|
|
7399
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "COL", selectedCols);
|
|
7366
7400
|
},
|
|
7367
7401
|
separator: true,
|
|
7368
7402
|
})
|
|
@@ -7436,11 +7470,7 @@
|
|
|
7436
7470
|
name: REMOVE_ROWS_NAME,
|
|
7437
7471
|
sequence: 70,
|
|
7438
7472
|
action: REMOVE_ROWS_ACTION,
|
|
7439
|
-
isVisible: (env) =>
|
|
7440
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
7441
|
-
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
7442
|
-
return env.model.getters.canRemoveHeaders(sheetId, "ROW", selectedRows);
|
|
7443
|
-
},
|
|
7473
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
7444
7474
|
})
|
|
7445
7475
|
.add("clear_row", {
|
|
7446
7476
|
name: DELETE_CONTENT_ROWS_NAME,
|
|
@@ -7454,7 +7484,7 @@
|
|
|
7454
7484
|
isVisible: (env) => {
|
|
7455
7485
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
7456
7486
|
const selectedRows = env.model.getters.getElementsFromSelection("ROW");
|
|
7457
|
-
return env.model.getters.
|
|
7487
|
+
return !env.model.getters.checkElementsIncludeAllVisibleHeaders(sheetId, "ROW", selectedRows);
|
|
7458
7488
|
},
|
|
7459
7489
|
separator: true,
|
|
7460
7490
|
})
|
|
@@ -14101,6 +14131,36 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
14101
14131
|
isExported: true,
|
|
14102
14132
|
};
|
|
14103
14133
|
// -----------------------------------------------------------------------------
|
|
14134
|
+
// INDEX
|
|
14135
|
+
// -----------------------------------------------------------------------------
|
|
14136
|
+
const INDEX = {
|
|
14137
|
+
description: _lt(`Returns the content of a cell, specified by row and column offset.`),
|
|
14138
|
+
args: args(`
|
|
14139
|
+
reference (any, range) ${_lt("The range of cells from which the value is returned.")}
|
|
14140
|
+
row (number) ${_lt("The index of the row to be returned from within the reference range of cells.")}
|
|
14141
|
+
column (number) ${_lt("The index of the column to be returned from within the reference range of cells.")}
|
|
14142
|
+
`),
|
|
14143
|
+
returns: ["ANY"],
|
|
14144
|
+
computeFormat: (reference, row, column) => {
|
|
14145
|
+
var _a;
|
|
14146
|
+
const _row = toNumber(row.value);
|
|
14147
|
+
const _column = toNumber(column.value);
|
|
14148
|
+
return (_a = reference[_column - 1][_row - 1]) === null || _a === void 0 ? void 0 : _a.format;
|
|
14149
|
+
},
|
|
14150
|
+
compute: function (reference, row, column) {
|
|
14151
|
+
const _reference = isMatrix(reference) ? reference : [[reference]];
|
|
14152
|
+
const _row = toNumber(row);
|
|
14153
|
+
const _column = toNumber(column);
|
|
14154
|
+
assert(() => _column >= 0 &&
|
|
14155
|
+
_column - 1 < _reference.length &&
|
|
14156
|
+
_row >= 0 &&
|
|
14157
|
+
_row - 1 < _reference[0].length, _lt("Index out of range."));
|
|
14158
|
+
assert(() => row !== 0 && column !== 0, _lt("This function can only return a single cell value, not an array. Provide valid row and column indices."));
|
|
14159
|
+
return _reference[_column - 1][_row - 1];
|
|
14160
|
+
},
|
|
14161
|
+
isExported: true,
|
|
14162
|
+
};
|
|
14163
|
+
// -----------------------------------------------------------------------------
|
|
14104
14164
|
// LOOKUP
|
|
14105
14165
|
// -----------------------------------------------------------------------------
|
|
14106
14166
|
const LOOKUP = {
|
|
@@ -14294,6 +14354,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
14294
14354
|
COLUMN: COLUMN,
|
|
14295
14355
|
COLUMNS: COLUMNS,
|
|
14296
14356
|
HLOOKUP: HLOOKUP,
|
|
14357
|
+
INDEX: INDEX,
|
|
14297
14358
|
LOOKUP: LOOKUP,
|
|
14298
14359
|
MATCH: MATCH,
|
|
14299
14360
|
ROW: ROW,
|
|
@@ -18271,6 +18332,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
18271
18332
|
padding: 10px;
|
|
18272
18333
|
width: ${ERROR_TOOLTIP_WIDTH}px;
|
|
18273
18334
|
box-sizing: border-box !important;
|
|
18335
|
+
overflow-wrap: break-word;
|
|
18274
18336
|
}
|
|
18275
18337
|
`;
|
|
18276
18338
|
class ErrorToolTip extends owl.Component {
|
|
@@ -18451,6 +18513,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
18451
18513
|
});
|
|
18452
18514
|
this.state.values = this.getFilterValues(this.props.filterPosition);
|
|
18453
18515
|
}
|
|
18516
|
+
get isReadonly() {
|
|
18517
|
+
return this.env.model.getters.isReadonly();
|
|
18518
|
+
}
|
|
18454
18519
|
getFilterValues(position) {
|
|
18455
18520
|
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
18456
18521
|
const filter = this.env.model.getters.getFilter({ sheetId, ...position });
|
|
@@ -19331,11 +19396,13 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
19331
19396
|
name: REMOVE_ROWS_NAME,
|
|
19332
19397
|
sequence: 80,
|
|
19333
19398
|
action: REMOVE_ROWS_ACTION,
|
|
19399
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("ROW", env),
|
|
19334
19400
|
})
|
|
19335
19401
|
.addChild("edit_delete_column", ["edit"], {
|
|
19336
19402
|
name: REMOVE_COLUMNS_NAME,
|
|
19337
19403
|
sequence: 90,
|
|
19338
19404
|
action: REMOVE_COLUMNS_ACTION,
|
|
19405
|
+
isVisible: (env) => CAN_REMOVE_COLUMNS_ROWS("COL", env),
|
|
19339
19406
|
})
|
|
19340
19407
|
.addChild("edit_delete_cell_shift_up", ["edit"], {
|
|
19341
19408
|
name: _lt("Delete cell and shift up"),
|
|
@@ -20515,6 +20582,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
20515
20582
|
aggregated: ev.target.checked,
|
|
20516
20583
|
});
|
|
20517
20584
|
}
|
|
20585
|
+
onUpdateCumulative(ev) {
|
|
20586
|
+
this.props.updateChart(this.props.figureId, {
|
|
20587
|
+
cumulative: ev.target.checked,
|
|
20588
|
+
});
|
|
20589
|
+
}
|
|
20518
20590
|
}
|
|
20519
20591
|
LineConfigPanel.template = "o-spreadsheet-LineConfigPanel";
|
|
20520
20592
|
|
|
@@ -21706,9 +21778,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
21706
21778
|
}
|
|
21707
21779
|
setup() {
|
|
21708
21780
|
this.showFormulaState = this.env.model.getters.shouldShowFormulas();
|
|
21709
|
-
this.debouncedUpdateSearch = debounce(this.updateSearch.bind(this), 200);
|
|
21710
21781
|
owl.onMounted(() => this.focusInput());
|
|
21711
21782
|
owl.onWillUnmount(() => {
|
|
21783
|
+
clearTimeout(this.debounceTimeoutId);
|
|
21712
21784
|
this.env.model.dispatch("CLEAR_SEARCH");
|
|
21713
21785
|
this.env.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.showFormulaState });
|
|
21714
21786
|
});
|
|
@@ -21753,6 +21825,13 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
21753
21825
|
searchOptions: this.state.searchOptions,
|
|
21754
21826
|
});
|
|
21755
21827
|
}
|
|
21828
|
+
debouncedUpdateSearch() {
|
|
21829
|
+
clearTimeout(this.debounceTimeoutId);
|
|
21830
|
+
this.debounceTimeoutId = setTimeout(() => {
|
|
21831
|
+
this.updateSearch();
|
|
21832
|
+
this.debounceTimeoutId = undefined;
|
|
21833
|
+
}, 200);
|
|
21834
|
+
}
|
|
21756
21835
|
replace() {
|
|
21757
21836
|
this.env.model.dispatch("REPLACE_SEARCH", {
|
|
21758
21837
|
replaceWith: this.state.replaceWith,
|
|
@@ -22403,9 +22482,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
22403
22482
|
}
|
|
22404
22483
|
}
|
|
22405
22484
|
function updateMousePosition(e) {
|
|
22406
|
-
|
|
22407
|
-
|
|
22408
|
-
|
|
22485
|
+
if (gridRef.el === e.target) {
|
|
22486
|
+
x = e.offsetX;
|
|
22487
|
+
y = e.offsetY;
|
|
22488
|
+
lastMoved = Date.now();
|
|
22489
|
+
}
|
|
22409
22490
|
}
|
|
22410
22491
|
function recompute() {
|
|
22411
22492
|
const { col, row } = getPosition();
|
|
@@ -22688,7 +22769,14 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
22688
22769
|
return;
|
|
22689
22770
|
}
|
|
22690
22771
|
if (this.state.waitingForMove === true) {
|
|
22691
|
-
this.
|
|
22772
|
+
if (!this.env.model.getters.isGridSelectionActive()) {
|
|
22773
|
+
this._selectElement(index, false);
|
|
22774
|
+
}
|
|
22775
|
+
else {
|
|
22776
|
+
// FIXME: Consider reintroducing this feature for all type of selection if we find
|
|
22777
|
+
// a way to have the grid selection follow the other selections evolution
|
|
22778
|
+
this.startMovement(ev);
|
|
22779
|
+
}
|
|
22692
22780
|
return;
|
|
22693
22781
|
}
|
|
22694
22782
|
if (this.env.model.getters.getEditionMode() === "editing") {
|
|
@@ -25485,6 +25573,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
25485
25573
|
legendPosition: chartData.legendPosition,
|
|
25486
25574
|
stacked: chartData.stacked || false,
|
|
25487
25575
|
aggregated: false,
|
|
25576
|
+
cumulative: chartData.cumulative || false,
|
|
25488
25577
|
labelsAsText: false,
|
|
25489
25578
|
};
|
|
25490
25579
|
}
|
|
@@ -28521,10 +28610,11 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
28521
28610
|
* Reconstructs the original formula string based on a normalized form and its dependencies
|
|
28522
28611
|
*/
|
|
28523
28612
|
buildFormulaContent(sheetId, cell, dependencies) {
|
|
28524
|
-
const ranges = dependencies ||
|
|
28613
|
+
const ranges = dependencies || cell.dependencies;
|
|
28614
|
+
let rangeIndex = 0;
|
|
28525
28615
|
return concat(cell.compiledFormula.tokens.map((token) => {
|
|
28526
28616
|
if (token.type === "REFERENCE") {
|
|
28527
|
-
const range = ranges
|
|
28617
|
+
const range = ranges[rangeIndex++];
|
|
28528
28618
|
return this.getters.getRangeString(range, sheetId);
|
|
28529
28619
|
}
|
|
28530
28620
|
return token.value;
|
|
@@ -30049,7 +30139,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
30049
30139
|
if (!this.getters.tryGetSheet(cmd.sheetId)) {
|
|
30050
30140
|
return 27 /* CommandResult.InvalidSheetId */;
|
|
30051
30141
|
}
|
|
30052
|
-
if (
|
|
30142
|
+
if (this.checkElementsIncludeAllVisibleHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
30053
30143
|
return 8 /* CommandResult.NotEnoughElements */;
|
|
30054
30144
|
}
|
|
30055
30145
|
return 0 /* CommandResult.Success */;
|
|
@@ -30099,9 +30189,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
30099
30189
|
}
|
|
30100
30190
|
return;
|
|
30101
30191
|
}
|
|
30102
|
-
|
|
30192
|
+
checkElementsIncludeAllVisibleHeaders(sheetId, dimension, elements) {
|
|
30103
30193
|
const visibleHeaders = this.getAllVisibleHeaders(sheetId, dimension);
|
|
30104
|
-
return
|
|
30194
|
+
return includesAll(elements, visibleHeaders);
|
|
30105
30195
|
}
|
|
30106
30196
|
isRowHiddenByUser(sheetId, index) {
|
|
30107
30197
|
return this.hiddenHeaders[sheetId].ROW[index];
|
|
@@ -30197,7 +30287,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
30197
30287
|
}
|
|
30198
30288
|
}
|
|
30199
30289
|
HeaderVisibilityPlugin.getters = [
|
|
30200
|
-
"
|
|
30290
|
+
"checkElementsIncludeAllVisibleHeaders",
|
|
30201
30291
|
"getHiddenColsGroups",
|
|
30202
30292
|
"getHiddenRowsGroups",
|
|
30203
30293
|
"isRowHiddenByUser",
|
|
@@ -31225,6 +31315,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
31225
31315
|
if (Math.min(...cmd.elements) < 0 || Math.max(...cmd.elements) > elements) {
|
|
31226
31316
|
return 86 /* CommandResult.InvalidHeaderIndex */;
|
|
31227
31317
|
}
|
|
31318
|
+
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
31319
|
+
return 8 /* CommandResult.NotEnoughElements */;
|
|
31320
|
+
}
|
|
31228
31321
|
else {
|
|
31229
31322
|
return 0 /* CommandResult.Success */;
|
|
31230
31323
|
}
|
|
@@ -31511,6 +31604,20 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
31511
31604
|
}
|
|
31512
31605
|
this.history.update("sheets", sheetId, "panes", panes);
|
|
31513
31606
|
}
|
|
31607
|
+
/**
|
|
31608
|
+
* Checks if all non-frozen header indices are present in the provided elements of selected rows/columns.
|
|
31609
|
+
* This validation ensures that all rows or columns cannot be deleted when frozen panes exist.
|
|
31610
|
+
*/
|
|
31611
|
+
checkElementsIncludeAllNonFrozenHeaders(sheetId, dimension, elements) {
|
|
31612
|
+
const paneDivisions = this.getters.getPaneDivisions(sheetId);
|
|
31613
|
+
const startIndex = dimension === "ROW" ? paneDivisions.ySplit : paneDivisions.xSplit;
|
|
31614
|
+
const endIndex = this.getters.getNumberHeaders(sheetId, dimension);
|
|
31615
|
+
if (!startIndex) {
|
|
31616
|
+
return false;
|
|
31617
|
+
}
|
|
31618
|
+
const indicesToCheck = range(startIndex, endIndex);
|
|
31619
|
+
return includesAll(elements, indicesToCheck);
|
|
31620
|
+
}
|
|
31514
31621
|
// ---------------------------------------------------------------------------
|
|
31515
31622
|
// Row/Col manipulation
|
|
31516
31623
|
// ---------------------------------------------------------------------------
|
|
@@ -32043,6 +32150,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
32043
32150
|
"getSheetSize",
|
|
32044
32151
|
"getSheetZone",
|
|
32045
32152
|
"getPaneDivisions",
|
|
32153
|
+
"checkElementsIncludeAllNonFrozenHeaders",
|
|
32046
32154
|
];
|
|
32047
32155
|
|
|
32048
32156
|
/**
|
|
@@ -32581,6 +32689,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
32581
32689
|
// stores the computed styles in the format of computedStyles.sheetName[col][row] = Style
|
|
32582
32690
|
this.computedStyles = {};
|
|
32583
32691
|
this.computedIcons = {};
|
|
32692
|
+
this.uuidGenerator = new UuidGenerator();
|
|
32584
32693
|
/**
|
|
32585
32694
|
* Execute the predicate to know if a conditional formatting rule should be applied to a cell
|
|
32586
32695
|
*/
|
|
@@ -32933,13 +33042,20 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
32933
33042
|
this.adaptRules(origin.sheetId, cf, [xc], toRemoveRange);
|
|
32934
33043
|
}
|
|
32935
33044
|
else {
|
|
32936
|
-
this.adaptRules(target.sheetId, cf, [xc], []);
|
|
32937
33045
|
this.adaptRules(origin.sheetId, cf, [], toRemoveRange);
|
|
33046
|
+
const cfToCopyTo = this.getCFToCopyTo(target.sheetId, cf);
|
|
33047
|
+
this.adaptRules(target.sheetId, cfToCopyTo, [xc], []);
|
|
32938
33048
|
}
|
|
32939
33049
|
}
|
|
32940
33050
|
}
|
|
32941
33051
|
}
|
|
32942
33052
|
}
|
|
33053
|
+
getCFToCopyTo(targetSheetId, originCF) {
|
|
33054
|
+
const cfInTarget = this.getters
|
|
33055
|
+
.getConditionalFormats(targetSheetId)
|
|
33056
|
+
.find((cf) => cf.stopIfTrue === originCF.stopIfTrue && deepEquals(cf.rule, originCF.rule));
|
|
33057
|
+
return cfInTarget ? cfInTarget : { ...originCF, id: this.uuidGenerator.uuidv4(), ranges: [] };
|
|
33058
|
+
}
|
|
32943
33059
|
}
|
|
32944
33060
|
EvaluationConditionalFormatPlugin.getters = ["getConditionalIcon", "getCellComputedStyle"];
|
|
32945
33061
|
|
|
@@ -33287,30 +33403,26 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33287
33403
|
const { end } = this.getters.getColDimensions(sheetId, targetCol);
|
|
33288
33404
|
const maxCol = this.getters.getNumberCols(sheetId);
|
|
33289
33405
|
if (this.offsetX + this.offsetCorrectionX + this.viewportWidth < end) {
|
|
33290
|
-
|
|
33291
|
-
|
|
33292
|
-
|
|
33293
|
-
}
|
|
33294
|
-
if (this.getters.isColHidden(sheetId, col)) {
|
|
33295
|
-
continue;
|
|
33296
|
-
}
|
|
33297
|
-
this.offsetX = this.getters.getColDimensions(sheetId, col).end - this.offsetCorrectionX;
|
|
33298
|
-
this.offsetScrollbarX = this.offsetX;
|
|
33299
|
-
this.adjustViewportZoneX();
|
|
33406
|
+
let finalTarget = targetCol;
|
|
33407
|
+
while (this.getters.isColHidden(sheetId, finalTarget) && targetCol < maxCol) {
|
|
33408
|
+
finalTarget++;
|
|
33300
33409
|
}
|
|
33410
|
+
const finalTargetEnd = this.getters.getColDimensions(sheetId, finalTarget).end;
|
|
33411
|
+
const startIndex = this.searchHeaderIndex("COL", finalTargetEnd - this.viewportWidth - this.offsetCorrectionX, this.boundaries.left, true);
|
|
33412
|
+
this.offsetX =
|
|
33413
|
+
this.getters.getColDimensions(sheetId, startIndex).end - this.offsetCorrectionX;
|
|
33414
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33415
|
+
this.adjustViewportZoneX();
|
|
33301
33416
|
}
|
|
33302
33417
|
else if (this.left > targetCol) {
|
|
33303
|
-
|
|
33304
|
-
|
|
33305
|
-
|
|
33306
|
-
}
|
|
33307
|
-
if (this.getters.isColHidden(sheetId, col)) {
|
|
33308
|
-
continue;
|
|
33309
|
-
}
|
|
33310
|
-
this.offsetX = this.getters.getColDimensions(sheetId, col).start - this.offsetCorrectionX;
|
|
33311
|
-
this.offsetScrollbarX = this.offsetX;
|
|
33312
|
-
this.adjustViewportZoneX();
|
|
33418
|
+
let finalTarget = targetCol;
|
|
33419
|
+
while (this.getters.isColHidden(sheetId, finalTarget) && targetCol > 0) {
|
|
33420
|
+
finalTarget--;
|
|
33313
33421
|
}
|
|
33422
|
+
this.offsetX =
|
|
33423
|
+
this.getters.getColDimensions(sheetId, finalTarget).start - this.offsetCorrectionX;
|
|
33424
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33425
|
+
this.adjustViewportZoneX();
|
|
33314
33426
|
}
|
|
33315
33427
|
}
|
|
33316
33428
|
adjustPositionY(targetRow) {
|
|
@@ -33318,30 +33430,26 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33318
33430
|
const { end } = this.getters.getRowDimensions(sheetId, targetRow);
|
|
33319
33431
|
const maxRow = this.getters.getNumberRows(sheetId);
|
|
33320
33432
|
if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) {
|
|
33321
|
-
|
|
33322
|
-
|
|
33323
|
-
|
|
33324
|
-
}
|
|
33325
|
-
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33326
|
-
continue;
|
|
33327
|
-
}
|
|
33328
|
-
this.offsetY = this.getters.getRowDimensions(sheetId, row).end - this.offsetCorrectionY;
|
|
33329
|
-
this.offsetScrollbarY = this.offsetY;
|
|
33330
|
-
this.adjustViewportZoneY();
|
|
33433
|
+
let finalTarget = targetRow;
|
|
33434
|
+
while (this.getters.isRowHidden(sheetId, finalTarget) && targetRow < maxRow) {
|
|
33435
|
+
finalTarget++;
|
|
33331
33436
|
}
|
|
33437
|
+
const finalTargetEnd = this.getters.getRowDimensions(sheetId, finalTarget).end;
|
|
33438
|
+
const startIndex = this.searchHeaderIndex("ROW", finalTargetEnd - this.viewportHeight - this.offsetCorrectionY, this.boundaries.top, true);
|
|
33439
|
+
this.offsetY =
|
|
33440
|
+
this.getters.getRowDimensions(sheetId, startIndex).end - this.offsetCorrectionY;
|
|
33441
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33442
|
+
this.adjustViewportZoneY();
|
|
33332
33443
|
}
|
|
33333
33444
|
else if (this.top > targetRow) {
|
|
33334
|
-
|
|
33335
|
-
|
|
33336
|
-
|
|
33337
|
-
}
|
|
33338
|
-
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33339
|
-
continue;
|
|
33340
|
-
}
|
|
33341
|
-
this.offsetY = this.getters.getRowDimensions(sheetId, row).start - this.offsetCorrectionY;
|
|
33342
|
-
this.offsetScrollbarY = this.offsetY;
|
|
33343
|
-
this.adjustViewportZoneY();
|
|
33445
|
+
let finalTarget = targetRow;
|
|
33446
|
+
while (this.getters.isRowHidden(sheetId, finalTarget) && targetRow > 0) {
|
|
33447
|
+
finalTarget--;
|
|
33344
33448
|
}
|
|
33449
|
+
this.offsetY =
|
|
33450
|
+
this.getters.getRowDimensions(sheetId, finalTarget).start - this.offsetCorrectionY;
|
|
33451
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33452
|
+
this.adjustViewportZoneY();
|
|
33345
33453
|
}
|
|
33346
33454
|
}
|
|
33347
33455
|
setViewportOffset(offsetX, offsetY) {
|
|
@@ -33461,6 +33569,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33461
33569
|
const sheetId = this.sheetId;
|
|
33462
33570
|
this.left = this.searchHeaderIndex("COL", this.offsetScrollbarX, this.boundaries.left);
|
|
33463
33571
|
this.right = Math.min(this.boundaries.right, this.searchHeaderIndex("COL", this.viewportWidth, this.left));
|
|
33572
|
+
if (this.left === -1) {
|
|
33573
|
+
this.left = this.boundaries.left;
|
|
33574
|
+
}
|
|
33464
33575
|
if (this.right === -1) {
|
|
33465
33576
|
this.right = this.getters.getNumberCols(sheetId) - 1;
|
|
33466
33577
|
}
|
|
@@ -33474,6 +33585,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33474
33585
|
const sheetId = this.sheetId;
|
|
33475
33586
|
this.top = this.searchHeaderIndex("ROW", this.offsetScrollbarY, this.boundaries.top);
|
|
33476
33587
|
this.bottom = Math.min(this.boundaries.bottom, this.searchHeaderIndex("ROW", this.viewportHeight, this.top));
|
|
33588
|
+
if (this.top === -1) {
|
|
33589
|
+
this.top = this.boundaries.top;
|
|
33590
|
+
}
|
|
33477
33591
|
if (this.bottom === -1) {
|
|
33478
33592
|
this.bottom = this.getters.getNumberRows(sheetId) - 1;
|
|
33479
33593
|
}
|
|
@@ -34909,14 +35023,10 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
34909
35023
|
case "REPLACE_ALL_SEARCH":
|
|
34910
35024
|
this.replaceAll(cmd.replaceWith);
|
|
34911
35025
|
break;
|
|
34912
|
-
case "EVALUATE_CELLS":
|
|
34913
|
-
case "UPDATE_CELL":
|
|
34914
|
-
case "REMOVE_FILTER_TABLE":
|
|
34915
|
-
case "UPDATE_FILTER":
|
|
34916
|
-
this.isSearchDirty = true;
|
|
34917
|
-
break;
|
|
34918
35026
|
case "UNDO":
|
|
34919
35027
|
case "REDO":
|
|
35028
|
+
case "REMOVE_FILTER_TABLE":
|
|
35029
|
+
case "UPDATE_FILTER":
|
|
34920
35030
|
case "REMOVE_COLUMNS_ROWS":
|
|
34921
35031
|
case "HIDE_COLUMNS_ROWS":
|
|
34922
35032
|
case "UNHIDE_COLUMNS_ROWS":
|
|
@@ -37908,7 +38018,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
37908
38018
|
});
|
|
37909
38019
|
for (const filterTable of this.copiedTables) {
|
|
37910
38020
|
this.dispatch("REMOVE_FILTER_TABLE", {
|
|
37911
|
-
sheetId: this.
|
|
38021
|
+
sheetId: this.sheetId,
|
|
37912
38022
|
target: [filterTable.zone],
|
|
37913
38023
|
});
|
|
37914
38024
|
}
|
|
@@ -38386,7 +38496,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
38386
38496
|
allowDispatch(cmd) {
|
|
38387
38497
|
switch (cmd.type) {
|
|
38388
38498
|
case "CUT":
|
|
38389
|
-
const zones =
|
|
38499
|
+
const zones = this.getters.getSelectedZones();
|
|
38390
38500
|
const state = this.getClipboardState(zones, cmd.type);
|
|
38391
38501
|
return state.isCutAllowed(zones);
|
|
38392
38502
|
case "PASTE":
|
|
@@ -38417,7 +38527,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
38417
38527
|
switch (cmd.type) {
|
|
38418
38528
|
case "COPY":
|
|
38419
38529
|
case "CUT":
|
|
38420
|
-
const zones =
|
|
38530
|
+
const zones = this.getters.getSelectedZones();
|
|
38421
38531
|
this.state = this.getClipboardState(zones, cmd.type);
|
|
38422
38532
|
this.status = "visible";
|
|
38423
38533
|
break;
|
|
@@ -38848,6 +38958,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
38848
38958
|
// ---------------------------------------------------------------------------
|
|
38849
38959
|
// Getters
|
|
38850
38960
|
// ---------------------------------------------------------------------------
|
|
38961
|
+
isGridSelectionActive() {
|
|
38962
|
+
return this.selection.isListening(this);
|
|
38963
|
+
}
|
|
38851
38964
|
getActiveSheet() {
|
|
38852
38965
|
return this.activeSheet;
|
|
38853
38966
|
}
|
|
@@ -39078,26 +39191,24 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
39078
39191
|
const isBasedBefore = cmd.base < start;
|
|
39079
39192
|
const deltaCol = isBasedBefore && isCol ? thickness : 0;
|
|
39080
39193
|
const deltaRow = isBasedBefore && !isCol ? thickness : 0;
|
|
39081
|
-
|
|
39082
|
-
|
|
39083
|
-
|
|
39084
|
-
|
|
39085
|
-
|
|
39086
|
-
|
|
39087
|
-
|
|
39088
|
-
|
|
39089
|
-
|
|
39090
|
-
|
|
39091
|
-
|
|
39092
|
-
|
|
39093
|
-
|
|
39094
|
-
|
|
39095
|
-
|
|
39096
|
-
|
|
39097
|
-
|
|
39098
|
-
|
|
39099
|
-
],
|
|
39100
|
-
});
|
|
39194
|
+
const target = [
|
|
39195
|
+
{
|
|
39196
|
+
left: isCol ? start + deltaCol : 0,
|
|
39197
|
+
right: isCol ? end + deltaCol : this.getters.getNumberCols(cmd.sheetId) - 1,
|
|
39198
|
+
top: !isCol ? start + deltaRow : 0,
|
|
39199
|
+
bottom: !isCol ? end + deltaRow : this.getters.getNumberRows(cmd.sheetId) - 1,
|
|
39200
|
+
},
|
|
39201
|
+
];
|
|
39202
|
+
const state = new ClipboardCellsState(target, "CUT", this.getters, this.dispatch, this.selection);
|
|
39203
|
+
const pasteTarget = [
|
|
39204
|
+
{
|
|
39205
|
+
left: isCol ? cmd.base : 0,
|
|
39206
|
+
right: isCol ? cmd.base + thickness - 1 : this.getters.getNumberCols(cmd.sheetId) - 1,
|
|
39207
|
+
top: !isCol ? cmd.base : 0,
|
|
39208
|
+
bottom: !isCol ? cmd.base + thickness - 1 : this.getters.getNumberRows(cmd.sheetId) - 1,
|
|
39209
|
+
},
|
|
39210
|
+
];
|
|
39211
|
+
state.paste(pasteTarget, { selectTarget: true });
|
|
39101
39212
|
const toRemove = isBasedBefore ? cmd.elements.map((el) => el + thickness) : cmd.elements;
|
|
39102
39213
|
let currentIndex = cmd.base;
|
|
39103
39214
|
for (const element of toRemove) {
|
|
@@ -39224,6 +39335,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
39224
39335
|
"getSheetPosition",
|
|
39225
39336
|
"isSelected",
|
|
39226
39337
|
"getElementsFromSelection",
|
|
39338
|
+
"isGridSelectionActive",
|
|
39227
39339
|
];
|
|
39228
39340
|
|
|
39229
39341
|
const corePluginRegistry = new Registry()
|
|
@@ -42016,6 +42128,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
42016
42128
|
anchor: { zone, cell: this.anchor.cell },
|
|
42017
42129
|
});
|
|
42018
42130
|
}
|
|
42131
|
+
isListening(owner) {
|
|
42132
|
+
return this.stream.isListening(owner);
|
|
42133
|
+
}
|
|
42019
42134
|
/**
|
|
42020
42135
|
* Process a new anchor selection event. If the new anchor is inside
|
|
42021
42136
|
* the sheet boundaries, the event is pushed to the event stream to
|
|
@@ -44304,9 +44419,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
44304
44419
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
44305
44420
|
|
|
44306
44421
|
|
|
44307
|
-
__info__.version = '16.1.
|
|
44308
|
-
__info__.date = '2023-
|
|
44309
|
-
__info__.hash = '
|
|
44422
|
+
__info__.version = '16.1.23';
|
|
44423
|
+
__info__.date = '2023-10-10T07:27:03.376Z';
|
|
44424
|
+
__info__.hash = '13bfa8f';
|
|
44310
44425
|
|
|
44311
44426
|
|
|
44312
44427
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|