@odoo/o-spreadsheet 17.4.5 → 17.4.7
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 +166 -82
- package/dist/o-spreadsheet.d.ts +14 -10
- package/dist/o-spreadsheet.esm.js +166 -82
- package/dist/o-spreadsheet.iife.js +166 -82
- package/dist/o-spreadsheet.iife.min.js +332 -321
- package/dist/o_spreadsheet.xml +6 -5
- 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 17.4.
|
|
6
|
-
* @date 2024-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.4.7
|
|
6
|
+
* @date 2024-09-05T09:32:00.461Z
|
|
7
|
+
* @hash c14a4c9
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -241,6 +241,7 @@
|
|
|
241
241
|
bandedRows: true,
|
|
242
242
|
bandedColumns: false,
|
|
243
243
|
styleId: "TableStyleMedium5",
|
|
244
|
+
automaticAutofill: true,
|
|
244
245
|
};
|
|
245
246
|
|
|
246
247
|
//------------------------------------------------------------------------------
|
|
@@ -4559,6 +4560,17 @@
|
|
|
4559
4560
|
}
|
|
4560
4561
|
return zone;
|
|
4561
4562
|
}
|
|
4563
|
+
function aggregatePositionsToZones(positions) {
|
|
4564
|
+
const result = {};
|
|
4565
|
+
for (const position of positions) {
|
|
4566
|
+
result[position.sheetId] ??= [];
|
|
4567
|
+
result[position.sheetId].push(positionToZone(position));
|
|
4568
|
+
}
|
|
4569
|
+
for (const sheetId in result) {
|
|
4570
|
+
result[sheetId] = recomputeZones(result[sheetId]);
|
|
4571
|
+
}
|
|
4572
|
+
return result;
|
|
4573
|
+
}
|
|
4562
4574
|
/**
|
|
4563
4575
|
* This function returns a zone with coordinates modified according to the change
|
|
4564
4576
|
* applied to the zone. It may be possible to change the zone by resizing or moving
|
|
@@ -6774,9 +6786,11 @@
|
|
|
6774
6786
|
const targetCell = this.getters.getEvaluatedCell(target);
|
|
6775
6787
|
const originFormat = origin.cell?.format ?? origin.evaluatedCell.format;
|
|
6776
6788
|
if (clipboardOption?.pasteOption === "asValue") {
|
|
6777
|
-
|
|
6778
|
-
|
|
6779
|
-
|
|
6789
|
+
this.dispatch("UPDATE_CELL", {
|
|
6790
|
+
...target,
|
|
6791
|
+
content: origin.evaluatedCell.value?.toString() || "",
|
|
6792
|
+
format: originFormat,
|
|
6793
|
+
});
|
|
6780
6794
|
return;
|
|
6781
6795
|
}
|
|
6782
6796
|
if (clipboardOption?.pasteOption === "onlyFormat") {
|
|
@@ -28378,8 +28392,26 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28378
28392
|
env.openSidePanel("PivotSidePanel", { pivotId });
|
|
28379
28393
|
}
|
|
28380
28394
|
};
|
|
28381
|
-
const
|
|
28382
|
-
id: `
|
|
28395
|
+
const REINSERT_DYNAMIC_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pivotId, index) => ({
|
|
28396
|
+
id: `reinsert_dynamic_pivot_${env.model.getters.getPivotFormulaId(pivotId)}`,
|
|
28397
|
+
name: env.model.getters.getPivotDisplayName(pivotId),
|
|
28398
|
+
sequence: index,
|
|
28399
|
+
execute: (env) => {
|
|
28400
|
+
const zone = env.model.getters.getSelectedZone();
|
|
28401
|
+
const table = env.model.getters.getPivot(pivotId).getTableStructure().export();
|
|
28402
|
+
env.model.dispatch("INSERT_PIVOT_WITH_TABLE", {
|
|
28403
|
+
pivotId,
|
|
28404
|
+
table,
|
|
28405
|
+
col: zone.left,
|
|
28406
|
+
row: zone.top,
|
|
28407
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
28408
|
+
pivotMode: "dynamic",
|
|
28409
|
+
});
|
|
28410
|
+
env.model.dispatch("REFRESH_PIVOT", { id: pivotId });
|
|
28411
|
+
},
|
|
28412
|
+
}));
|
|
28413
|
+
const REINSERT_STATIC_PIVOT_CHILDREN = (env) => env.model.getters.getPivotIds().map((pivotId, index) => ({
|
|
28414
|
+
id: `reinsert_static_pivot_${env.model.getters.getPivotFormulaId(pivotId)}`,
|
|
28383
28415
|
name: env.model.getters.getPivotDisplayName(pivotId),
|
|
28384
28416
|
sequence: index,
|
|
28385
28417
|
execute: (env) => {
|
|
@@ -28391,6 +28423,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28391
28423
|
col: zone.left,
|
|
28392
28424
|
row: zone.top,
|
|
28393
28425
|
sheetId: env.model.getters.getActiveSheetId(),
|
|
28426
|
+
pivotMode: "static",
|
|
28394
28427
|
});
|
|
28395
28428
|
env.model.dispatch("REFRESH_PIVOT", { id: pivotId });
|
|
28396
28429
|
},
|
|
@@ -29259,12 +29292,20 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29259
29292
|
isEnabled: (env) => env.model.getters.isSingleColSelected(),
|
|
29260
29293
|
icon: "o-spreadsheet-Icon.SPLIT_TEXT",
|
|
29261
29294
|
};
|
|
29262
|
-
const
|
|
29263
|
-
id: "
|
|
29264
|
-
name: _t("Re-insert pivot"),
|
|
29295
|
+
const reinsertDynamicPivotMenu = {
|
|
29296
|
+
id: "reinsert_dynamic_pivot",
|
|
29297
|
+
name: _t("Re-insert dynamic pivot"),
|
|
29298
|
+
sequence: 1020,
|
|
29299
|
+
icon: "o-spreadsheet-Icon.INSERT_PIVOT",
|
|
29300
|
+
children: [REINSERT_DYNAMIC_PIVOT_CHILDREN],
|
|
29301
|
+
isVisible: (env) => env.model.getters.getPivotIds().length > 0,
|
|
29302
|
+
};
|
|
29303
|
+
const reinsertStaticPivotMenu = {
|
|
29304
|
+
id: "reinsert_static_pivot",
|
|
29305
|
+
name: _t("Re-insert static pivot"),
|
|
29265
29306
|
sequence: 1020,
|
|
29266
29307
|
icon: "o-spreadsheet-Icon.INSERT_PIVOT",
|
|
29267
|
-
children: [
|
|
29308
|
+
children: [REINSERT_STATIC_PIVOT_CHILDREN],
|
|
29268
29309
|
isVisible: (env) => env.model.getters.getPivotIds().length > 0,
|
|
29269
29310
|
};
|
|
29270
29311
|
|
|
@@ -29273,7 +29314,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29273
29314
|
createRemoveFilter: createRemoveFilter,
|
|
29274
29315
|
createRemoveFilterTool: createRemoveFilterTool,
|
|
29275
29316
|
dataCleanup: dataCleanup,
|
|
29276
|
-
|
|
29317
|
+
reinsertDynamicPivotMenu: reinsertDynamicPivotMenu,
|
|
29318
|
+
reinsertStaticPivotMenu: reinsertStaticPivotMenu,
|
|
29277
29319
|
removeDuplicates: removeDuplicates,
|
|
29278
29320
|
sortAscending: sortAscending,
|
|
29279
29321
|
sortDescending: sortDescending,
|
|
@@ -30755,7 +30797,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
30755
30797
|
};
|
|
30756
30798
|
});
|
|
30757
30799
|
})
|
|
30758
|
-
.addChild("
|
|
30800
|
+
.addChild("reinsert_dynamic_pivot", ["data"], reinsertDynamicPivotMenu)
|
|
30801
|
+
.addChild("reinsert_static_pivot", ["data"], reinsertStaticPivotMenu);
|
|
30759
30802
|
|
|
30760
30803
|
class OTRegistry extends Registry {
|
|
30761
30804
|
/**
|
|
@@ -35172,7 +35215,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35172
35215
|
searchScope: "activeSheet",
|
|
35173
35216
|
specificRange: undefined,
|
|
35174
35217
|
};
|
|
35175
|
-
updateSearchContent = debounce(this._updateSearchContent.bind(this), 200);
|
|
35176
35218
|
constructor(get) {
|
|
35177
35219
|
super(get);
|
|
35178
35220
|
this.initialShowFormulaState = this.model.getters.shouldShowFormulas();
|
|
@@ -35181,7 +35223,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35181
35223
|
highlightStore.register(this);
|
|
35182
35224
|
this.onDispose(() => {
|
|
35183
35225
|
this.model.dispatch("SET_FORMULA_VISIBILITY", { show: this.initialShowFormulaState });
|
|
35184
|
-
this.updateSearchContent.stopDebounce();
|
|
35185
35226
|
highlightStore.unRegister(this);
|
|
35186
35227
|
});
|
|
35187
35228
|
}
|
|
@@ -35195,7 +35236,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35195
35236
|
return this.specificRangeMatches;
|
|
35196
35237
|
}
|
|
35197
35238
|
}
|
|
35198
|
-
|
|
35239
|
+
updateSearchContent(toSearch) {
|
|
35199
35240
|
this._updateSearch(toSearch, this.searchOptions);
|
|
35200
35241
|
}
|
|
35201
35242
|
updateSearchOptions(searchOptions) {
|
|
@@ -35211,9 +35252,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35211
35252
|
selectNextMatch() {
|
|
35212
35253
|
this.selectNextCell(Direction.next);
|
|
35213
35254
|
}
|
|
35214
|
-
get pendingSearch() {
|
|
35215
|
-
return this.updateSearchContent.isDebouncePending();
|
|
35216
|
-
}
|
|
35217
35255
|
handle(cmd) {
|
|
35218
35256
|
switch (cmd.type) {
|
|
35219
35257
|
case "SET_FORMULA_VISIBILITY":
|
|
@@ -35539,6 +35577,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35539
35577
|
searchInput = owl.useRef("searchInput");
|
|
35540
35578
|
store;
|
|
35541
35579
|
state;
|
|
35580
|
+
updateSearchContent;
|
|
35542
35581
|
get hasSearchResult() {
|
|
35543
35582
|
return this.store.selectedMatchIndex !== null;
|
|
35544
35583
|
}
|
|
@@ -35570,12 +35609,14 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35570
35609
|
this.store = useLocalStore(FindAndReplaceStore);
|
|
35571
35610
|
this.state = owl.useState({ dataRange: "" });
|
|
35572
35611
|
owl.onMounted(() => this.searchInput.el?.focus());
|
|
35612
|
+
owl.onWillUnmount(() => this.updateSearchContent.stopDebounce());
|
|
35613
|
+
this.updateSearchContent = debounce(this.store.updateSearchContent, 200);
|
|
35573
35614
|
}
|
|
35574
35615
|
onFocusSearch() {
|
|
35575
35616
|
this.updateDataRange();
|
|
35576
35617
|
}
|
|
35577
35618
|
onSearchInput(ev) {
|
|
35578
|
-
this.
|
|
35619
|
+
this.updateSearchContent(ev.target.value);
|
|
35579
35620
|
}
|
|
35580
35621
|
onKeydownSearch(ev) {
|
|
35581
35622
|
if (ev.key === "Enter") {
|
|
@@ -35614,6 +35655,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
35614
35655
|
const specificRange = this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(), this.state.dataRange);
|
|
35615
35656
|
this.store.updateSearchOptions({ specificRange });
|
|
35616
35657
|
}
|
|
35658
|
+
get pendingSearch() {
|
|
35659
|
+
return this.updateSearchContent.isDebouncePending();
|
|
35660
|
+
}
|
|
35617
35661
|
}
|
|
35618
35662
|
|
|
35619
35663
|
css /* scss */ `
|
|
@@ -36667,6 +36711,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
36667
36711
|
* Used to order two values
|
|
36668
36712
|
*/
|
|
36669
36713
|
function compareDimensionValues(dimension, a, b) {
|
|
36714
|
+
if (a === "null") {
|
|
36715
|
+
return dimension.order === "asc" ? 1 : -1;
|
|
36716
|
+
}
|
|
36717
|
+
if (b === "null") {
|
|
36718
|
+
return dimension.order === "asc" ? -1 : 1;
|
|
36719
|
+
}
|
|
36670
36720
|
if (dimension.type === "integer" || dimension.type === "date") {
|
|
36671
36721
|
return dimension.order === "asc" ? Number(a) - Number(b) : Number(b) - Number(a);
|
|
36672
36722
|
}
|
|
@@ -37029,7 +37079,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
37029
37079
|
if (cell.type === CellValueType.error) {
|
|
37030
37080
|
throw new EvaluationError(_t("The pivot cannot be created because cell %s contains an error", toXC(col, row)));
|
|
37031
37081
|
}
|
|
37032
|
-
if (cell.type === CellValueType.empty) {
|
|
37082
|
+
if (cell.type === CellValueType.empty || cell.value === "") {
|
|
37033
37083
|
throw new EvaluationError(_t("The pivot cannot be created because cell %s is empty", toXC(col, row)));
|
|
37034
37084
|
}
|
|
37035
37085
|
if (cell.value === "__count") {
|
|
@@ -37375,15 +37425,11 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
37375
37425
|
}
|
|
37376
37426
|
onSelectionConfirmed() {
|
|
37377
37427
|
if (this.state.range) {
|
|
37378
|
-
const
|
|
37379
|
-
|
|
37380
|
-
? this.env.model.getters.getSheetIdByName(sheetName)
|
|
37381
|
-
: this.env.model.getters.getActiveSheetId();
|
|
37382
|
-
if (!sheetId) {
|
|
37428
|
+
const range = this.env.model.getters.getRangeFromSheetXC(this.env.model.getters.getActiveSheetId(), this.state.range);
|
|
37429
|
+
if (range.invalidSheetName || range.invalidXc) {
|
|
37383
37430
|
return;
|
|
37384
37431
|
}
|
|
37385
|
-
const
|
|
37386
|
-
const dataSet = { sheetId, zone };
|
|
37432
|
+
const dataSet = { sheetId: range.sheetId, zone: range.zone };
|
|
37387
37433
|
this.store.update({ dataSet });
|
|
37388
37434
|
// Immediately apply the update to recompute the pivot fields
|
|
37389
37435
|
this.store.applyUpdate();
|
|
@@ -38316,10 +38362,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
38316
38362
|
});
|
|
38317
38363
|
}
|
|
38318
38364
|
onRangeChanged(ranges) {
|
|
38319
|
-
if (!ranges[0] || !ranges[0].match(rangeReference)) {
|
|
38320
|
-
this.state.tableZoneErrors = ["InvalidRange" /* CommandResult.InvalidRange */];
|
|
38321
|
-
return;
|
|
38322
|
-
}
|
|
38323
38365
|
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
38324
38366
|
this.state.tableXc = ranges[0];
|
|
38325
38367
|
const newTableRange = this.env.model.getters.getRangeFromSheetXC(sheetId, this.state.tableXc);
|
|
@@ -38359,11 +38401,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
38359
38401
|
const newTableRange = updatedTable.range;
|
|
38360
38402
|
this.state.tableXc = this.env.model.getters.getRangeString(newTableRange, sheetId);
|
|
38361
38403
|
}
|
|
38362
|
-
else {
|
|
38363
|
-
const oldTableRange = this.props.table.range;
|
|
38364
|
-
this.state.tableXc = this.env.model.getters.getRangeString(oldTableRange, sheetId);
|
|
38365
|
-
}
|
|
38366
|
-
this.state.tableZoneErrors = [];
|
|
38367
38404
|
}
|
|
38368
38405
|
deleteTable() {
|
|
38369
38406
|
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
@@ -44071,6 +44108,18 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44071
44108
|
// -------------------------------------
|
|
44072
44109
|
// WORKSHEET HELPERS
|
|
44073
44110
|
// -------------------------------------
|
|
44111
|
+
function getCellType(value) {
|
|
44112
|
+
switch (typeof value) {
|
|
44113
|
+
case "boolean":
|
|
44114
|
+
return "b";
|
|
44115
|
+
case "string":
|
|
44116
|
+
return "str";
|
|
44117
|
+
case "number":
|
|
44118
|
+
return "n";
|
|
44119
|
+
default:
|
|
44120
|
+
return undefined;
|
|
44121
|
+
}
|
|
44122
|
+
}
|
|
44074
44123
|
function convertHeightToExcel(height) {
|
|
44075
44124
|
return Math.round(HEIGHT_FACTOR * height * 100) / 100;
|
|
44076
44125
|
}
|
|
@@ -49250,7 +49299,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
49250
49299
|
handle(cmd) {
|
|
49251
49300
|
switch (cmd.type) {
|
|
49252
49301
|
case "CREATE_SHEET": {
|
|
49253
|
-
this.history.update("sizes", cmd.sheetId, {
|
|
49302
|
+
this.history.update("sizes", cmd.sheetId, {
|
|
49303
|
+
COL: Array(this.getters.getNumberCols(cmd.sheetId)).fill(undefined),
|
|
49304
|
+
ROW: Array(this.getters.getNumberRows(cmd.sheetId)).fill(undefined),
|
|
49305
|
+
});
|
|
49254
49306
|
break;
|
|
49255
49307
|
}
|
|
49256
49308
|
case "DUPLICATE_SHEET":
|
|
@@ -54318,8 +54370,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
54318
54370
|
}
|
|
54319
54371
|
getCellsDependingOn(positions) {
|
|
54320
54372
|
const ranges = [];
|
|
54321
|
-
|
|
54322
|
-
|
|
54373
|
+
const zonesBySheetIds = aggregatePositionsToZones(positions);
|
|
54374
|
+
for (const sheetId in zonesBySheetIds) {
|
|
54375
|
+
ranges.push(...zonesBySheetIds[sheetId].map((zone) => ({ sheetId, zone })));
|
|
54323
54376
|
}
|
|
54324
54377
|
return this.formulaDependencies().getCellsDependingOn(ranges);
|
|
54325
54378
|
}
|
|
@@ -55794,10 +55847,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55794
55847
|
this.setupPivot(cmd.pivotId, { recreate: true });
|
|
55795
55848
|
break;
|
|
55796
55849
|
}
|
|
55797
|
-
case "REMOVE_PIVOT": {
|
|
55798
|
-
delete this.pivots[cmd.pivotId];
|
|
55799
|
-
break;
|
|
55800
|
-
}
|
|
55801
55850
|
case "DELETE_SHEET":
|
|
55802
55851
|
case "UPDATE_CELL": {
|
|
55803
55852
|
this.unusedPivots = undefined;
|
|
@@ -55939,6 +55988,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55939
55988
|
}
|
|
55940
55989
|
}
|
|
55941
55990
|
getPivot(pivotId) {
|
|
55991
|
+
if (!this.getters.isExistingPivot(pivotId)) {
|
|
55992
|
+
throw new Error(`pivot ${pivotId} not found`);
|
|
55993
|
+
}
|
|
55942
55994
|
return this.pivots[pivotId];
|
|
55943
55995
|
}
|
|
55944
55996
|
isPivotUnused(pivotId) {
|
|
@@ -57230,9 +57282,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57230
57282
|
/**
|
|
57231
57283
|
* Notify the server that the user client left the collaborative session
|
|
57232
57284
|
*/
|
|
57233
|
-
leave(data) {
|
|
57285
|
+
async leave(data) {
|
|
57234
57286
|
if (Object.keys(this.clients).length === 1 && this.processedRevisions.size) {
|
|
57235
|
-
this.snapshot(data());
|
|
57287
|
+
await this.snapshot(data());
|
|
57236
57288
|
}
|
|
57237
57289
|
delete this.clients[this.clientId];
|
|
57238
57290
|
this.transportService.leave(this.clientId);
|
|
@@ -57245,12 +57297,12 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57245
57297
|
/**
|
|
57246
57298
|
* Send a snapshot of the spreadsheet to the collaboration server
|
|
57247
57299
|
*/
|
|
57248
|
-
snapshot(data) {
|
|
57300
|
+
async snapshot(data) {
|
|
57249
57301
|
if (this.pendingMessages.length !== 0) {
|
|
57250
57302
|
return;
|
|
57251
57303
|
}
|
|
57252
57304
|
const snapshotId = this.uuidGenerator.uuidv4();
|
|
57253
|
-
this.transportService.sendMessage({
|
|
57305
|
+
await this.transportService.sendMessage({
|
|
57254
57306
|
type: "SNAPSHOT",
|
|
57255
57307
|
nextRevisionId: snapshotId,
|
|
57256
57308
|
serverRevisionId: this.serverRevisionId,
|
|
@@ -57934,7 +57986,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57934
57986
|
this.duplicatePivotInNewSheet(cmd.pivotId, cmd.newPivotId, cmd.newSheetId);
|
|
57935
57987
|
break;
|
|
57936
57988
|
case "INSERT_PIVOT_WITH_TABLE":
|
|
57937
|
-
this.insertPivotWithTable(cmd.sheetId, cmd.col, cmd.row, cmd.pivotId, cmd.table);
|
|
57989
|
+
this.insertPivotWithTable(cmd.sheetId, cmd.col, cmd.row, cmd.pivotId, cmd.table, cmd.pivotMode);
|
|
57938
57990
|
break;
|
|
57939
57991
|
}
|
|
57940
57992
|
}
|
|
@@ -58010,26 +58062,44 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
58010
58062
|
}
|
|
58011
58063
|
return name;
|
|
58012
58064
|
}
|
|
58013
|
-
insertPivotWithTable(sheetId, col, row, pivotId, table) {
|
|
58065
|
+
insertPivotWithTable(sheetId, col, row, pivotId, table, mode) {
|
|
58014
58066
|
const { cols, rows, measures, fieldsType } = table;
|
|
58015
58067
|
const pivotTable = new SpreadsheetPivotTable(cols, rows, measures, fieldsType || {});
|
|
58068
|
+
const numberOfHeaders = pivotTable.columns.length - 1;
|
|
58016
58069
|
this.resizeSheet(sheetId, col, row, pivotTable);
|
|
58017
58070
|
const pivotFormulaId = this.getters.getPivotFormulaId(pivotId);
|
|
58018
|
-
|
|
58019
|
-
|
|
58020
|
-
|
|
58021
|
-
|
|
58022
|
-
|
|
58023
|
-
|
|
58024
|
-
|
|
58025
|
-
|
|
58026
|
-
|
|
58027
|
-
|
|
58028
|
-
|
|
58029
|
-
|
|
58030
|
-
|
|
58071
|
+
let zone;
|
|
58072
|
+
if (mode === "dynamic") {
|
|
58073
|
+
this.dispatch("UPDATE_CELL", {
|
|
58074
|
+
sheetId,
|
|
58075
|
+
col,
|
|
58076
|
+
row,
|
|
58077
|
+
content: `=PIVOT(${pivotFormulaId})`,
|
|
58078
|
+
});
|
|
58079
|
+
zone = {
|
|
58080
|
+
left: col,
|
|
58081
|
+
right: col,
|
|
58082
|
+
top: row,
|
|
58083
|
+
bottom: row,
|
|
58084
|
+
};
|
|
58085
|
+
}
|
|
58086
|
+
else {
|
|
58087
|
+
this.dispatch("INSERT_PIVOT", {
|
|
58088
|
+
sheetId,
|
|
58089
|
+
col,
|
|
58090
|
+
row,
|
|
58091
|
+
pivotId,
|
|
58092
|
+
table: pivotTable.export(),
|
|
58093
|
+
});
|
|
58094
|
+
zone = {
|
|
58095
|
+
left: col,
|
|
58096
|
+
right: col + pivotTable.getNumberOfDataColumns(),
|
|
58097
|
+
top: row,
|
|
58098
|
+
bottom: row + numberOfHeaders + pivotTable.rows.length,
|
|
58099
|
+
};
|
|
58100
|
+
}
|
|
58031
58101
|
this.dispatch("CREATE_TABLE", {
|
|
58032
|
-
tableType:
|
|
58102
|
+
tableType: mode,
|
|
58033
58103
|
sheetId,
|
|
58034
58104
|
ranges: [this.getters.getRangeDataFromZone(sheetId, zone)],
|
|
58035
58105
|
config: { ...PIVOT_TABLE_CONFIG, numberOfHeaders },
|
|
@@ -59410,6 +59480,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59410
59480
|
this.status = "invisible";
|
|
59411
59481
|
if (this._isCutOperation) {
|
|
59412
59482
|
this.copiedData = undefined;
|
|
59483
|
+
this._isCutOperation = false;
|
|
59413
59484
|
}
|
|
59414
59485
|
break;
|
|
59415
59486
|
}
|
|
@@ -59507,6 +59578,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59507
59578
|
}
|
|
59508
59579
|
case "ACTIVATE_PAINT_FORMAT": {
|
|
59509
59580
|
const zones = this.getters.getSelectedZones();
|
|
59581
|
+
this._isCutOperation = false;
|
|
59510
59582
|
this.copiedData = this.copy(zones);
|
|
59511
59583
|
this.status = "visible";
|
|
59512
59584
|
if (cmd.persistent) {
|
|
@@ -60229,6 +60301,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60229
60301
|
this.selectedFigureId = null;
|
|
60230
60302
|
break;
|
|
60231
60303
|
}
|
|
60304
|
+
}
|
|
60305
|
+
finalize() {
|
|
60232
60306
|
/** Any change to the selection has to be reflected in the selection processor. */
|
|
60233
60307
|
this.selection.resetDefaultAnchor(this, deepCopy(this.gridSelection.anchor));
|
|
60234
60308
|
}
|
|
@@ -61010,7 +61084,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61010
61084
|
}
|
|
61011
61085
|
}
|
|
61012
61086
|
handle(cmd) {
|
|
61013
|
-
this.cleanViewports();
|
|
61014
61087
|
// changing the evaluation can hide/show rows because of data filters
|
|
61015
61088
|
if (invalidateEvaluationCommands.has(cmd.type)) {
|
|
61016
61089
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
@@ -61026,6 +61099,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61026
61099
|
break;
|
|
61027
61100
|
case "UNDO":
|
|
61028
61101
|
case "REDO":
|
|
61102
|
+
this.cleanViewports();
|
|
61029
61103
|
for (const sheetId of this.getters.getSheetIds()) {
|
|
61030
61104
|
this.sheetsWithDirtyViewports.add(sheetId);
|
|
61031
61105
|
}
|
|
@@ -61080,6 +61154,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61080
61154
|
}
|
|
61081
61155
|
}
|
|
61082
61156
|
break;
|
|
61157
|
+
case "DELETE_SHEET":
|
|
61158
|
+
this.cleanViewports();
|
|
61159
|
+
break;
|
|
61083
61160
|
case "ACTIVATE_SHEET":
|
|
61084
61161
|
this.sheetsWithDirtyViewports.add(cmd.sheetIdTo);
|
|
61085
61162
|
break;
|
|
@@ -62367,6 +62444,17 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
62367
62444
|
.o-bottom-bar-fade-in {
|
|
62368
62445
|
background-image: linear-gradient(90deg, #cfcfcf, transparent 1%);
|
|
62369
62446
|
}
|
|
62447
|
+
|
|
62448
|
+
.o-sheet-list {
|
|
62449
|
+
overflow-y: hidden;
|
|
62450
|
+
overflow-x: auto;
|
|
62451
|
+
|
|
62452
|
+
&::-webkit-scrollbar {
|
|
62453
|
+
display: none; /* Chrome */
|
|
62454
|
+
}
|
|
62455
|
+
-ms-overflow-style: none; /* IE and Edge */
|
|
62456
|
+
scrollbar-width: none; /* Firefox */
|
|
62457
|
+
}
|
|
62370
62458
|
}
|
|
62371
62459
|
|
|
62372
62460
|
.o-bottom-bar-arrows {
|
|
@@ -64340,7 +64428,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
64340
64428
|
|
|
64341
64429
|
class LocalTransportService {
|
|
64342
64430
|
listeners = [];
|
|
64343
|
-
sendMessage(message) {
|
|
64431
|
+
async sendMessage(message) {
|
|
64344
64432
|
for (const { callback } of this.listeners) {
|
|
64345
64433
|
callback(message);
|
|
64346
64434
|
}
|
|
@@ -66433,17 +66521,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
66433
66521
|
if (!formula) {
|
|
66434
66522
|
return { attrs: [], node: escapeXml `` };
|
|
66435
66523
|
}
|
|
66436
|
-
const
|
|
66437
|
-
|
|
66438
|
-
|
|
66439
|
-
const XlsxFormula = adaptFormulaToExcel(formula);
|
|
66440
|
-
// hack for cycles : if we don't set a value (be it 0 or #VALUE!), it will appear as invisible on excel,
|
|
66441
|
-
// Making it very hard for the client to find where the recursion is.
|
|
66442
|
-
if (cell.value === CellErrorType.CircularDependency) {
|
|
66443
|
-
attrs.push(["t", "str"]);
|
|
66444
|
-
cycle = escapeXml /*xml*/ `<v>${cell.value}</v>`;
|
|
66524
|
+
const type = getCellType(cell.value);
|
|
66525
|
+
if (type === undefined) {
|
|
66526
|
+
return { attrs: [], node: escapeXml `` };
|
|
66445
66527
|
}
|
|
66446
|
-
|
|
66528
|
+
const attrs = [["t", type]];
|
|
66529
|
+
const XlsxFormula = adaptFormulaToExcel(formula);
|
|
66530
|
+
const node = escapeXml /*xml*/ `<f>${XlsxFormula}</f><v>${cell.value}</v>`;
|
|
66447
66531
|
return { attrs, node };
|
|
66448
66532
|
}
|
|
66449
66533
|
function addContent(content, sharedStrings, forceString = false) {
|
|
@@ -67857,8 +67941,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
67857
67941
|
joinSession() {
|
|
67858
67942
|
this.session.join(this.config.client);
|
|
67859
67943
|
}
|
|
67860
|
-
leaveSession() {
|
|
67861
|
-
this.session.leave(lazy(() => this.exportData()));
|
|
67944
|
+
async leaveSession() {
|
|
67945
|
+
await this.session.leave(lazy(() => this.exportData()));
|
|
67862
67946
|
}
|
|
67863
67947
|
setupUiPlugin(Plugin) {
|
|
67864
67948
|
const plugin = new Plugin(this.uiPluginConfig);
|
|
@@ -68460,9 +68544,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68460
68544
|
exports.tokenize = tokenize;
|
|
68461
68545
|
|
|
68462
68546
|
|
|
68463
|
-
__info__.version = "17.4.
|
|
68464
|
-
__info__.date = "2024-
|
|
68465
|
-
__info__.hash = "
|
|
68547
|
+
__info__.version = "17.4.7";
|
|
68548
|
+
__info__.date = "2024-09-05T09:32:00.461Z";
|
|
68549
|
+
__info__.hash = "c14a4c9";
|
|
68466
68550
|
|
|
68467
68551
|
|
|
68468
68552
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|