@odoo/o-spreadsheet 16.0.36 → 16.0.37
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 +80 -35
- package/dist/o-spreadsheet.d.ts +3 -0
- package/dist/o-spreadsheet.esm.js +80 -35
- package/dist/o-spreadsheet.iife.js +80 -35
- package/dist/o-spreadsheet.iife.min.js +242 -242
- package/dist/o_spreadsheet.xml +5 -4
- package/package.json +2 -2
|
@@ -989,7 +989,7 @@
|
|
|
989
989
|
}
|
|
990
990
|
// Generate new Id if the item didn't exist in the dictionary
|
|
991
991
|
const ids = Object.keys(itemsDic);
|
|
992
|
-
const maxId = ids.length === 0 ? 0 :
|
|
992
|
+
const maxId = ids.length === 0 ? 0 : largeMax(ids.map((id) => parseInt(id, 10)));
|
|
993
993
|
itemsDic[maxId + 1] = item;
|
|
994
994
|
return maxId + 1;
|
|
995
995
|
}
|
|
@@ -1135,6 +1135,34 @@
|
|
|
1135
1135
|
return cache.get(args[0]);
|
|
1136
1136
|
},
|
|
1137
1137
|
}[funcName];
|
|
1138
|
+
}
|
|
1139
|
+
/**
|
|
1140
|
+
* Alternative to Math.max that works with large arrays.
|
|
1141
|
+
* Typically useful for arrays bigger than 100k elements.
|
|
1142
|
+
*/
|
|
1143
|
+
function largeMax(array) {
|
|
1144
|
+
let len = array.length;
|
|
1145
|
+
if (len < 100000)
|
|
1146
|
+
return Math.max(...array);
|
|
1147
|
+
let max = -Infinity;
|
|
1148
|
+
while (len--) {
|
|
1149
|
+
max = array[len] > max ? array[len] : max;
|
|
1150
|
+
}
|
|
1151
|
+
return max;
|
|
1152
|
+
}
|
|
1153
|
+
/**
|
|
1154
|
+
* Alternative to Math.min that works with large arrays.
|
|
1155
|
+
* Typically useful for arrays bigger than 100k elements.
|
|
1156
|
+
*/
|
|
1157
|
+
function largeMin(array) {
|
|
1158
|
+
let len = array.length;
|
|
1159
|
+
if (len < 100000)
|
|
1160
|
+
return Math.min(...array);
|
|
1161
|
+
let min = +Infinity;
|
|
1162
|
+
while (len--) {
|
|
1163
|
+
min = array[len] < min ? array[len] : min;
|
|
1164
|
+
}
|
|
1165
|
+
return min;
|
|
1138
1166
|
}
|
|
1139
1167
|
|
|
1140
1168
|
const RBA_REGEX = /rgba?\(|\s+|\)/gi;
|
|
@@ -5097,8 +5125,8 @@
|
|
|
5097
5125
|
let last;
|
|
5098
5126
|
const activesRows = env.model.getters.getActiveRows();
|
|
5099
5127
|
if (activesRows.size !== 0) {
|
|
5100
|
-
first =
|
|
5101
|
-
last =
|
|
5128
|
+
first = largeMin([...activesRows]);
|
|
5129
|
+
last = largeMax([...activesRows]);
|
|
5102
5130
|
}
|
|
5103
5131
|
else {
|
|
5104
5132
|
const zone = env.model.getters.getSelectedZones()[0];
|
|
@@ -5126,8 +5154,8 @@
|
|
|
5126
5154
|
let last;
|
|
5127
5155
|
const activeCols = env.model.getters.getActiveCols();
|
|
5128
5156
|
if (activeCols.size !== 0) {
|
|
5129
|
-
first =
|
|
5130
|
-
last =
|
|
5157
|
+
first = largeMin([...activeCols]);
|
|
5158
|
+
last = largeMax([...activeCols]);
|
|
5131
5159
|
}
|
|
5132
5160
|
else {
|
|
5133
5161
|
const zone = env.model.getters.getSelectedZones()[0];
|
|
@@ -5155,8 +5183,8 @@
|
|
|
5155
5183
|
let last;
|
|
5156
5184
|
const activesRows = env.model.getters.getActiveRows();
|
|
5157
5185
|
if (activesRows.size !== 0) {
|
|
5158
|
-
first =
|
|
5159
|
-
last =
|
|
5186
|
+
first = largeMin([...activesRows]);
|
|
5187
|
+
last = largeMax([...activesRows]);
|
|
5160
5188
|
}
|
|
5161
5189
|
else {
|
|
5162
5190
|
const zone = env.model.getters.getSelectedZones()[0];
|
|
@@ -5197,8 +5225,8 @@
|
|
|
5197
5225
|
let last;
|
|
5198
5226
|
const activeCols = env.model.getters.getActiveCols();
|
|
5199
5227
|
if (activeCols.size !== 0) {
|
|
5200
|
-
first =
|
|
5201
|
-
last =
|
|
5228
|
+
first = largeMin([...activeCols]);
|
|
5229
|
+
last = largeMax([...activeCols]);
|
|
5202
5230
|
}
|
|
5203
5231
|
else {
|
|
5204
5232
|
const zone = env.model.getters.getSelectedZones()[0];
|
|
@@ -5267,7 +5295,7 @@
|
|
|
5267
5295
|
let row;
|
|
5268
5296
|
let quantity;
|
|
5269
5297
|
if (activeRows.size) {
|
|
5270
|
-
row =
|
|
5298
|
+
row = largeMin([...activeRows]);
|
|
5271
5299
|
quantity = activeRows.size;
|
|
5272
5300
|
}
|
|
5273
5301
|
else {
|
|
@@ -5299,7 +5327,7 @@
|
|
|
5299
5327
|
let row;
|
|
5300
5328
|
let quantity;
|
|
5301
5329
|
if (activeRows.size) {
|
|
5302
|
-
row =
|
|
5330
|
+
row = largeMax([...activeRows]);
|
|
5303
5331
|
quantity = activeRows.size;
|
|
5304
5332
|
}
|
|
5305
5333
|
else {
|
|
@@ -5340,7 +5368,7 @@
|
|
|
5340
5368
|
let column;
|
|
5341
5369
|
let quantity;
|
|
5342
5370
|
if (activeCols.size) {
|
|
5343
|
-
column =
|
|
5371
|
+
column = largeMin([...activeCols]);
|
|
5344
5372
|
quantity = activeCols.size;
|
|
5345
5373
|
}
|
|
5346
5374
|
else {
|
|
@@ -5374,7 +5402,7 @@
|
|
|
5374
5402
|
let column;
|
|
5375
5403
|
let quantity;
|
|
5376
5404
|
if (activeCols.size) {
|
|
5377
|
-
column =
|
|
5405
|
+
column = largeMax([...activeCols]);
|
|
5378
5406
|
quantity = activeCols.size;
|
|
5379
5407
|
}
|
|
5380
5408
|
else {
|
|
@@ -7930,7 +7958,7 @@
|
|
|
7930
7958
|
return undefined;
|
|
7931
7959
|
}
|
|
7932
7960
|
const labelsTimestamps = labelDates.map((date) => date.getTime());
|
|
7933
|
-
const period =
|
|
7961
|
+
const period = largeMax(labelsTimestamps) - largeMin(labelsTimestamps);
|
|
7934
7962
|
const minUnit = getFormatMinDisplayUnit(format);
|
|
7935
7963
|
if (UNIT_LENGTH.second >= UNIT_LENGTH[minUnit] && Milliseconds.inSeconds(period) < 180) {
|
|
7936
7964
|
return "second";
|
|
@@ -8346,7 +8374,7 @@
|
|
|
8346
8374
|
}
|
|
8347
8375
|
function getPieColors(colors, dataSetsValues) {
|
|
8348
8376
|
const pieColors = [];
|
|
8349
|
-
const maxLength =
|
|
8377
|
+
const maxLength = largeMax(dataSetsValues.map((ds) => ds.data.length));
|
|
8350
8378
|
for (let i = 0; i <= maxLength; i++) {
|
|
8351
8379
|
pieColors.push(colors.next());
|
|
8352
8380
|
}
|
|
@@ -20636,6 +20664,12 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
20636
20664
|
onCompleted(text) {
|
|
20637
20665
|
text && this.autoComplete(text);
|
|
20638
20666
|
}
|
|
20667
|
+
onContextMenu(ev) {
|
|
20668
|
+
var _a, _b;
|
|
20669
|
+
if (this.env.model.getters.getEditionMode() === "inactive") {
|
|
20670
|
+
(_b = (_a = this.props).onInputContextMenu) === null || _b === void 0 ? void 0 : _b.call(_a, ev);
|
|
20671
|
+
}
|
|
20672
|
+
}
|
|
20639
20673
|
// ---------------------------------------------------------------------------
|
|
20640
20674
|
// Private
|
|
20641
20675
|
// ---------------------------------------------------------------------------
|
|
@@ -20869,6 +20903,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
20869
20903
|
isDefaultFocus: true,
|
|
20870
20904
|
onComposerContentFocused: this.props.onComposerContentFocused,
|
|
20871
20905
|
onComposerCellFocused: this.props.onComposerCellFocused,
|
|
20906
|
+
onInputContextMenu: this.props.onInputContextMenu,
|
|
20872
20907
|
};
|
|
20873
20908
|
}
|
|
20874
20909
|
get containerStyle() {
|
|
@@ -23019,8 +23054,8 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
23019
23054
|
else if (this.env.model.getters.getActiveRows().has(row)) {
|
|
23020
23055
|
type = "ROW";
|
|
23021
23056
|
}
|
|
23022
|
-
const { x, y, width
|
|
23023
|
-
this.toggleContextMenu(type, x + width, y +
|
|
23057
|
+
const { x, y, width } = this.env.model.getters.getVisibleRect(lastZone);
|
|
23058
|
+
this.toggleContextMenu(type, this.canvasPosition.x + x + width, this.canvasPosition.y + y);
|
|
23024
23059
|
}
|
|
23025
23060
|
onCellRightClicked(col, row, { x, y }) {
|
|
23026
23061
|
const zones = this.env.model.getters.getSelectedZones();
|
|
@@ -25186,7 +25221,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
25186
25221
|
function getSheetDims(sheet) {
|
|
25187
25222
|
const dims = [0, 0];
|
|
25188
25223
|
for (let row of sheet.rows) {
|
|
25189
|
-
dims[0] = Math.max(dims[0],
|
|
25224
|
+
dims[0] = Math.max(dims[0], largeMax(row.cells.map((cell) => toCartesian(cell.xc).col)));
|
|
25190
25225
|
dims[1] = Math.max(dims[1], row.index);
|
|
25191
25226
|
}
|
|
25192
25227
|
dims[0] = Math.max(dims[0], EXCEL_IMPORT_DEFAULT_NUMBER_OF_COLS);
|
|
@@ -29223,7 +29258,17 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
29223
29258
|
}
|
|
29224
29259
|
}
|
|
29225
29260
|
exportForExcel(data) {
|
|
29226
|
-
|
|
29261
|
+
for (const sheet of data.sheets) {
|
|
29262
|
+
for (const filterTable of this.getFilterTables(sheet.id)) {
|
|
29263
|
+
if (zoneToDimension(filterTable.zone).height === 1) {
|
|
29264
|
+
continue;
|
|
29265
|
+
}
|
|
29266
|
+
sheet.filterTables.push({
|
|
29267
|
+
range: zoneToXc(filterTable.zone),
|
|
29268
|
+
filters: [],
|
|
29269
|
+
});
|
|
29270
|
+
}
|
|
29271
|
+
}
|
|
29227
29272
|
}
|
|
29228
29273
|
}
|
|
29229
29274
|
FiltersPlugin.getters = [
|
|
@@ -29279,7 +29324,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
29279
29324
|
for (let headerIndex of [...cmd.elements].sort((a, b) => b - a)) {
|
|
29280
29325
|
sizes.splice(headerIndex, 1);
|
|
29281
29326
|
}
|
|
29282
|
-
const min =
|
|
29327
|
+
const min = largeMin(cmd.elements);
|
|
29283
29328
|
sizes = sizes.map((size, row) => {
|
|
29284
29329
|
if (cmd.dimension === "ROW" && row >= min) {
|
|
29285
29330
|
// invalidate sizes
|
|
@@ -29507,7 +29552,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
29507
29552
|
if (hiddenElements.size >= elements) {
|
|
29508
29553
|
return 66 /* CommandResult.TooManyHiddenElements */;
|
|
29509
29554
|
}
|
|
29510
|
-
else if (
|
|
29555
|
+
else if (largeMin(cmd.elements) < 0 || largeMax(cmd.elements) > elements) {
|
|
29511
29556
|
return 86 /* CommandResult.InvalidHeaderIndex */;
|
|
29512
29557
|
}
|
|
29513
29558
|
else {
|
|
@@ -30182,7 +30227,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
30182
30227
|
const elements = cmd.dimension === "COL"
|
|
30183
30228
|
? this.getNumberCols(cmd.sheetId)
|
|
30184
30229
|
: this.getNumberRows(cmd.sheetId);
|
|
30185
|
-
if (
|
|
30230
|
+
if (largeMin(cmd.elements) < 0 || largeMax(cmd.elements) > elements) {
|
|
30186
30231
|
return 86 /* CommandResult.InvalidHeaderIndex */;
|
|
30187
30232
|
}
|
|
30188
30233
|
else if (this.checkElementsIncludeAllNonFrozenHeaders(cmd.sheetId, cmd.dimension, cmd.elements)) {
|
|
@@ -31555,13 +31600,13 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
31555
31600
|
const cells = this.getters.getCellsInZone(sheet.id, zone);
|
|
31556
31601
|
const cellPositions = range(end, -1, -1);
|
|
31557
31602
|
const invalidCells = cellPositions.filter((position) => { var _a; return cells[position] && !((_a = cells[position]) === null || _a === void 0 ? void 0 : _a.isAutoSummable); });
|
|
31558
|
-
const maxValidPosition =
|
|
31603
|
+
const maxValidPosition = largeMax(invalidCells);
|
|
31559
31604
|
const numberSequences = groupConsecutive(cellPositions.filter((position) => this.isNumber(cells[position])));
|
|
31560
31605
|
const firstSequence = numberSequences[0] || [];
|
|
31561
|
-
if (
|
|
31606
|
+
if (largeMax(firstSequence) < maxValidPosition) {
|
|
31562
31607
|
return Infinity;
|
|
31563
31608
|
}
|
|
31564
|
-
return
|
|
31609
|
+
return largeMin(firstSequence);
|
|
31565
31610
|
}
|
|
31566
31611
|
shouldFindData(sheetId, zone) {
|
|
31567
31612
|
return this.getters.isEmpty(sheetId, zone) || this.getters.isSingleCellOrMerge(sheetId, zone);
|
|
@@ -33244,13 +33289,13 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
33244
33289
|
.filter(this.isCellValueNumber);
|
|
33245
33290
|
switch (threshold.type) {
|
|
33246
33291
|
case "value":
|
|
33247
|
-
const result = functionName === "max" ?
|
|
33292
|
+
const result = functionName === "max" ? largeMax(rangeValues) : largeMin(rangeValues);
|
|
33248
33293
|
return result;
|
|
33249
33294
|
case "number":
|
|
33250
33295
|
return Number(threshold.value);
|
|
33251
33296
|
case "percentage":
|
|
33252
|
-
const min =
|
|
33253
|
-
const max =
|
|
33297
|
+
const min = largeMin(rangeValues);
|
|
33298
|
+
const max = largeMax(rangeValues);
|
|
33254
33299
|
const delta = max - min;
|
|
33255
33300
|
return min + (delta * Number(threshold.value)) / 100;
|
|
33256
33301
|
case "percentile":
|
|
@@ -37987,7 +38032,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
37987
38032
|
getColMaxWidth(sheetId, index) {
|
|
37988
38033
|
const cellsPositions = positions(this.getters.getColsZone(sheetId, index, index));
|
|
37989
38034
|
const sizes = cellsPositions.map((position) => this.getCellWidth(sheetId, position));
|
|
37990
|
-
return Math.max(0,
|
|
38035
|
+
return Math.max(0, largeMax(sizes));
|
|
37991
38036
|
}
|
|
37992
38037
|
splitWordToSpecificWidth(ctx, word, width, style) {
|
|
37993
38038
|
const wordWidth = computeTextWidth(ctx, word, style);
|
|
@@ -40338,8 +40383,8 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
40338
40383
|
let newRange = range;
|
|
40339
40384
|
let changeType = "NONE";
|
|
40340
40385
|
for (let group of groups) {
|
|
40341
|
-
const min =
|
|
40342
|
-
const max =
|
|
40386
|
+
const min = largeMin(group);
|
|
40387
|
+
const max = largeMax(group);
|
|
40343
40388
|
if (range.zone[start] <= min && min <= range.zone[end]) {
|
|
40344
40389
|
const toRemove = Math.min(range.zone[end], max) - min + 1;
|
|
40345
40390
|
changeType = "RESIZE";
|
|
@@ -41597,7 +41642,7 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
41597
41642
|
}
|
|
41598
41643
|
function addDoughnutChart(chart, chartSheetIndex, data, { holeSize } = { holeSize: 50 }) {
|
|
41599
41644
|
const colors = new ChartColors();
|
|
41600
|
-
const maxLength =
|
|
41645
|
+
const maxLength = largeMax(chart.dataSets.map((ds) => getRangeSize(ds.range, chartSheetIndex, data)));
|
|
41601
41646
|
const doughnutColors = range(0, maxLength).map(() => toXlsxHexColor(colors.next()));
|
|
41602
41647
|
const dataSetsNodes = [];
|
|
41603
41648
|
for (const [dsIndex, dataset] of Object.entries(chart.dataSets).reverse()) {
|
|
@@ -43294,9 +43339,9 @@ day_count_convention (number, default=${DEFAULT_DAY_COUNT_CONVENTION} ) ${_lt("A
|
|
|
43294
43339
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
43295
43340
|
|
|
43296
43341
|
|
|
43297
|
-
__info__.version = '16.0.
|
|
43298
|
-
__info__.date = '2024-
|
|
43299
|
-
__info__.hash = '
|
|
43342
|
+
__info__.version = '16.0.37';
|
|
43343
|
+
__info__.date = '2024-04-05T13:58:08.848Z';
|
|
43344
|
+
__info__.hash = 'e95827b';
|
|
43300
43345
|
|
|
43301
43346
|
|
|
43302
43347
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|