@odoo/o-spreadsheet 17.1.11 → 17.1.12
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 +386 -402
- package/dist/o-spreadsheet.d.ts +6 -9
- package/dist/o-spreadsheet.esm.js +386 -402
- package/dist/o-spreadsheet.iife.js +386 -402
- package/dist/o-spreadsheet.iife.min.js +262 -258
- package/dist/o_spreadsheet.xml +4 -4
- 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.1.
|
|
6
|
-
* @date 2024-04-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.1.12
|
|
6
|
+
* @date 2024-04-18T16:45:30.109Z
|
|
7
|
+
* @hash 3e90776
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -2477,6 +2477,15 @@ function matrixMap(matrix, fn) {
|
|
|
2477
2477
|
}
|
|
2478
2478
|
return generateMatrix(matrix.length, matrix[0].length, (col, row) => fn(matrix[col][row]));
|
|
2479
2479
|
}
|
|
2480
|
+
function matrixForEach(matrix, fn) {
|
|
2481
|
+
const numberOfCols = matrix.length;
|
|
2482
|
+
const numberOfRows = matrix[0]?.length ?? 0;
|
|
2483
|
+
for (let col = 0; col < numberOfCols; col++) {
|
|
2484
|
+
for (let row = 0; row < numberOfRows; row++) {
|
|
2485
|
+
fn(matrix[col][row]);
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2488
|
+
}
|
|
2480
2489
|
function transposeMatrix(matrix) {
|
|
2481
2490
|
if (!matrix.length) {
|
|
2482
2491
|
return [];
|
|
@@ -8180,6 +8189,7 @@ class LinkEditor extends owl.Component {
|
|
|
8180
8189
|
this.save();
|
|
8181
8190
|
}
|
|
8182
8191
|
ev.stopPropagation();
|
|
8192
|
+
ev.preventDefault();
|
|
8183
8193
|
break;
|
|
8184
8194
|
case "Escape":
|
|
8185
8195
|
this.cancel();
|
|
@@ -19762,7 +19772,7 @@ class FunctionRegistry extends Registry {
|
|
|
19762
19772
|
}
|
|
19763
19773
|
const descr = addMetaInfoFromArg(addDescr);
|
|
19764
19774
|
validateArguments(descr.args);
|
|
19765
|
-
this.mapping[name] = addErrorHandling(addResultHandling(addInputHandling(descr)), name);
|
|
19775
|
+
this.mapping[name] = addErrorHandling(addResultHandling(addInputHandling(descr), name), name);
|
|
19766
19776
|
super.add(name, descr);
|
|
19767
19777
|
return this;
|
|
19768
19778
|
}
|
|
@@ -19801,9 +19811,7 @@ function handleError(e, functionName) {
|
|
|
19801
19811
|
// so we fallback to a generic error
|
|
19802
19812
|
if (hasStringValue(e) && isEvaluationError(e.value)) {
|
|
19803
19813
|
if (hasStringMessage(e)) {
|
|
19804
|
-
|
|
19805
|
-
e.message = e.message.replace("[[FUNCTION_NAME]]", functionName);
|
|
19806
|
-
}
|
|
19814
|
+
replaceFunctionNamePlaceholder(e, functionName);
|
|
19807
19815
|
}
|
|
19808
19816
|
return e;
|
|
19809
19817
|
}
|
|
@@ -19818,21 +19826,29 @@ function hasStringMessage(obj) {
|
|
|
19818
19826
|
return (obj?.message !== undefined &&
|
|
19819
19827
|
typeof obj.message === "string");
|
|
19820
19828
|
}
|
|
19821
|
-
function addResultHandling(compute) {
|
|
19822
|
-
return function (...args) {
|
|
19829
|
+
function addResultHandling(compute, functionName) {
|
|
19830
|
+
return function computeWithResultHandling(...args) {
|
|
19823
19831
|
const result = compute.apply(this, args);
|
|
19824
19832
|
if (!isMatrix(result)) {
|
|
19825
19833
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
19834
|
+
replaceFunctionNamePlaceholder(result, functionName);
|
|
19826
19835
|
return result;
|
|
19827
19836
|
}
|
|
19828
19837
|
return { value: result };
|
|
19829
19838
|
}
|
|
19830
19839
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
19840
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
19831
19841
|
return result;
|
|
19832
19842
|
}
|
|
19833
19843
|
return matrixMap(result, (row) => ({ value: row }));
|
|
19834
19844
|
};
|
|
19835
19845
|
}
|
|
19846
|
+
function replaceFunctionNamePlaceholder(fPayload, functionName) {
|
|
19847
|
+
// for performance reasons: change in place and only if needed
|
|
19848
|
+
if (fPayload.message?.includes("[[FUNCTION_NAME]]")) {
|
|
19849
|
+
fPayload.message = fPayload.message.replace("[[FUNCTION_NAME]]", functionName);
|
|
19850
|
+
}
|
|
19851
|
+
}
|
|
19836
19852
|
const functionRegistry = new FunctionRegistry();
|
|
19837
19853
|
for (let category of categories) {
|
|
19838
19854
|
const fns = category.functions;
|
|
@@ -20204,6 +20220,332 @@ function interactiveAddFilter(env, sheetId, target) {
|
|
|
20204
20220
|
}
|
|
20205
20221
|
}
|
|
20206
20222
|
|
|
20223
|
+
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
20224
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20225
|
+
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
20226
|
+
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
20227
|
+
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
20228
|
+
env.raiseError(MergeErrorMessage);
|
|
20229
|
+
}
|
|
20230
|
+
}
|
|
20231
|
+
|
|
20232
|
+
const hideCols = {
|
|
20233
|
+
name: HIDE_COLUMNS_NAME,
|
|
20234
|
+
execute: (env) => {
|
|
20235
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20236
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20237
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20238
|
+
dimension: "COL",
|
|
20239
|
+
elements: columns,
|
|
20240
|
+
});
|
|
20241
|
+
},
|
|
20242
|
+
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
20243
|
+
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
20244
|
+
};
|
|
20245
|
+
const unhideCols = {
|
|
20246
|
+
name: _t("Unhide columns"),
|
|
20247
|
+
execute: (env) => {
|
|
20248
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20249
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20250
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20251
|
+
dimension: "COL",
|
|
20252
|
+
elements: columns,
|
|
20253
|
+
});
|
|
20254
|
+
},
|
|
20255
|
+
isVisible: (env) => {
|
|
20256
|
+
const hiddenCols = env.model.getters
|
|
20257
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
20258
|
+
.flat();
|
|
20259
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
20260
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
20261
|
+
},
|
|
20262
|
+
};
|
|
20263
|
+
const unhideAllCols = {
|
|
20264
|
+
name: _t("Unhide all columns"),
|
|
20265
|
+
execute: (env) => {
|
|
20266
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20267
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20268
|
+
sheetId,
|
|
20269
|
+
dimension: "COL",
|
|
20270
|
+
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
20271
|
+
});
|
|
20272
|
+
},
|
|
20273
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20274
|
+
};
|
|
20275
|
+
const hideRows = {
|
|
20276
|
+
name: HIDE_ROWS_NAME,
|
|
20277
|
+
execute: (env) => {
|
|
20278
|
+
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
20279
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20280
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20281
|
+
dimension: "ROW",
|
|
20282
|
+
elements: rows,
|
|
20283
|
+
});
|
|
20284
|
+
},
|
|
20285
|
+
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
20286
|
+
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
20287
|
+
};
|
|
20288
|
+
const unhideRows = {
|
|
20289
|
+
name: _t("Unhide rows"),
|
|
20290
|
+
execute: (env) => {
|
|
20291
|
+
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
20292
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20293
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20294
|
+
dimension: "ROW",
|
|
20295
|
+
elements: columns,
|
|
20296
|
+
});
|
|
20297
|
+
},
|
|
20298
|
+
isVisible: (env) => {
|
|
20299
|
+
const hiddenRows = env.model.getters
|
|
20300
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
20301
|
+
.flat();
|
|
20302
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
20303
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
20304
|
+
},
|
|
20305
|
+
};
|
|
20306
|
+
const unhideAllRows = {
|
|
20307
|
+
name: _t("Unhide all rows"),
|
|
20308
|
+
execute: (env) => {
|
|
20309
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20310
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20311
|
+
sheetId,
|
|
20312
|
+
dimension: "ROW",
|
|
20313
|
+
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
20314
|
+
});
|
|
20315
|
+
},
|
|
20316
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20317
|
+
};
|
|
20318
|
+
const unFreezePane = {
|
|
20319
|
+
name: _t("Unfreeze"),
|
|
20320
|
+
isVisible: (env) => {
|
|
20321
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20322
|
+
return xSplit + ySplit > 0;
|
|
20323
|
+
},
|
|
20324
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20325
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20326
|
+
}),
|
|
20327
|
+
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20328
|
+
};
|
|
20329
|
+
const freezePane = {
|
|
20330
|
+
name: _t("Freeze"),
|
|
20331
|
+
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20332
|
+
};
|
|
20333
|
+
const unFreezeRows = {
|
|
20334
|
+
name: _t("No rows"),
|
|
20335
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20336
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20337
|
+
}),
|
|
20338
|
+
isReadonlyAllowed: true,
|
|
20339
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20340
|
+
};
|
|
20341
|
+
const freezeFirstRow = {
|
|
20342
|
+
name: _t("1 row"),
|
|
20343
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20344
|
+
isReadonlyAllowed: true,
|
|
20345
|
+
};
|
|
20346
|
+
const freezeSecondRow = {
|
|
20347
|
+
name: _t("2 rows"),
|
|
20348
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20349
|
+
isReadonlyAllowed: true,
|
|
20350
|
+
};
|
|
20351
|
+
const freezeCurrentRow = {
|
|
20352
|
+
name: _t("Up to current row"),
|
|
20353
|
+
execute: (env) => {
|
|
20354
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
20355
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20356
|
+
},
|
|
20357
|
+
isReadonlyAllowed: true,
|
|
20358
|
+
};
|
|
20359
|
+
const unFreezeCols = {
|
|
20360
|
+
name: _t("No columns"),
|
|
20361
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20362
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20363
|
+
}),
|
|
20364
|
+
isReadonlyAllowed: true,
|
|
20365
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20366
|
+
};
|
|
20367
|
+
const freezeFirstCol = {
|
|
20368
|
+
name: _t("1 column"),
|
|
20369
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20370
|
+
isReadonlyAllowed: true,
|
|
20371
|
+
};
|
|
20372
|
+
const freezeSecondCol = {
|
|
20373
|
+
name: _t("2 columns"),
|
|
20374
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20375
|
+
isReadonlyAllowed: true,
|
|
20376
|
+
};
|
|
20377
|
+
const freezeCurrentCol = {
|
|
20378
|
+
name: _t("Up to current column"),
|
|
20379
|
+
execute: (env) => {
|
|
20380
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
20381
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20382
|
+
},
|
|
20383
|
+
isReadonlyAllowed: true,
|
|
20384
|
+
};
|
|
20385
|
+
const viewGridlines = {
|
|
20386
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20387
|
+
? _t("Hide gridlines")
|
|
20388
|
+
: _t("Show gridlines"),
|
|
20389
|
+
execute: (env) => {
|
|
20390
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20391
|
+
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20392
|
+
sheetId,
|
|
20393
|
+
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20394
|
+
});
|
|
20395
|
+
},
|
|
20396
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20397
|
+
};
|
|
20398
|
+
const viewFormulas = {
|
|
20399
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20400
|
+
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20401
|
+
isReadonlyAllowed: true,
|
|
20402
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20403
|
+
};
|
|
20404
|
+
const createRemoveFilter = {
|
|
20405
|
+
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20406
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
20407
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20408
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
20409
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20410
|
+
};
|
|
20411
|
+
const groupColumns = {
|
|
20412
|
+
name: (env) => {
|
|
20413
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20414
|
+
if (selection.left === selection.right) {
|
|
20415
|
+
return _t("Group column %s", numberToLetters(selection.left));
|
|
20416
|
+
}
|
|
20417
|
+
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20418
|
+
},
|
|
20419
|
+
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20420
|
+
isVisible: (env) => {
|
|
20421
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20422
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20423
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20424
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20425
|
+
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20426
|
+
},
|
|
20427
|
+
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20428
|
+
};
|
|
20429
|
+
const groupRows = {
|
|
20430
|
+
name: (env) => {
|
|
20431
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20432
|
+
if (selection.top === selection.bottom) {
|
|
20433
|
+
return _t("Group row %s", String(selection.top + 1));
|
|
20434
|
+
}
|
|
20435
|
+
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20436
|
+
},
|
|
20437
|
+
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20438
|
+
isVisible: (env) => {
|
|
20439
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20440
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20441
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20442
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20443
|
+
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20444
|
+
},
|
|
20445
|
+
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20446
|
+
};
|
|
20447
|
+
const ungroupColumns = {
|
|
20448
|
+
name: (env) => {
|
|
20449
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20450
|
+
if (selection.left === selection.right) {
|
|
20451
|
+
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20452
|
+
}
|
|
20453
|
+
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20454
|
+
},
|
|
20455
|
+
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20456
|
+
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20457
|
+
};
|
|
20458
|
+
const ungroupRows = {
|
|
20459
|
+
name: (env) => {
|
|
20460
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20461
|
+
if (selection.top === selection.bottom) {
|
|
20462
|
+
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20463
|
+
}
|
|
20464
|
+
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20465
|
+
},
|
|
20466
|
+
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20467
|
+
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20468
|
+
};
|
|
20469
|
+
function selectionContainsFilter(env) {
|
|
20470
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20471
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
20472
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20473
|
+
}
|
|
20474
|
+
function cannotCreateFilter(env) {
|
|
20475
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20476
|
+
}
|
|
20477
|
+
function createRemoveFilterAction(env) {
|
|
20478
|
+
if (selectionContainsFilter(env)) {
|
|
20479
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20480
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20481
|
+
target: env.model.getters.getSelectedZones(),
|
|
20482
|
+
});
|
|
20483
|
+
return;
|
|
20484
|
+
}
|
|
20485
|
+
if (cannotCreateFilter(env)) {
|
|
20486
|
+
return;
|
|
20487
|
+
}
|
|
20488
|
+
env.model.selection.selectTableAroundSelection();
|
|
20489
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20490
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20491
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
20492
|
+
}
|
|
20493
|
+
function groupHeadersAction(env, dim) {
|
|
20494
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20495
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20496
|
+
env.model.dispatch("GROUP_HEADERS", {
|
|
20497
|
+
sheetId,
|
|
20498
|
+
dimension: dim,
|
|
20499
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20500
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20501
|
+
});
|
|
20502
|
+
}
|
|
20503
|
+
function ungroupHeaders(env, dim) {
|
|
20504
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20505
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20506
|
+
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20507
|
+
sheetId,
|
|
20508
|
+
dimension: dim,
|
|
20509
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20510
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20511
|
+
});
|
|
20512
|
+
}
|
|
20513
|
+
function canUngroupHeaders(env, dimension) {
|
|
20514
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20515
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20516
|
+
return (selection.length === 1 &&
|
|
20517
|
+
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20518
|
+
}
|
|
20519
|
+
|
|
20520
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20521
|
+
__proto__: null,
|
|
20522
|
+
canUngroupHeaders: canUngroupHeaders,
|
|
20523
|
+
createRemoveFilter: createRemoveFilter,
|
|
20524
|
+
createRemoveFilterAction: createRemoveFilterAction,
|
|
20525
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
20526
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
20527
|
+
freezeFirstCol: freezeFirstCol,
|
|
20528
|
+
freezeFirstRow: freezeFirstRow,
|
|
20529
|
+
freezePane: freezePane,
|
|
20530
|
+
freezeSecondCol: freezeSecondCol,
|
|
20531
|
+
freezeSecondRow: freezeSecondRow,
|
|
20532
|
+
groupColumns: groupColumns,
|
|
20533
|
+
groupRows: groupRows,
|
|
20534
|
+
hideCols: hideCols,
|
|
20535
|
+
hideRows: hideRows,
|
|
20536
|
+
unFreezeCols: unFreezeCols,
|
|
20537
|
+
unFreezePane: unFreezePane,
|
|
20538
|
+
unFreezeRows: unFreezeRows,
|
|
20539
|
+
ungroupColumns: ungroupColumns,
|
|
20540
|
+
ungroupRows: ungroupRows,
|
|
20541
|
+
unhideAllCols: unhideAllCols,
|
|
20542
|
+
unhideAllRows: unhideAllRows,
|
|
20543
|
+
unhideCols: unhideCols,
|
|
20544
|
+
unhideRows: unhideRows,
|
|
20545
|
+
viewFormulas: viewFormulas,
|
|
20546
|
+
viewGridlines: viewGridlines
|
|
20547
|
+
});
|
|
20548
|
+
|
|
20207
20549
|
const sortRange = {
|
|
20208
20550
|
name: _t("Sort range"),
|
|
20209
20551
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
@@ -20246,32 +20588,15 @@ const sortDescending = {
|
|
|
20246
20588
|
},
|
|
20247
20589
|
icon: "o-spreadsheet-Icon.SORT_DESCENDING",
|
|
20248
20590
|
};
|
|
20249
|
-
const
|
|
20250
|
-
name: _t("Create filter"),
|
|
20251
|
-
execute: (env) =>
|
|
20252
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20253
|
-
const selection = env.model.getters.getSelection().zones;
|
|
20254
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
20255
|
-
},
|
|
20256
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
20591
|
+
const addRemoveDataFilter = {
|
|
20592
|
+
name: (env) => SELECTION_CONTAINS_FILTER(env) ? _t("Remove filter") : _t("Create filter"),
|
|
20593
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
20257
20594
|
isEnabled: (env) => {
|
|
20258
20595
|
const selectedZones = env.model.getters.getSelectedZones();
|
|
20259
20596
|
return areZonesContinuous(...selectedZones);
|
|
20260
20597
|
},
|
|
20261
20598
|
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
20262
20599
|
};
|
|
20263
|
-
const removeDataFilter = {
|
|
20264
|
-
name: _t("Remove filter"),
|
|
20265
|
-
execute: (env) => {
|
|
20266
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20267
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20268
|
-
sheetId,
|
|
20269
|
-
target: env.model.getters.getSelectedZones(),
|
|
20270
|
-
});
|
|
20271
|
-
},
|
|
20272
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
20273
|
-
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
20274
|
-
};
|
|
20275
20600
|
const splitToColumns = {
|
|
20276
20601
|
name: _t("Split text to columns"),
|
|
20277
20602
|
sequence: 1,
|
|
@@ -20683,331 +21008,6 @@ var ACTION_FORMAT = /*#__PURE__*/Object.freeze({
|
|
|
20683
21008
|
textColor: textColor
|
|
20684
21009
|
});
|
|
20685
21010
|
|
|
20686
|
-
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
20687
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20688
|
-
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
20689
|
-
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
20690
|
-
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
20691
|
-
env.raiseError(MergeErrorMessage);
|
|
20692
|
-
}
|
|
20693
|
-
}
|
|
20694
|
-
|
|
20695
|
-
const hideCols = {
|
|
20696
|
-
name: HIDE_COLUMNS_NAME,
|
|
20697
|
-
execute: (env) => {
|
|
20698
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20699
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20700
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20701
|
-
dimension: "COL",
|
|
20702
|
-
elements: columns,
|
|
20703
|
-
});
|
|
20704
|
-
},
|
|
20705
|
-
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
20706
|
-
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
20707
|
-
};
|
|
20708
|
-
const unhideCols = {
|
|
20709
|
-
name: _t("Unhide columns"),
|
|
20710
|
-
execute: (env) => {
|
|
20711
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20712
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20713
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20714
|
-
dimension: "COL",
|
|
20715
|
-
elements: columns,
|
|
20716
|
-
});
|
|
20717
|
-
},
|
|
20718
|
-
isVisible: (env) => {
|
|
20719
|
-
const hiddenCols = env.model.getters
|
|
20720
|
-
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
20721
|
-
.flat();
|
|
20722
|
-
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
20723
|
-
return currentCols.some((col) => hiddenCols.includes(col));
|
|
20724
|
-
},
|
|
20725
|
-
};
|
|
20726
|
-
const unhideAllCols = {
|
|
20727
|
-
name: _t("Unhide all columns"),
|
|
20728
|
-
execute: (env) => {
|
|
20729
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20730
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20731
|
-
sheetId,
|
|
20732
|
-
dimension: "COL",
|
|
20733
|
-
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
20734
|
-
});
|
|
20735
|
-
},
|
|
20736
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20737
|
-
};
|
|
20738
|
-
const hideRows = {
|
|
20739
|
-
name: HIDE_ROWS_NAME,
|
|
20740
|
-
execute: (env) => {
|
|
20741
|
-
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
20742
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20743
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20744
|
-
dimension: "ROW",
|
|
20745
|
-
elements: rows,
|
|
20746
|
-
});
|
|
20747
|
-
},
|
|
20748
|
-
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
20749
|
-
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
20750
|
-
};
|
|
20751
|
-
const unhideRows = {
|
|
20752
|
-
name: _t("Unhide rows"),
|
|
20753
|
-
execute: (env) => {
|
|
20754
|
-
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
20755
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20756
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20757
|
-
dimension: "ROW",
|
|
20758
|
-
elements: columns,
|
|
20759
|
-
});
|
|
20760
|
-
},
|
|
20761
|
-
isVisible: (env) => {
|
|
20762
|
-
const hiddenRows = env.model.getters
|
|
20763
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
20764
|
-
.flat();
|
|
20765
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
20766
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
20767
|
-
},
|
|
20768
|
-
};
|
|
20769
|
-
const unhideAllRows = {
|
|
20770
|
-
name: _t("Unhide all rows"),
|
|
20771
|
-
execute: (env) => {
|
|
20772
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20773
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20774
|
-
sheetId,
|
|
20775
|
-
dimension: "ROW",
|
|
20776
|
-
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
20777
|
-
});
|
|
20778
|
-
},
|
|
20779
|
-
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20780
|
-
};
|
|
20781
|
-
const unFreezePane = {
|
|
20782
|
-
name: _t("Unfreeze"),
|
|
20783
|
-
isVisible: (env) => {
|
|
20784
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20785
|
-
return xSplit + ySplit > 0;
|
|
20786
|
-
},
|
|
20787
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20788
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20789
|
-
}),
|
|
20790
|
-
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20791
|
-
};
|
|
20792
|
-
const freezePane = {
|
|
20793
|
-
name: _t("Freeze"),
|
|
20794
|
-
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20795
|
-
};
|
|
20796
|
-
const unFreezeRows = {
|
|
20797
|
-
name: _t("No rows"),
|
|
20798
|
-
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20799
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20800
|
-
}),
|
|
20801
|
-
isReadonlyAllowed: true,
|
|
20802
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20803
|
-
};
|
|
20804
|
-
const freezeFirstRow = {
|
|
20805
|
-
name: _t("1 row"),
|
|
20806
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20807
|
-
isReadonlyAllowed: true,
|
|
20808
|
-
};
|
|
20809
|
-
const freezeSecondRow = {
|
|
20810
|
-
name: _t("2 rows"),
|
|
20811
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20812
|
-
isReadonlyAllowed: true,
|
|
20813
|
-
};
|
|
20814
|
-
const freezeCurrentRow = {
|
|
20815
|
-
name: _t("Up to current row"),
|
|
20816
|
-
execute: (env) => {
|
|
20817
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
20818
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20819
|
-
},
|
|
20820
|
-
isReadonlyAllowed: true,
|
|
20821
|
-
};
|
|
20822
|
-
const unFreezeCols = {
|
|
20823
|
-
name: _t("No columns"),
|
|
20824
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20825
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20826
|
-
}),
|
|
20827
|
-
isReadonlyAllowed: true,
|
|
20828
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20829
|
-
};
|
|
20830
|
-
const freezeFirstCol = {
|
|
20831
|
-
name: _t("1 column"),
|
|
20832
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20833
|
-
isReadonlyAllowed: true,
|
|
20834
|
-
};
|
|
20835
|
-
const freezeSecondCol = {
|
|
20836
|
-
name: _t("2 columns"),
|
|
20837
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20838
|
-
isReadonlyAllowed: true,
|
|
20839
|
-
};
|
|
20840
|
-
const freezeCurrentCol = {
|
|
20841
|
-
name: _t("Up to current column"),
|
|
20842
|
-
execute: (env) => {
|
|
20843
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
20844
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20845
|
-
},
|
|
20846
|
-
isReadonlyAllowed: true,
|
|
20847
|
-
};
|
|
20848
|
-
const viewGridlines = {
|
|
20849
|
-
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20850
|
-
? _t("Hide gridlines")
|
|
20851
|
-
: _t("Show gridlines"),
|
|
20852
|
-
execute: (env) => {
|
|
20853
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20854
|
-
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20855
|
-
sheetId,
|
|
20856
|
-
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20857
|
-
});
|
|
20858
|
-
},
|
|
20859
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20860
|
-
};
|
|
20861
|
-
const viewFormulas = {
|
|
20862
|
-
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20863
|
-
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20864
|
-
isReadonlyAllowed: true,
|
|
20865
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20866
|
-
};
|
|
20867
|
-
const createRemoveFilter = {
|
|
20868
|
-
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20869
|
-
isActive: (env) => selectionContainsFilter(env),
|
|
20870
|
-
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20871
|
-
execute: (env) => createRemoveFilterAction(env),
|
|
20872
|
-
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20873
|
-
};
|
|
20874
|
-
const groupColumns = {
|
|
20875
|
-
name: (env) => {
|
|
20876
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20877
|
-
if (selection.left === selection.right) {
|
|
20878
|
-
return _t("Group column %s", numberToLetters(selection.left));
|
|
20879
|
-
}
|
|
20880
|
-
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20881
|
-
},
|
|
20882
|
-
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20883
|
-
isVisible: (env) => {
|
|
20884
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20885
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20886
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20887
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20888
|
-
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20889
|
-
},
|
|
20890
|
-
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20891
|
-
};
|
|
20892
|
-
const groupRows = {
|
|
20893
|
-
name: (env) => {
|
|
20894
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20895
|
-
if (selection.top === selection.bottom) {
|
|
20896
|
-
return _t("Group row %s", String(selection.top + 1));
|
|
20897
|
-
}
|
|
20898
|
-
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20899
|
-
},
|
|
20900
|
-
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20901
|
-
isVisible: (env) => {
|
|
20902
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20903
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20904
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20905
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20906
|
-
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20907
|
-
},
|
|
20908
|
-
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20909
|
-
};
|
|
20910
|
-
const ungroupColumns = {
|
|
20911
|
-
name: (env) => {
|
|
20912
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20913
|
-
if (selection.left === selection.right) {
|
|
20914
|
-
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20915
|
-
}
|
|
20916
|
-
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20917
|
-
},
|
|
20918
|
-
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20919
|
-
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20920
|
-
};
|
|
20921
|
-
const ungroupRows = {
|
|
20922
|
-
name: (env) => {
|
|
20923
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20924
|
-
if (selection.top === selection.bottom) {
|
|
20925
|
-
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20926
|
-
}
|
|
20927
|
-
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20928
|
-
},
|
|
20929
|
-
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20930
|
-
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20931
|
-
};
|
|
20932
|
-
function selectionContainsFilter(env) {
|
|
20933
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20934
|
-
const selectedZones = env.model.getters.getSelectedZones();
|
|
20935
|
-
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20936
|
-
}
|
|
20937
|
-
function cannotCreateFilter(env) {
|
|
20938
|
-
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20939
|
-
}
|
|
20940
|
-
function createRemoveFilterAction(env) {
|
|
20941
|
-
if (selectionContainsFilter(env)) {
|
|
20942
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20943
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20944
|
-
target: env.model.getters.getSelectedZones(),
|
|
20945
|
-
});
|
|
20946
|
-
return;
|
|
20947
|
-
}
|
|
20948
|
-
if (cannotCreateFilter(env)) {
|
|
20949
|
-
return;
|
|
20950
|
-
}
|
|
20951
|
-
env.model.selection.selectTableAroundSelection();
|
|
20952
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20953
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20954
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
20955
|
-
}
|
|
20956
|
-
function groupHeadersAction(env, dim) {
|
|
20957
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20958
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20959
|
-
env.model.dispatch("GROUP_HEADERS", {
|
|
20960
|
-
sheetId,
|
|
20961
|
-
dimension: dim,
|
|
20962
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20963
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20964
|
-
});
|
|
20965
|
-
}
|
|
20966
|
-
function ungroupHeaders(env, dim) {
|
|
20967
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20968
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20969
|
-
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20970
|
-
sheetId,
|
|
20971
|
-
dimension: dim,
|
|
20972
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20973
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20974
|
-
});
|
|
20975
|
-
}
|
|
20976
|
-
function canUngroupHeaders(env, dimension) {
|
|
20977
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20978
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20979
|
-
return (selection.length === 1 &&
|
|
20980
|
-
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20981
|
-
}
|
|
20982
|
-
|
|
20983
|
-
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20984
|
-
__proto__: null,
|
|
20985
|
-
canUngroupHeaders: canUngroupHeaders,
|
|
20986
|
-
createRemoveFilter: createRemoveFilter,
|
|
20987
|
-
freezeCurrentCol: freezeCurrentCol,
|
|
20988
|
-
freezeCurrentRow: freezeCurrentRow,
|
|
20989
|
-
freezeFirstCol: freezeFirstCol,
|
|
20990
|
-
freezeFirstRow: freezeFirstRow,
|
|
20991
|
-
freezePane: freezePane,
|
|
20992
|
-
freezeSecondCol: freezeSecondCol,
|
|
20993
|
-
freezeSecondRow: freezeSecondRow,
|
|
20994
|
-
groupColumns: groupColumns,
|
|
20995
|
-
groupRows: groupRows,
|
|
20996
|
-
hideCols: hideCols,
|
|
20997
|
-
hideRows: hideRows,
|
|
20998
|
-
unFreezeCols: unFreezeCols,
|
|
20999
|
-
unFreezePane: unFreezePane,
|
|
21000
|
-
unFreezeRows: unFreezeRows,
|
|
21001
|
-
ungroupColumns: ungroupColumns,
|
|
21002
|
-
ungroupRows: ungroupRows,
|
|
21003
|
-
unhideAllCols: unhideAllCols,
|
|
21004
|
-
unhideAllRows: unhideAllRows,
|
|
21005
|
-
unhideCols: unhideCols,
|
|
21006
|
-
unhideRows: unhideRows,
|
|
21007
|
-
viewFormulas: viewFormulas,
|
|
21008
|
-
viewGridlines: viewGridlines
|
|
21009
|
-
});
|
|
21010
|
-
|
|
21011
21011
|
const colMenuRegistry = new MenuItemRegistry();
|
|
21012
21012
|
colMenuRegistry
|
|
21013
21013
|
.add("cut", {
|
|
@@ -21654,13 +21654,8 @@ topbarMenuRegistry
|
|
|
21654
21654
|
sequence: 30,
|
|
21655
21655
|
separator: true,
|
|
21656
21656
|
})
|
|
21657
|
-
.addChild("
|
|
21658
|
-
...
|
|
21659
|
-
sequence: 40,
|
|
21660
|
-
separator: true,
|
|
21661
|
-
})
|
|
21662
|
-
.addChild("remove_data_filter", ["data"], {
|
|
21663
|
-
...removeDataFilter,
|
|
21657
|
+
.addChild("add_remove_data_filter", ["data"], {
|
|
21658
|
+
...addRemoveDataFilter,
|
|
21664
21659
|
sequence: 40,
|
|
21665
21660
|
separator: true,
|
|
21666
21661
|
});
|
|
@@ -28345,6 +28340,10 @@ css /*SCSS*/ `
|
|
|
28345
28340
|
height: 0px;
|
|
28346
28341
|
}
|
|
28347
28342
|
}
|
|
28343
|
+
.o-figure-container {
|
|
28344
|
+
-webkit-user-select: none; // safari
|
|
28345
|
+
user-select: none;
|
|
28346
|
+
}
|
|
28348
28347
|
`;
|
|
28349
28348
|
/**
|
|
28350
28349
|
* Each figure ⭐ is positioned inside a container `div` placed and sized
|
|
@@ -49307,7 +49306,7 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
49307
49306
|
"isFilterActive",
|
|
49308
49307
|
];
|
|
49309
49308
|
filterValues = {};
|
|
49310
|
-
hiddenRows =
|
|
49309
|
+
hiddenRows = {};
|
|
49311
49310
|
isEvaluationDirty = false;
|
|
49312
49311
|
allowDispatch(cmd) {
|
|
49313
49312
|
switch (cmd.type) {
|
|
@@ -49350,11 +49349,11 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
49350
49349
|
case "UNFOLD_HEADER_GROUP":
|
|
49351
49350
|
case "FOLD_ALL_HEADER_GROUPS":
|
|
49352
49351
|
case "UNFOLD_ALL_HEADER_GROUPS":
|
|
49353
|
-
this.updateHiddenRows();
|
|
49352
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
49354
49353
|
break;
|
|
49355
49354
|
case "UPDATE_FILTER":
|
|
49356
49355
|
this.updateFilter(cmd);
|
|
49357
|
-
this.updateHiddenRows();
|
|
49356
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
49358
49357
|
break;
|
|
49359
49358
|
case "DUPLICATE_SHEET":
|
|
49360
49359
|
const filterValues = {};
|
|
@@ -49374,15 +49373,14 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
49374
49373
|
}
|
|
49375
49374
|
finalize() {
|
|
49376
49375
|
if (this.isEvaluationDirty) {
|
|
49377
|
-
this.
|
|
49376
|
+
for (const sheetId of this.getters.getSheetIds()) {
|
|
49377
|
+
this.updateHiddenRows(sheetId);
|
|
49378
|
+
}
|
|
49378
49379
|
this.isEvaluationDirty = false;
|
|
49379
49380
|
}
|
|
49380
49381
|
}
|
|
49381
49382
|
isRowFiltered(sheetId, row) {
|
|
49382
|
-
|
|
49383
|
-
return false;
|
|
49384
|
-
}
|
|
49385
|
-
return this.hiddenRows.has(row);
|
|
49383
|
+
return !!this.hiddenRows[sheetId]?.has(row);
|
|
49386
49384
|
}
|
|
49387
49385
|
getCellBorderWithFilterBorder(position) {
|
|
49388
49386
|
const { sheetId, col, row } = position;
|
|
@@ -49433,8 +49431,7 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
49433
49431
|
this.filterValues[sheetId] = {};
|
|
49434
49432
|
this.filterValues[sheetId][id] = hiddenValues;
|
|
49435
49433
|
}
|
|
49436
|
-
updateHiddenRows() {
|
|
49437
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
49434
|
+
updateHiddenRows(sheetId) {
|
|
49438
49435
|
const filters = this.getters
|
|
49439
49436
|
.getFilters(sheetId)
|
|
49440
49437
|
.sort((filter1, filter2) => filter1.zoneWithHeaders.top - filter2.zoneWithHeaders.top);
|
|
@@ -49455,7 +49452,7 @@ class FilterEvaluationPlugin extends UIPlugin {
|
|
|
49455
49452
|
}
|
|
49456
49453
|
}
|
|
49457
49454
|
}
|
|
49458
|
-
this.hiddenRows = hiddenRows;
|
|
49455
|
+
this.hiddenRows[sheetId] = hiddenRows;
|
|
49459
49456
|
}
|
|
49460
49457
|
getCellValueAsString(sheetId, col, row) {
|
|
49461
49458
|
const value = this.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue;
|
|
@@ -50565,13 +50562,14 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
50565
50562
|
}
|
|
50566
50563
|
}
|
|
50567
50564
|
handleEvent(event) {
|
|
50565
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
50568
50566
|
if (event.options.scrollIntoView) {
|
|
50569
50567
|
let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
|
|
50570
50568
|
if (event.mode === "updateAnchor") {
|
|
50571
50569
|
const oldZone = event.previousAnchor.zone;
|
|
50572
50570
|
const newZone = event.anchor.zone;
|
|
50573
50571
|
// altering a zone should not move the viewport in a dimension that wasn't changed
|
|
50574
|
-
const { top, bottom, left, right } = this.
|
|
50572
|
+
const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
|
|
50575
50573
|
if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
|
|
50576
50574
|
col = left > col || col > right ? left : col;
|
|
50577
50575
|
}
|
|
@@ -50579,7 +50577,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
50579
50577
|
row = top > row || row > bottom ? top : row;
|
|
50580
50578
|
}
|
|
50581
50579
|
}
|
|
50582
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
50583
50580
|
col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
|
|
50584
50581
|
row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
|
|
50585
50582
|
if (!this.sheetsWithDirtyViewports.has(sheetId)) {
|
|
@@ -50616,16 +50613,16 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
50616
50613
|
this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
|
|
50617
50614
|
break;
|
|
50618
50615
|
case "SHIFT_VIEWPORT_DOWN":
|
|
50619
|
-
const { top } = this.getActiveMainViewport();
|
|
50620
50616
|
const sheetId = this.getters.getActiveSheetId();
|
|
50621
|
-
const
|
|
50622
|
-
this.
|
|
50617
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50618
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50619
|
+
this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
|
|
50623
50620
|
break;
|
|
50624
50621
|
case "SHIFT_VIEWPORT_UP": {
|
|
50625
|
-
const { top } = this.getActiveMainViewport();
|
|
50626
50622
|
const sheetId = this.getters.getActiveSheetId();
|
|
50627
|
-
const
|
|
50628
|
-
this.
|
|
50623
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50624
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50625
|
+
this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
|
|
50629
50626
|
break;
|
|
50630
50627
|
}
|
|
50631
50628
|
case "REMOVE_FILTER_TABLE":
|
|
@@ -51018,17 +51015,6 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
51018
51015
|
const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
|
|
51019
51016
|
Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
|
|
51020
51017
|
}
|
|
51021
|
-
/**
|
|
51022
|
-
* Clip the vertical offset within the allowed range.
|
|
51023
|
-
* Not above the sheet, nor below the sheet.
|
|
51024
|
-
*/
|
|
51025
|
-
clipOffsetY(offsetY) {
|
|
51026
|
-
const { height } = this.getMainViewportRect();
|
|
51027
|
-
const maxOffset = height - this.sheetViewHeight;
|
|
51028
|
-
offsetY = Math.min(offsetY, maxOffset);
|
|
51029
|
-
offsetY = Math.max(offsetY, 0);
|
|
51030
|
-
return offsetY;
|
|
51031
|
-
}
|
|
51032
51018
|
getViewportOffset(sheetId) {
|
|
51033
51019
|
return {
|
|
51034
51020
|
x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
|
|
@@ -51084,12 +51070,15 @@ class SheetViewPlugin extends UIPlugin {
|
|
|
51084
51070
|
* viewport top.
|
|
51085
51071
|
*/
|
|
51086
51072
|
shiftVertically(offset) {
|
|
51087
|
-
const
|
|
51073
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
51074
|
+
const { top } = this.getMainInternalViewport(sheetId);
|
|
51088
51075
|
const { scrollX } = this.getActiveSheetScrollInfo();
|
|
51089
51076
|
this.setSheetViewOffset(scrollX, offset);
|
|
51090
51077
|
const { anchor } = this.getters.getSelection();
|
|
51091
|
-
|
|
51092
|
-
|
|
51078
|
+
if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
|
|
51079
|
+
const deltaRow = this.getMainInternalViewport(sheetId).top - top;
|
|
51080
|
+
this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
|
|
51081
|
+
}
|
|
51093
51082
|
}
|
|
51094
51083
|
getVisibleFigures() {
|
|
51095
51084
|
const sheetId = this.getters.getActiveSheetId();
|
|
@@ -52020,7 +52009,6 @@ css /* scss */ `
|
|
|
52020
52009
|
cursor: pointer;
|
|
52021
52010
|
}
|
|
52022
52011
|
`;
|
|
52023
|
-
let tKey = 1;
|
|
52024
52012
|
class SpreadsheetDashboard extends owl.Component {
|
|
52025
52013
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
52026
52014
|
static props = {};
|
|
@@ -52099,13 +52087,9 @@ class SpreadsheetDashboard extends owl.Component {
|
|
|
52099
52087
|
coordinates: rect,
|
|
52100
52088
|
position: { col, row },
|
|
52101
52089
|
action,
|
|
52102
|
-
// we can't rely on position only because a row or a column could
|
|
52103
|
-
// be inserted at any time.
|
|
52104
|
-
tKey: `${tKey}-${col}-${row}`,
|
|
52105
52090
|
});
|
|
52106
52091
|
}
|
|
52107
52092
|
}
|
|
52108
|
-
tKey++;
|
|
52109
52093
|
return cells;
|
|
52110
52094
|
}
|
|
52111
52095
|
getClickableAction(position) {
|
|
@@ -57372,6 +57356,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
57372
57356
|
exports.tokenize = tokenize;
|
|
57373
57357
|
|
|
57374
57358
|
|
|
57375
|
-
__info__.version = "17.1.
|
|
57376
|
-
__info__.date = "2024-04-
|
|
57377
|
-
__info__.hash = "
|
|
57359
|
+
__info__.version = "17.1.12";
|
|
57360
|
+
__info__.date = "2024-04-18T16:45:30.109Z";
|
|
57361
|
+
__info__.hash = "3e90776";
|