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