@odoo/o-spreadsheet 17.1.10 → 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 +455 -456
- package/dist/o-spreadsheet.d.ts +14 -9
- package/dist/o-spreadsheet.esm.js +455 -456
- package/dist/o-spreadsheet.iife.js +455 -456
- package/dist/o-spreadsheet.iife.min.js +255 -251
- package/dist/o_spreadsheet.xml +6 -5
- package/package.json +1 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 17.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
|
(function (exports, owl) {
|
|
@@ -550,7 +550,7 @@
|
|
|
550
550
|
if (typeof o1 !== typeof o2)
|
|
551
551
|
return false;
|
|
552
552
|
if (typeof o1 !== "object")
|
|
553
|
-
return
|
|
553
|
+
return false;
|
|
554
554
|
// Objects can have different keys if the values are undefined
|
|
555
555
|
for (const key in o2) {
|
|
556
556
|
if (!(key in o1) && o2[key] !== undefined) {
|
|
@@ -2476,6 +2476,15 @@
|
|
|
2476
2476
|
}
|
|
2477
2477
|
return generateMatrix(matrix.length, matrix[0].length, (col, row) => fn(matrix[col][row]));
|
|
2478
2478
|
}
|
|
2479
|
+
function matrixForEach(matrix, fn) {
|
|
2480
|
+
const numberOfCols = matrix.length;
|
|
2481
|
+
const numberOfRows = matrix[0]?.length ?? 0;
|
|
2482
|
+
for (let col = 0; col < numberOfCols; col++) {
|
|
2483
|
+
for (let row = 0; row < numberOfRows; row++) {
|
|
2484
|
+
fn(matrix[col][row]);
|
|
2485
|
+
}
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2479
2488
|
function transposeMatrix(matrix) {
|
|
2480
2489
|
if (!matrix.length) {
|
|
2481
2490
|
return [];
|
|
@@ -8179,6 +8188,7 @@
|
|
|
8179
8188
|
this.save();
|
|
8180
8189
|
}
|
|
8181
8190
|
ev.stopPropagation();
|
|
8191
|
+
ev.preventDefault();
|
|
8182
8192
|
break;
|
|
8183
8193
|
case "Escape":
|
|
8184
8194
|
this.cancel();
|
|
@@ -8464,7 +8474,7 @@
|
|
|
8464
8474
|
const xLabel = tooltipItem.dataset?.label || tooltipItem.label;
|
|
8465
8475
|
// tooltipItem.parsed.y can be an object or a number for pie charts
|
|
8466
8476
|
const yLabel = tooltipItem.parsed.y ?? tooltipItem.parsed;
|
|
8467
|
-
const toolTipFormat = !format && yLabel
|
|
8477
|
+
const toolTipFormat = !format && Math.abs(yLabel) >= 1000 ? "#,##" : format;
|
|
8468
8478
|
const yLabelStr = formatValue(yLabel, { format: toolTipFormat, locale });
|
|
8469
8479
|
return xLabel ? `${xLabel}: ${yLabelStr}` : yLabelStr;
|
|
8470
8480
|
},
|
|
@@ -8751,7 +8761,10 @@
|
|
|
8751
8761
|
if (isNaN(value))
|
|
8752
8762
|
return value;
|
|
8753
8763
|
const { locale, format } = localeFormat;
|
|
8754
|
-
return formatValue(value, {
|
|
8764
|
+
return formatValue(value, {
|
|
8765
|
+
locale,
|
|
8766
|
+
format: !format && Math.abs(value) >= 1000 ? "#,##" : format,
|
|
8767
|
+
});
|
|
8755
8768
|
},
|
|
8756
8769
|
},
|
|
8757
8770
|
},
|
|
@@ -9402,7 +9415,10 @@
|
|
|
9402
9415
|
if (isNaN(value))
|
|
9403
9416
|
return value;
|
|
9404
9417
|
const { locale, format } = localeFormat;
|
|
9405
|
-
return formatValue(value, {
|
|
9418
|
+
return formatValue(value, {
|
|
9419
|
+
locale,
|
|
9420
|
+
format: !format && Math.abs(value) >= 1000 ? "#,##" : format,
|
|
9421
|
+
});
|
|
9406
9422
|
},
|
|
9407
9423
|
},
|
|
9408
9424
|
},
|
|
@@ -9629,7 +9645,7 @@
|
|
|
9629
9645
|
const percentage = calculatePercentage(data, dataIndex);
|
|
9630
9646
|
const xLabel = tooltipItem.label || tooltipItem.dataset.label;
|
|
9631
9647
|
const yLabel = tooltipItem.parsed.y ?? tooltipItem.parsed;
|
|
9632
|
-
const toolTipFormat = !format && yLabel
|
|
9648
|
+
const toolTipFormat = !format && yLabel >= 1000 ? "#,##" : format;
|
|
9633
9649
|
const yLabelStr = formatValue(yLabel, { format: toolTipFormat, locale });
|
|
9634
9650
|
return xLabel ? `${xLabel}: ${yLabelStr} (${percentage}%)` : `${yLabelStr} (${percentage}%)`;
|
|
9635
9651
|
};
|
|
@@ -19755,7 +19771,7 @@
|
|
|
19755
19771
|
}
|
|
19756
19772
|
const descr = addMetaInfoFromArg(addDescr);
|
|
19757
19773
|
validateArguments(descr.args);
|
|
19758
|
-
this.mapping[name] = addErrorHandling(addResultHandling(addInputHandling(descr)), name);
|
|
19774
|
+
this.mapping[name] = addErrorHandling(addResultHandling(addInputHandling(descr), name), name);
|
|
19759
19775
|
super.add(name, descr);
|
|
19760
19776
|
return this;
|
|
19761
19777
|
}
|
|
@@ -19794,9 +19810,7 @@
|
|
|
19794
19810
|
// so we fallback to a generic error
|
|
19795
19811
|
if (hasStringValue(e) && isEvaluationError(e.value)) {
|
|
19796
19812
|
if (hasStringMessage(e)) {
|
|
19797
|
-
|
|
19798
|
-
e.message = e.message.replace("[[FUNCTION_NAME]]", functionName);
|
|
19799
|
-
}
|
|
19813
|
+
replaceFunctionNamePlaceholder(e, functionName);
|
|
19800
19814
|
}
|
|
19801
19815
|
return e;
|
|
19802
19816
|
}
|
|
@@ -19811,21 +19825,29 @@
|
|
|
19811
19825
|
return (obj?.message !== undefined &&
|
|
19812
19826
|
typeof obj.message === "string");
|
|
19813
19827
|
}
|
|
19814
|
-
function addResultHandling(compute) {
|
|
19815
|
-
return function (...args) {
|
|
19828
|
+
function addResultHandling(compute, functionName) {
|
|
19829
|
+
return function computeWithResultHandling(...args) {
|
|
19816
19830
|
const result = compute.apply(this, args);
|
|
19817
19831
|
if (!isMatrix(result)) {
|
|
19818
19832
|
if (typeof result === "object" && result !== null && "value" in result) {
|
|
19833
|
+
replaceFunctionNamePlaceholder(result, functionName);
|
|
19819
19834
|
return result;
|
|
19820
19835
|
}
|
|
19821
19836
|
return { value: result };
|
|
19822
19837
|
}
|
|
19823
19838
|
if (typeof result[0][0] === "object" && result[0][0] !== null && "value" in result[0][0]) {
|
|
19839
|
+
matrixForEach(result, (result) => replaceFunctionNamePlaceholder(result, functionName));
|
|
19824
19840
|
return result;
|
|
19825
19841
|
}
|
|
19826
19842
|
return matrixMap(result, (row) => ({ value: row }));
|
|
19827
19843
|
};
|
|
19828
19844
|
}
|
|
19845
|
+
function replaceFunctionNamePlaceholder(fPayload, functionName) {
|
|
19846
|
+
// for performance reasons: change in place and only if needed
|
|
19847
|
+
if (fPayload.message?.includes("[[FUNCTION_NAME]]")) {
|
|
19848
|
+
fPayload.message = fPayload.message.replace("[[FUNCTION_NAME]]", functionName);
|
|
19849
|
+
}
|
|
19850
|
+
}
|
|
19829
19851
|
const functionRegistry = new FunctionRegistry();
|
|
19830
19852
|
for (let category of categories) {
|
|
19831
19853
|
const fns = category.functions;
|
|
@@ -20197,6 +20219,332 @@
|
|
|
20197
20219
|
}
|
|
20198
20220
|
}
|
|
20199
20221
|
|
|
20222
|
+
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
20223
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20224
|
+
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
20225
|
+
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
20226
|
+
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
20227
|
+
env.raiseError(MergeErrorMessage);
|
|
20228
|
+
}
|
|
20229
|
+
}
|
|
20230
|
+
|
|
20231
|
+
const hideCols = {
|
|
20232
|
+
name: HIDE_COLUMNS_NAME,
|
|
20233
|
+
execute: (env) => {
|
|
20234
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20235
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20236
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20237
|
+
dimension: "COL",
|
|
20238
|
+
elements: columns,
|
|
20239
|
+
});
|
|
20240
|
+
},
|
|
20241
|
+
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
20242
|
+
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
20243
|
+
};
|
|
20244
|
+
const unhideCols = {
|
|
20245
|
+
name: _t("Unhide columns"),
|
|
20246
|
+
execute: (env) => {
|
|
20247
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20248
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20249
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20250
|
+
dimension: "COL",
|
|
20251
|
+
elements: columns,
|
|
20252
|
+
});
|
|
20253
|
+
},
|
|
20254
|
+
isVisible: (env) => {
|
|
20255
|
+
const hiddenCols = env.model.getters
|
|
20256
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
20257
|
+
.flat();
|
|
20258
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
20259
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
20260
|
+
},
|
|
20261
|
+
};
|
|
20262
|
+
const unhideAllCols = {
|
|
20263
|
+
name: _t("Unhide all columns"),
|
|
20264
|
+
execute: (env) => {
|
|
20265
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20266
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20267
|
+
sheetId,
|
|
20268
|
+
dimension: "COL",
|
|
20269
|
+
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
20270
|
+
});
|
|
20271
|
+
},
|
|
20272
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20273
|
+
};
|
|
20274
|
+
const hideRows = {
|
|
20275
|
+
name: HIDE_ROWS_NAME,
|
|
20276
|
+
execute: (env) => {
|
|
20277
|
+
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
20278
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20279
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20280
|
+
dimension: "ROW",
|
|
20281
|
+
elements: rows,
|
|
20282
|
+
});
|
|
20283
|
+
},
|
|
20284
|
+
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
20285
|
+
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
20286
|
+
};
|
|
20287
|
+
const unhideRows = {
|
|
20288
|
+
name: _t("Unhide rows"),
|
|
20289
|
+
execute: (env) => {
|
|
20290
|
+
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
20291
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20292
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20293
|
+
dimension: "ROW",
|
|
20294
|
+
elements: columns,
|
|
20295
|
+
});
|
|
20296
|
+
},
|
|
20297
|
+
isVisible: (env) => {
|
|
20298
|
+
const hiddenRows = env.model.getters
|
|
20299
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
20300
|
+
.flat();
|
|
20301
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
20302
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
20303
|
+
},
|
|
20304
|
+
};
|
|
20305
|
+
const unhideAllRows = {
|
|
20306
|
+
name: _t("Unhide all rows"),
|
|
20307
|
+
execute: (env) => {
|
|
20308
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20309
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20310
|
+
sheetId,
|
|
20311
|
+
dimension: "ROW",
|
|
20312
|
+
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
20313
|
+
});
|
|
20314
|
+
},
|
|
20315
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20316
|
+
};
|
|
20317
|
+
const unFreezePane = {
|
|
20318
|
+
name: _t("Unfreeze"),
|
|
20319
|
+
isVisible: (env) => {
|
|
20320
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20321
|
+
return xSplit + ySplit > 0;
|
|
20322
|
+
},
|
|
20323
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20324
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20325
|
+
}),
|
|
20326
|
+
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20327
|
+
};
|
|
20328
|
+
const freezePane = {
|
|
20329
|
+
name: _t("Freeze"),
|
|
20330
|
+
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20331
|
+
};
|
|
20332
|
+
const unFreezeRows = {
|
|
20333
|
+
name: _t("No rows"),
|
|
20334
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20335
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20336
|
+
}),
|
|
20337
|
+
isReadonlyAllowed: true,
|
|
20338
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20339
|
+
};
|
|
20340
|
+
const freezeFirstRow = {
|
|
20341
|
+
name: _t("1 row"),
|
|
20342
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20343
|
+
isReadonlyAllowed: true,
|
|
20344
|
+
};
|
|
20345
|
+
const freezeSecondRow = {
|
|
20346
|
+
name: _t("2 rows"),
|
|
20347
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20348
|
+
isReadonlyAllowed: true,
|
|
20349
|
+
};
|
|
20350
|
+
const freezeCurrentRow = {
|
|
20351
|
+
name: _t("Up to current row"),
|
|
20352
|
+
execute: (env) => {
|
|
20353
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
20354
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20355
|
+
},
|
|
20356
|
+
isReadonlyAllowed: true,
|
|
20357
|
+
};
|
|
20358
|
+
const unFreezeCols = {
|
|
20359
|
+
name: _t("No columns"),
|
|
20360
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20361
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20362
|
+
}),
|
|
20363
|
+
isReadonlyAllowed: true,
|
|
20364
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20365
|
+
};
|
|
20366
|
+
const freezeFirstCol = {
|
|
20367
|
+
name: _t("1 column"),
|
|
20368
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20369
|
+
isReadonlyAllowed: true,
|
|
20370
|
+
};
|
|
20371
|
+
const freezeSecondCol = {
|
|
20372
|
+
name: _t("2 columns"),
|
|
20373
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20374
|
+
isReadonlyAllowed: true,
|
|
20375
|
+
};
|
|
20376
|
+
const freezeCurrentCol = {
|
|
20377
|
+
name: _t("Up to current column"),
|
|
20378
|
+
execute: (env) => {
|
|
20379
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
20380
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20381
|
+
},
|
|
20382
|
+
isReadonlyAllowed: true,
|
|
20383
|
+
};
|
|
20384
|
+
const viewGridlines = {
|
|
20385
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20386
|
+
? _t("Hide gridlines")
|
|
20387
|
+
: _t("Show gridlines"),
|
|
20388
|
+
execute: (env) => {
|
|
20389
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20390
|
+
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20391
|
+
sheetId,
|
|
20392
|
+
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20393
|
+
});
|
|
20394
|
+
},
|
|
20395
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20396
|
+
};
|
|
20397
|
+
const viewFormulas = {
|
|
20398
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20399
|
+
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20400
|
+
isReadonlyAllowed: true,
|
|
20401
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20402
|
+
};
|
|
20403
|
+
const createRemoveFilter = {
|
|
20404
|
+
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20405
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
20406
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20407
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
20408
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20409
|
+
};
|
|
20410
|
+
const groupColumns = {
|
|
20411
|
+
name: (env) => {
|
|
20412
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20413
|
+
if (selection.left === selection.right) {
|
|
20414
|
+
return _t("Group column %s", numberToLetters(selection.left));
|
|
20415
|
+
}
|
|
20416
|
+
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20417
|
+
},
|
|
20418
|
+
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20419
|
+
isVisible: (env) => {
|
|
20420
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20421
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20422
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20423
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20424
|
+
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20425
|
+
},
|
|
20426
|
+
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20427
|
+
};
|
|
20428
|
+
const groupRows = {
|
|
20429
|
+
name: (env) => {
|
|
20430
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20431
|
+
if (selection.top === selection.bottom) {
|
|
20432
|
+
return _t("Group row %s", String(selection.top + 1));
|
|
20433
|
+
}
|
|
20434
|
+
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20435
|
+
},
|
|
20436
|
+
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20437
|
+
isVisible: (env) => {
|
|
20438
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20439
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20440
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20441
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20442
|
+
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20443
|
+
},
|
|
20444
|
+
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20445
|
+
};
|
|
20446
|
+
const ungroupColumns = {
|
|
20447
|
+
name: (env) => {
|
|
20448
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20449
|
+
if (selection.left === selection.right) {
|
|
20450
|
+
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20451
|
+
}
|
|
20452
|
+
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20453
|
+
},
|
|
20454
|
+
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20455
|
+
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20456
|
+
};
|
|
20457
|
+
const ungroupRows = {
|
|
20458
|
+
name: (env) => {
|
|
20459
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20460
|
+
if (selection.top === selection.bottom) {
|
|
20461
|
+
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20462
|
+
}
|
|
20463
|
+
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20464
|
+
},
|
|
20465
|
+
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20466
|
+
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20467
|
+
};
|
|
20468
|
+
function selectionContainsFilter(env) {
|
|
20469
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20470
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
20471
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20472
|
+
}
|
|
20473
|
+
function cannotCreateFilter(env) {
|
|
20474
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20475
|
+
}
|
|
20476
|
+
function createRemoveFilterAction(env) {
|
|
20477
|
+
if (selectionContainsFilter(env)) {
|
|
20478
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20479
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20480
|
+
target: env.model.getters.getSelectedZones(),
|
|
20481
|
+
});
|
|
20482
|
+
return;
|
|
20483
|
+
}
|
|
20484
|
+
if (cannotCreateFilter(env)) {
|
|
20485
|
+
return;
|
|
20486
|
+
}
|
|
20487
|
+
env.model.selection.selectTableAroundSelection();
|
|
20488
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20489
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20490
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
20491
|
+
}
|
|
20492
|
+
function groupHeadersAction(env, dim) {
|
|
20493
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20494
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20495
|
+
env.model.dispatch("GROUP_HEADERS", {
|
|
20496
|
+
sheetId,
|
|
20497
|
+
dimension: dim,
|
|
20498
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20499
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20500
|
+
});
|
|
20501
|
+
}
|
|
20502
|
+
function ungroupHeaders(env, dim) {
|
|
20503
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20504
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20505
|
+
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20506
|
+
sheetId,
|
|
20507
|
+
dimension: dim,
|
|
20508
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20509
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20510
|
+
});
|
|
20511
|
+
}
|
|
20512
|
+
function canUngroupHeaders(env, dimension) {
|
|
20513
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20514
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20515
|
+
return (selection.length === 1 &&
|
|
20516
|
+
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20517
|
+
}
|
|
20518
|
+
|
|
20519
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20520
|
+
__proto__: null,
|
|
20521
|
+
canUngroupHeaders: canUngroupHeaders,
|
|
20522
|
+
createRemoveFilter: createRemoveFilter,
|
|
20523
|
+
createRemoveFilterAction: createRemoveFilterAction,
|
|
20524
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
20525
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
20526
|
+
freezeFirstCol: freezeFirstCol,
|
|
20527
|
+
freezeFirstRow: freezeFirstRow,
|
|
20528
|
+
freezePane: freezePane,
|
|
20529
|
+
freezeSecondCol: freezeSecondCol,
|
|
20530
|
+
freezeSecondRow: freezeSecondRow,
|
|
20531
|
+
groupColumns: groupColumns,
|
|
20532
|
+
groupRows: groupRows,
|
|
20533
|
+
hideCols: hideCols,
|
|
20534
|
+
hideRows: hideRows,
|
|
20535
|
+
unFreezeCols: unFreezeCols,
|
|
20536
|
+
unFreezePane: unFreezePane,
|
|
20537
|
+
unFreezeRows: unFreezeRows,
|
|
20538
|
+
ungroupColumns: ungroupColumns,
|
|
20539
|
+
ungroupRows: ungroupRows,
|
|
20540
|
+
unhideAllCols: unhideAllCols,
|
|
20541
|
+
unhideAllRows: unhideAllRows,
|
|
20542
|
+
unhideCols: unhideCols,
|
|
20543
|
+
unhideRows: unhideRows,
|
|
20544
|
+
viewFormulas: viewFormulas,
|
|
20545
|
+
viewGridlines: viewGridlines
|
|
20546
|
+
});
|
|
20547
|
+
|
|
20200
20548
|
const sortRange = {
|
|
20201
20549
|
name: _t("Sort range"),
|
|
20202
20550
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
@@ -20239,32 +20587,15 @@
|
|
|
20239
20587
|
},
|
|
20240
20588
|
icon: "o-spreadsheet-Icon.SORT_DESCENDING",
|
|
20241
20589
|
};
|
|
20242
|
-
const
|
|
20243
|
-
name: _t("Create filter"),
|
|
20244
|
-
execute: (env) =>
|
|
20245
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20246
|
-
const selection = env.model.getters.getSelection().zones;
|
|
20247
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
20248
|
-
},
|
|
20249
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
20590
|
+
const addRemoveDataFilter = {
|
|
20591
|
+
name: (env) => SELECTION_CONTAINS_FILTER(env) ? _t("Remove filter") : _t("Create filter"),
|
|
20592
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
20250
20593
|
isEnabled: (env) => {
|
|
20251
20594
|
const selectedZones = env.model.getters.getSelectedZones();
|
|
20252
20595
|
return areZonesContinuous(...selectedZones);
|
|
20253
20596
|
},
|
|
20254
20597
|
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
20255
20598
|
};
|
|
20256
|
-
const removeDataFilter = {
|
|
20257
|
-
name: _t("Remove filter"),
|
|
20258
|
-
execute: (env) => {
|
|
20259
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20260
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20261
|
-
sheetId,
|
|
20262
|
-
target: env.model.getters.getSelectedZones(),
|
|
20263
|
-
});
|
|
20264
|
-
},
|
|
20265
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
20266
|
-
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
20267
|
-
};
|
|
20268
20599
|
const splitToColumns = {
|
|
20269
20600
|
name: _t("Split text to columns"),
|
|
20270
20601
|
sequence: 1,
|
|
@@ -20676,331 +21007,6 @@
|
|
|
20676
21007
|
textColor: textColor
|
|
20677
21008
|
});
|
|
20678
21009
|
|
|
20679
|
-
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
20680
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20681
|
-
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
20682
|
-
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
20683
|
-
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
20684
|
-
env.raiseError(MergeErrorMessage);
|
|
20685
|
-
}
|
|
20686
|
-
}
|
|
20687
|
-
|
|
20688
|
-
const hideCols = {
|
|
20689
|
-
name: HIDE_COLUMNS_NAME,
|
|
20690
|
-
execute: (env) => {
|
|
20691
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20692
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20693
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20694
|
-
dimension: "COL",
|
|
20695
|
-
elements: columns,
|
|
20696
|
-
});
|
|
20697
|
-
},
|
|
20698
|
-
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
20699
|
-
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
20700
|
-
};
|
|
20701
|
-
const unhideCols = {
|
|
20702
|
-
name: _t("Unhide columns"),
|
|
20703
|
-
execute: (env) => {
|
|
20704
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20705
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20706
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20707
|
-
dimension: "COL",
|
|
20708
|
-
elements: columns,
|
|
20709
|
-
});
|
|
20710
|
-
},
|
|
20711
|
-
isVisible: (env) => {
|
|
20712
|
-
const hiddenCols = env.model.getters
|
|
20713
|
-
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
20714
|
-
.flat();
|
|
20715
|
-
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
20716
|
-
return currentCols.some((col) => hiddenCols.includes(col));
|
|
20717
|
-
},
|
|
20718
|
-
};
|
|
20719
|
-
const unhideAllCols = {
|
|
20720
|
-
name: _t("Unhide all columns"),
|
|
20721
|
-
execute: (env) => {
|
|
20722
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20723
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20724
|
-
sheetId,
|
|
20725
|
-
dimension: "COL",
|
|
20726
|
-
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
20727
|
-
});
|
|
20728
|
-
},
|
|
20729
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20730
|
-
};
|
|
20731
|
-
const hideRows = {
|
|
20732
|
-
name: HIDE_ROWS_NAME,
|
|
20733
|
-
execute: (env) => {
|
|
20734
|
-
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
20735
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20736
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20737
|
-
dimension: "ROW",
|
|
20738
|
-
elements: rows,
|
|
20739
|
-
});
|
|
20740
|
-
},
|
|
20741
|
-
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
20742
|
-
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
20743
|
-
};
|
|
20744
|
-
const unhideRows = {
|
|
20745
|
-
name: _t("Unhide rows"),
|
|
20746
|
-
execute: (env) => {
|
|
20747
|
-
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
20748
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20749
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20750
|
-
dimension: "ROW",
|
|
20751
|
-
elements: columns,
|
|
20752
|
-
});
|
|
20753
|
-
},
|
|
20754
|
-
isVisible: (env) => {
|
|
20755
|
-
const hiddenRows = env.model.getters
|
|
20756
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
20757
|
-
.flat();
|
|
20758
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
20759
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
20760
|
-
},
|
|
20761
|
-
};
|
|
20762
|
-
const unhideAllRows = {
|
|
20763
|
-
name: _t("Unhide all rows"),
|
|
20764
|
-
execute: (env) => {
|
|
20765
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20766
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20767
|
-
sheetId,
|
|
20768
|
-
dimension: "ROW",
|
|
20769
|
-
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
20770
|
-
});
|
|
20771
|
-
},
|
|
20772
|
-
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20773
|
-
};
|
|
20774
|
-
const unFreezePane = {
|
|
20775
|
-
name: _t("Unfreeze"),
|
|
20776
|
-
isVisible: (env) => {
|
|
20777
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20778
|
-
return xSplit + ySplit > 0;
|
|
20779
|
-
},
|
|
20780
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20781
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20782
|
-
}),
|
|
20783
|
-
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20784
|
-
};
|
|
20785
|
-
const freezePane = {
|
|
20786
|
-
name: _t("Freeze"),
|
|
20787
|
-
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20788
|
-
};
|
|
20789
|
-
const unFreezeRows = {
|
|
20790
|
-
name: _t("No rows"),
|
|
20791
|
-
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20792
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20793
|
-
}),
|
|
20794
|
-
isReadonlyAllowed: true,
|
|
20795
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20796
|
-
};
|
|
20797
|
-
const freezeFirstRow = {
|
|
20798
|
-
name: _t("1 row"),
|
|
20799
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20800
|
-
isReadonlyAllowed: true,
|
|
20801
|
-
};
|
|
20802
|
-
const freezeSecondRow = {
|
|
20803
|
-
name: _t("2 rows"),
|
|
20804
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20805
|
-
isReadonlyAllowed: true,
|
|
20806
|
-
};
|
|
20807
|
-
const freezeCurrentRow = {
|
|
20808
|
-
name: _t("Up to current row"),
|
|
20809
|
-
execute: (env) => {
|
|
20810
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
20811
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20812
|
-
},
|
|
20813
|
-
isReadonlyAllowed: true,
|
|
20814
|
-
};
|
|
20815
|
-
const unFreezeCols = {
|
|
20816
|
-
name: _t("No columns"),
|
|
20817
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20818
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20819
|
-
}),
|
|
20820
|
-
isReadonlyAllowed: true,
|
|
20821
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20822
|
-
};
|
|
20823
|
-
const freezeFirstCol = {
|
|
20824
|
-
name: _t("1 column"),
|
|
20825
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20826
|
-
isReadonlyAllowed: true,
|
|
20827
|
-
};
|
|
20828
|
-
const freezeSecondCol = {
|
|
20829
|
-
name: _t("2 columns"),
|
|
20830
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20831
|
-
isReadonlyAllowed: true,
|
|
20832
|
-
};
|
|
20833
|
-
const freezeCurrentCol = {
|
|
20834
|
-
name: _t("Up to current column"),
|
|
20835
|
-
execute: (env) => {
|
|
20836
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
20837
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20838
|
-
},
|
|
20839
|
-
isReadonlyAllowed: true,
|
|
20840
|
-
};
|
|
20841
|
-
const viewGridlines = {
|
|
20842
|
-
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20843
|
-
? _t("Hide gridlines")
|
|
20844
|
-
: _t("Show gridlines"),
|
|
20845
|
-
execute: (env) => {
|
|
20846
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20847
|
-
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20848
|
-
sheetId,
|
|
20849
|
-
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20850
|
-
});
|
|
20851
|
-
},
|
|
20852
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20853
|
-
};
|
|
20854
|
-
const viewFormulas = {
|
|
20855
|
-
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20856
|
-
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20857
|
-
isReadonlyAllowed: true,
|
|
20858
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20859
|
-
};
|
|
20860
|
-
const createRemoveFilter = {
|
|
20861
|
-
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20862
|
-
isActive: (env) => selectionContainsFilter(env),
|
|
20863
|
-
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20864
|
-
execute: (env) => createRemoveFilterAction(env),
|
|
20865
|
-
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20866
|
-
};
|
|
20867
|
-
const groupColumns = {
|
|
20868
|
-
name: (env) => {
|
|
20869
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20870
|
-
if (selection.left === selection.right) {
|
|
20871
|
-
return _t("Group column %s", numberToLetters(selection.left));
|
|
20872
|
-
}
|
|
20873
|
-
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20874
|
-
},
|
|
20875
|
-
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20876
|
-
isVisible: (env) => {
|
|
20877
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20878
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20879
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20880
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20881
|
-
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20882
|
-
},
|
|
20883
|
-
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20884
|
-
};
|
|
20885
|
-
const groupRows = {
|
|
20886
|
-
name: (env) => {
|
|
20887
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20888
|
-
if (selection.top === selection.bottom) {
|
|
20889
|
-
return _t("Group row %s", String(selection.top + 1));
|
|
20890
|
-
}
|
|
20891
|
-
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20892
|
-
},
|
|
20893
|
-
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20894
|
-
isVisible: (env) => {
|
|
20895
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20896
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20897
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20898
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20899
|
-
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20900
|
-
},
|
|
20901
|
-
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20902
|
-
};
|
|
20903
|
-
const ungroupColumns = {
|
|
20904
|
-
name: (env) => {
|
|
20905
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20906
|
-
if (selection.left === selection.right) {
|
|
20907
|
-
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20908
|
-
}
|
|
20909
|
-
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20910
|
-
},
|
|
20911
|
-
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20912
|
-
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20913
|
-
};
|
|
20914
|
-
const ungroupRows = {
|
|
20915
|
-
name: (env) => {
|
|
20916
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20917
|
-
if (selection.top === selection.bottom) {
|
|
20918
|
-
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20919
|
-
}
|
|
20920
|
-
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20921
|
-
},
|
|
20922
|
-
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20923
|
-
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20924
|
-
};
|
|
20925
|
-
function selectionContainsFilter(env) {
|
|
20926
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20927
|
-
const selectedZones = env.model.getters.getSelectedZones();
|
|
20928
|
-
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20929
|
-
}
|
|
20930
|
-
function cannotCreateFilter(env) {
|
|
20931
|
-
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20932
|
-
}
|
|
20933
|
-
function createRemoveFilterAction(env) {
|
|
20934
|
-
if (selectionContainsFilter(env)) {
|
|
20935
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20936
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20937
|
-
target: env.model.getters.getSelectedZones(),
|
|
20938
|
-
});
|
|
20939
|
-
return;
|
|
20940
|
-
}
|
|
20941
|
-
if (cannotCreateFilter(env)) {
|
|
20942
|
-
return;
|
|
20943
|
-
}
|
|
20944
|
-
env.model.selection.selectTableAroundSelection();
|
|
20945
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20946
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20947
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
20948
|
-
}
|
|
20949
|
-
function groupHeadersAction(env, dim) {
|
|
20950
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20951
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20952
|
-
env.model.dispatch("GROUP_HEADERS", {
|
|
20953
|
-
sheetId,
|
|
20954
|
-
dimension: dim,
|
|
20955
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20956
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20957
|
-
});
|
|
20958
|
-
}
|
|
20959
|
-
function ungroupHeaders(env, dim) {
|
|
20960
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20961
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20962
|
-
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20963
|
-
sheetId,
|
|
20964
|
-
dimension: dim,
|
|
20965
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20966
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20967
|
-
});
|
|
20968
|
-
}
|
|
20969
|
-
function canUngroupHeaders(env, dimension) {
|
|
20970
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20971
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20972
|
-
return (selection.length === 1 &&
|
|
20973
|
-
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20974
|
-
}
|
|
20975
|
-
|
|
20976
|
-
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20977
|
-
__proto__: null,
|
|
20978
|
-
canUngroupHeaders: canUngroupHeaders,
|
|
20979
|
-
createRemoveFilter: createRemoveFilter,
|
|
20980
|
-
freezeCurrentCol: freezeCurrentCol,
|
|
20981
|
-
freezeCurrentRow: freezeCurrentRow,
|
|
20982
|
-
freezeFirstCol: freezeFirstCol,
|
|
20983
|
-
freezeFirstRow: freezeFirstRow,
|
|
20984
|
-
freezePane: freezePane,
|
|
20985
|
-
freezeSecondCol: freezeSecondCol,
|
|
20986
|
-
freezeSecondRow: freezeSecondRow,
|
|
20987
|
-
groupColumns: groupColumns,
|
|
20988
|
-
groupRows: groupRows,
|
|
20989
|
-
hideCols: hideCols,
|
|
20990
|
-
hideRows: hideRows,
|
|
20991
|
-
unFreezeCols: unFreezeCols,
|
|
20992
|
-
unFreezePane: unFreezePane,
|
|
20993
|
-
unFreezeRows: unFreezeRows,
|
|
20994
|
-
ungroupColumns: ungroupColumns,
|
|
20995
|
-
ungroupRows: ungroupRows,
|
|
20996
|
-
unhideAllCols: unhideAllCols,
|
|
20997
|
-
unhideAllRows: unhideAllRows,
|
|
20998
|
-
unhideCols: unhideCols,
|
|
20999
|
-
unhideRows: unhideRows,
|
|
21000
|
-
viewFormulas: viewFormulas,
|
|
21001
|
-
viewGridlines: viewGridlines
|
|
21002
|
-
});
|
|
21003
|
-
|
|
21004
21010
|
const colMenuRegistry = new MenuItemRegistry();
|
|
21005
21011
|
colMenuRegistry
|
|
21006
21012
|
.add("cut", {
|
|
@@ -21647,13 +21653,8 @@
|
|
|
21647
21653
|
sequence: 30,
|
|
21648
21654
|
separator: true,
|
|
21649
21655
|
})
|
|
21650
|
-
.addChild("
|
|
21651
|
-
...
|
|
21652
|
-
sequence: 40,
|
|
21653
|
-
separator: true,
|
|
21654
|
-
})
|
|
21655
|
-
.addChild("remove_data_filter", ["data"], {
|
|
21656
|
-
...removeDataFilter,
|
|
21656
|
+
.addChild("add_remove_data_filter", ["data"], {
|
|
21657
|
+
...addRemoveDataFilter,
|
|
21657
21658
|
sequence: 40,
|
|
21658
21659
|
separator: true,
|
|
21659
21660
|
});
|
|
@@ -27102,6 +27103,7 @@
|
|
|
27102
27103
|
onComposerCellFocused: { type: Function, optional: true },
|
|
27103
27104
|
onComposerContentFocused: Function,
|
|
27104
27105
|
isDefaultFocus: { type: Boolean, optional: true },
|
|
27106
|
+
onInputContextMenu: { type: Function, optional: true },
|
|
27105
27107
|
};
|
|
27106
27108
|
static components = { TextValueProvider, FunctionDescriptionProvider };
|
|
27107
27109
|
static defaultProps = {
|
|
@@ -27460,6 +27462,11 @@
|
|
|
27460
27462
|
}
|
|
27461
27463
|
}
|
|
27462
27464
|
}
|
|
27465
|
+
onContextMenu(ev) {
|
|
27466
|
+
if (this.env.model.getters.getEditionMode() === "inactive") {
|
|
27467
|
+
this.props.onInputContextMenu?.(ev);
|
|
27468
|
+
}
|
|
27469
|
+
}
|
|
27463
27470
|
// ---------------------------------------------------------------------------
|
|
27464
27471
|
// Private
|
|
27465
27472
|
// ---------------------------------------------------------------------------
|
|
@@ -27727,6 +27734,7 @@
|
|
|
27727
27734
|
onComposerCellFocused: Function,
|
|
27728
27735
|
onComposerContentFocused: Function,
|
|
27729
27736
|
gridDims: Object,
|
|
27737
|
+
onInputContextMenu: Function,
|
|
27730
27738
|
};
|
|
27731
27739
|
static components = { Composer };
|
|
27732
27740
|
rect = this.defaultRect;
|
|
@@ -27771,6 +27779,7 @@
|
|
|
27771
27779
|
isDefaultFocus: true,
|
|
27772
27780
|
onComposerContentFocused: this.props.onComposerContentFocused,
|
|
27773
27781
|
onComposerCellFocused: this.props.onComposerCellFocused,
|
|
27782
|
+
onInputContextMenu: this.props.onInputContextMenu,
|
|
27774
27783
|
};
|
|
27775
27784
|
}
|
|
27776
27785
|
get containerStyle() {
|
|
@@ -28330,6 +28339,10 @@
|
|
|
28330
28339
|
height: 0px;
|
|
28331
28340
|
}
|
|
28332
28341
|
}
|
|
28342
|
+
.o-figure-container {
|
|
28343
|
+
-webkit-user-select: none; // safari
|
|
28344
|
+
user-select: none;
|
|
28345
|
+
}
|
|
28333
28346
|
`;
|
|
28334
28347
|
/**
|
|
28335
28348
|
* Each figure ⭐ is positioned inside a container `div` placed and sized
|
|
@@ -31768,29 +31781,12 @@
|
|
|
31768
31781
|
return width;
|
|
31769
31782
|
return Math.round((width / WIDTH_FACTOR) * 100) / 100;
|
|
31770
31783
|
}
|
|
31771
|
-
function convertBorderDescr(descr) {
|
|
31772
|
-
if (!descr) {
|
|
31773
|
-
return undefined;
|
|
31774
|
-
}
|
|
31775
|
-
return {
|
|
31776
|
-
style: descr.style,
|
|
31777
|
-
color: { rgb: descr.color },
|
|
31778
|
-
};
|
|
31779
|
-
}
|
|
31780
31784
|
function extractStyle(cell, data) {
|
|
31781
31785
|
let style = {};
|
|
31782
31786
|
if (cell.style) {
|
|
31783
31787
|
style = data.styles[cell.style];
|
|
31784
31788
|
}
|
|
31785
31789
|
const format = extractFormat(cell, data);
|
|
31786
|
-
const exportedBorder = {};
|
|
31787
|
-
if (cell.border) {
|
|
31788
|
-
const border = data.borders[cell.border];
|
|
31789
|
-
exportedBorder.left = convertBorderDescr(border.left);
|
|
31790
|
-
exportedBorder.right = convertBorderDescr(border.right);
|
|
31791
|
-
exportedBorder.bottom = convertBorderDescr(border.bottom);
|
|
31792
|
-
exportedBorder.top = convertBorderDescr(border.top);
|
|
31793
|
-
}
|
|
31794
31790
|
const styles = {
|
|
31795
31791
|
font: {
|
|
31796
31792
|
size: style?.fontSize || DEFAULT_FONT_SIZE,
|
|
@@ -31804,7 +31800,7 @@
|
|
|
31804
31800
|
}
|
|
31805
31801
|
: { reservedAttribute: "none" },
|
|
31806
31802
|
numFmt: format ? { format: format, id: 0 /* id not used for export */ } : undefined,
|
|
31807
|
-
border:
|
|
31803
|
+
border: cell.border || 0,
|
|
31808
31804
|
alignment: {
|
|
31809
31805
|
horizontal: style.align,
|
|
31810
31806
|
vertical: style.verticalAlign
|
|
@@ -31826,15 +31822,12 @@
|
|
|
31826
31822
|
return undefined;
|
|
31827
31823
|
}
|
|
31828
31824
|
function normalizeStyle(construct, styles) {
|
|
31829
|
-
const { id: fontId } = pushElement(styles["font"], construct.fonts);
|
|
31830
|
-
const { id: fillId } = pushElement(styles["fill"], construct.fills);
|
|
31831
|
-
const { id: borderId } = pushElement(styles["border"], construct.borders);
|
|
31832
31825
|
// Normalize this
|
|
31833
31826
|
const numFmtId = convertFormat(styles["numFmt"], construct.numFmts);
|
|
31834
31827
|
const style = {
|
|
31835
|
-
fontId,
|
|
31836
|
-
fillId,
|
|
31837
|
-
borderId,
|
|
31828
|
+
fontId: pushElement(styles.font, construct.fonts),
|
|
31829
|
+
fillId: pushElement(styles.fill, construct.fills),
|
|
31830
|
+
borderId: styles.border,
|
|
31838
31831
|
numFmtId,
|
|
31839
31832
|
alignment: {
|
|
31840
31833
|
vertical: styles.alignment.vertical,
|
|
@@ -31842,8 +31835,7 @@
|
|
|
31842
31835
|
wrapText: styles.alignment.wrapText,
|
|
31843
31836
|
},
|
|
31844
31837
|
};
|
|
31845
|
-
|
|
31846
|
-
return id;
|
|
31838
|
+
return pushElement(style, construct.styles);
|
|
31847
31839
|
}
|
|
31848
31840
|
function convertFormat(format, numFmtStructure) {
|
|
31849
31841
|
if (!format) {
|
|
@@ -31851,8 +31843,7 @@
|
|
|
31851
31843
|
}
|
|
31852
31844
|
let formatId = XLSX_FORMAT_MAP[format.format];
|
|
31853
31845
|
if (!formatId) {
|
|
31854
|
-
|
|
31855
|
-
formatId = id + FIRST_NUMFMT_ID;
|
|
31846
|
+
formatId = pushElement(format, numFmtStructure) + FIRST_NUMFMT_ID;
|
|
31856
31847
|
}
|
|
31857
31848
|
return formatId;
|
|
31858
31849
|
}
|
|
@@ -31877,20 +31868,15 @@
|
|
|
31877
31868
|
return id;
|
|
31878
31869
|
}
|
|
31879
31870
|
function pushElement(property, propertyList) {
|
|
31880
|
-
|
|
31881
|
-
|
|
31882
|
-
|
|
31871
|
+
let len = propertyList.length;
|
|
31872
|
+
const operator = typeof property === "object" ? deepEquals : (a, b) => a === b;
|
|
31873
|
+
for (let i = 0; i < len; i++) {
|
|
31874
|
+
if (operator(property, propertyList[i])) {
|
|
31875
|
+
return i;
|
|
31883
31876
|
}
|
|
31884
31877
|
}
|
|
31885
|
-
|
|
31886
|
-
|
|
31887
|
-
propertyList.push(property);
|
|
31888
|
-
elemId = propertyList.length - 1;
|
|
31889
|
-
}
|
|
31890
|
-
return {
|
|
31891
|
-
id: elemId,
|
|
31892
|
-
list: propertyList,
|
|
31893
|
-
};
|
|
31878
|
+
propertyList[propertyList.length] = property;
|
|
31879
|
+
return propertyList.length - 1;
|
|
31894
31880
|
}
|
|
31895
31881
|
const chartIds = [];
|
|
31896
31882
|
/**
|
|
@@ -32617,7 +32603,25 @@
|
|
|
32617
32603
|
}
|
|
32618
32604
|
return document;
|
|
32619
32605
|
}
|
|
32620
|
-
function
|
|
32606
|
+
function convertBorderDescr(descr) {
|
|
32607
|
+
if (!descr) {
|
|
32608
|
+
return undefined;
|
|
32609
|
+
}
|
|
32610
|
+
return {
|
|
32611
|
+
style: descr.style,
|
|
32612
|
+
color: { rgb: descr.color },
|
|
32613
|
+
};
|
|
32614
|
+
}
|
|
32615
|
+
function getDefaultXLSXStructure(data) {
|
|
32616
|
+
const xlsxBorders = Object.values(data.borders).map((border) => {
|
|
32617
|
+
return {
|
|
32618
|
+
left: convertBorderDescr(border.left),
|
|
32619
|
+
right: convertBorderDescr(border.right),
|
|
32620
|
+
bottom: convertBorderDescr(border.bottom),
|
|
32621
|
+
top: convertBorderDescr(border.top),
|
|
32622
|
+
};
|
|
32623
|
+
});
|
|
32624
|
+
const borders = [{}, ...xlsxBorders];
|
|
32621
32625
|
return {
|
|
32622
32626
|
relsFiles: [],
|
|
32623
32627
|
sharedStrings: [],
|
|
@@ -32640,7 +32644,7 @@
|
|
|
32640
32644
|
},
|
|
32641
32645
|
],
|
|
32642
32646
|
fills: [{ reservedAttribute: "none" }, { reservedAttribute: "gray125" }],
|
|
32643
|
-
borders
|
|
32647
|
+
borders,
|
|
32644
32648
|
numFmts: [],
|
|
32645
32649
|
dxfs: [],
|
|
32646
32650
|
};
|
|
@@ -37836,7 +37840,17 @@
|
|
|
37836
37840
|
}
|
|
37837
37841
|
}
|
|
37838
37842
|
exportForExcel(data) {
|
|
37839
|
-
|
|
37843
|
+
for (const sheet of data.sheets) {
|
|
37844
|
+
for (const filterTable of this.getFilterTables(sheet.id)) {
|
|
37845
|
+
if (zoneToDimension(filterTable.zone).numberOfRows === 1) {
|
|
37846
|
+
continue;
|
|
37847
|
+
}
|
|
37848
|
+
sheet.filterTables.push({
|
|
37849
|
+
range: zoneToXc(filterTable.zone),
|
|
37850
|
+
filters: [],
|
|
37851
|
+
});
|
|
37852
|
+
}
|
|
37853
|
+
}
|
|
37840
37854
|
}
|
|
37841
37855
|
}
|
|
37842
37856
|
|
|
@@ -41556,7 +41570,9 @@
|
|
|
41556
41570
|
this.blockedArrayFormulas = new Set();
|
|
41557
41571
|
this.spreadingRelations = new SpreadingRelation();
|
|
41558
41572
|
this.formulaDependencies = lazy(() => {
|
|
41559
|
-
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
41573
|
+
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
41574
|
+
.filter((range) => !range.invalidSheetName && !range.invalidXc)
|
|
41575
|
+
.map((range) => ({
|
|
41560
41576
|
data: positionId,
|
|
41561
41577
|
boundingBox: {
|
|
41562
41578
|
zone: range.zone,
|
|
@@ -49289,7 +49305,7 @@
|
|
|
49289
49305
|
"isFilterActive",
|
|
49290
49306
|
];
|
|
49291
49307
|
filterValues = {};
|
|
49292
|
-
hiddenRows =
|
|
49308
|
+
hiddenRows = {};
|
|
49293
49309
|
isEvaluationDirty = false;
|
|
49294
49310
|
allowDispatch(cmd) {
|
|
49295
49311
|
switch (cmd.type) {
|
|
@@ -49332,11 +49348,11 @@
|
|
|
49332
49348
|
case "UNFOLD_HEADER_GROUP":
|
|
49333
49349
|
case "FOLD_ALL_HEADER_GROUPS":
|
|
49334
49350
|
case "UNFOLD_ALL_HEADER_GROUPS":
|
|
49335
|
-
this.updateHiddenRows();
|
|
49351
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
49336
49352
|
break;
|
|
49337
49353
|
case "UPDATE_FILTER":
|
|
49338
49354
|
this.updateFilter(cmd);
|
|
49339
|
-
this.updateHiddenRows();
|
|
49355
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
49340
49356
|
break;
|
|
49341
49357
|
case "DUPLICATE_SHEET":
|
|
49342
49358
|
const filterValues = {};
|
|
@@ -49356,15 +49372,14 @@
|
|
|
49356
49372
|
}
|
|
49357
49373
|
finalize() {
|
|
49358
49374
|
if (this.isEvaluationDirty) {
|
|
49359
|
-
this.
|
|
49375
|
+
for (const sheetId of this.getters.getSheetIds()) {
|
|
49376
|
+
this.updateHiddenRows(sheetId);
|
|
49377
|
+
}
|
|
49360
49378
|
this.isEvaluationDirty = false;
|
|
49361
49379
|
}
|
|
49362
49380
|
}
|
|
49363
49381
|
isRowFiltered(sheetId, row) {
|
|
49364
|
-
|
|
49365
|
-
return false;
|
|
49366
|
-
}
|
|
49367
|
-
return this.hiddenRows.has(row);
|
|
49382
|
+
return !!this.hiddenRows[sheetId]?.has(row);
|
|
49368
49383
|
}
|
|
49369
49384
|
getCellBorderWithFilterBorder(position) {
|
|
49370
49385
|
const { sheetId, col, row } = position;
|
|
@@ -49415,8 +49430,7 @@
|
|
|
49415
49430
|
this.filterValues[sheetId] = {};
|
|
49416
49431
|
this.filterValues[sheetId][id] = hiddenValues;
|
|
49417
49432
|
}
|
|
49418
|
-
updateHiddenRows() {
|
|
49419
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
49433
|
+
updateHiddenRows(sheetId) {
|
|
49420
49434
|
const filters = this.getters
|
|
49421
49435
|
.getFilters(sheetId)
|
|
49422
49436
|
.sort((filter1, filter2) => filter1.zoneWithHeaders.top - filter2.zoneWithHeaders.top);
|
|
@@ -49437,7 +49451,7 @@
|
|
|
49437
49451
|
}
|
|
49438
49452
|
}
|
|
49439
49453
|
}
|
|
49440
|
-
this.hiddenRows = hiddenRows;
|
|
49454
|
+
this.hiddenRows[sheetId] = hiddenRows;
|
|
49441
49455
|
}
|
|
49442
49456
|
getCellValueAsString(sheetId, col, row) {
|
|
49443
49457
|
const value = this.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue;
|
|
@@ -50547,13 +50561,14 @@
|
|
|
50547
50561
|
}
|
|
50548
50562
|
}
|
|
50549
50563
|
handleEvent(event) {
|
|
50564
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
50550
50565
|
if (event.options.scrollIntoView) {
|
|
50551
50566
|
let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
|
|
50552
50567
|
if (event.mode === "updateAnchor") {
|
|
50553
50568
|
const oldZone = event.previousAnchor.zone;
|
|
50554
50569
|
const newZone = event.anchor.zone;
|
|
50555
50570
|
// altering a zone should not move the viewport in a dimension that wasn't changed
|
|
50556
|
-
const { top, bottom, left, right } = this.
|
|
50571
|
+
const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
|
|
50557
50572
|
if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
|
|
50558
50573
|
col = left > col || col > right ? left : col;
|
|
50559
50574
|
}
|
|
@@ -50561,7 +50576,6 @@
|
|
|
50561
50576
|
row = top > row || row > bottom ? top : row;
|
|
50562
50577
|
}
|
|
50563
50578
|
}
|
|
50564
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
50565
50579
|
col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
|
|
50566
50580
|
row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
|
|
50567
50581
|
if (!this.sheetsWithDirtyViewports.has(sheetId)) {
|
|
@@ -50598,16 +50612,16 @@
|
|
|
50598
50612
|
this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
|
|
50599
50613
|
break;
|
|
50600
50614
|
case "SHIFT_VIEWPORT_DOWN":
|
|
50601
|
-
const { top } = this.getActiveMainViewport();
|
|
50602
50615
|
const sheetId = this.getters.getActiveSheetId();
|
|
50603
|
-
const
|
|
50604
|
-
this.
|
|
50616
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50617
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50618
|
+
this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
|
|
50605
50619
|
break;
|
|
50606
50620
|
case "SHIFT_VIEWPORT_UP": {
|
|
50607
|
-
const { top } = this.getActiveMainViewport();
|
|
50608
50621
|
const sheetId = this.getters.getActiveSheetId();
|
|
50609
|
-
const
|
|
50610
|
-
this.
|
|
50622
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50623
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50624
|
+
this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
|
|
50611
50625
|
break;
|
|
50612
50626
|
}
|
|
50613
50627
|
case "REMOVE_FILTER_TABLE":
|
|
@@ -51000,17 +51014,6 @@
|
|
|
51000
51014
|
const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
|
|
51001
51015
|
Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
|
|
51002
51016
|
}
|
|
51003
|
-
/**
|
|
51004
|
-
* Clip the vertical offset within the allowed range.
|
|
51005
|
-
* Not above the sheet, nor below the sheet.
|
|
51006
|
-
*/
|
|
51007
|
-
clipOffsetY(offsetY) {
|
|
51008
|
-
const { height } = this.getMainViewportRect();
|
|
51009
|
-
const maxOffset = height - this.sheetViewHeight;
|
|
51010
|
-
offsetY = Math.min(offsetY, maxOffset);
|
|
51011
|
-
offsetY = Math.max(offsetY, 0);
|
|
51012
|
-
return offsetY;
|
|
51013
|
-
}
|
|
51014
51017
|
getViewportOffset(sheetId) {
|
|
51015
51018
|
return {
|
|
51016
51019
|
x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
|
|
@@ -51066,12 +51069,15 @@
|
|
|
51066
51069
|
* viewport top.
|
|
51067
51070
|
*/
|
|
51068
51071
|
shiftVertically(offset) {
|
|
51069
|
-
const
|
|
51072
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
51073
|
+
const { top } = this.getMainInternalViewport(sheetId);
|
|
51070
51074
|
const { scrollX } = this.getActiveSheetScrollInfo();
|
|
51071
51075
|
this.setSheetViewOffset(scrollX, offset);
|
|
51072
51076
|
const { anchor } = this.getters.getSelection();
|
|
51073
|
-
|
|
51074
|
-
|
|
51077
|
+
if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
|
|
51078
|
+
const deltaRow = this.getMainInternalViewport(sheetId).top - top;
|
|
51079
|
+
this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
|
|
51080
|
+
}
|
|
51075
51081
|
}
|
|
51076
51082
|
getVisibleFigures() {
|
|
51077
51083
|
const sheetId = this.getters.getActiveSheetId();
|
|
@@ -52002,7 +52008,6 @@
|
|
|
52002
52008
|
cursor: pointer;
|
|
52003
52009
|
}
|
|
52004
52010
|
`;
|
|
52005
|
-
let tKey = 1;
|
|
52006
52011
|
class SpreadsheetDashboard extends owl.Component {
|
|
52007
52012
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
52008
52013
|
static props = {};
|
|
@@ -52081,13 +52086,9 @@
|
|
|
52081
52086
|
coordinates: rect,
|
|
52082
52087
|
position: { col, row },
|
|
52083
52088
|
action,
|
|
52084
|
-
// we can't rely on position only because a row or a column could
|
|
52085
|
-
// be inserted at any time.
|
|
52086
|
-
tKey: `${tKey}-${col}-${row}`,
|
|
52087
52089
|
});
|
|
52088
52090
|
}
|
|
52089
52091
|
}
|
|
52090
|
-
tKey++;
|
|
52091
52092
|
return cells;
|
|
52092
52093
|
}
|
|
52093
52094
|
getClickableAction(position) {
|
|
@@ -55530,8 +55531,7 @@
|
|
|
55530
55531
|
attrs.push(["t", "b"]);
|
|
55531
55532
|
}
|
|
55532
55533
|
else if (forceString || !isNumber(value, DEFAULT_LOCALE)) {
|
|
55533
|
-
|
|
55534
|
-
value = id.toString();
|
|
55534
|
+
value = pushElement(content, sharedStrings);
|
|
55535
55535
|
attrs.push(["t", "s"]);
|
|
55536
55536
|
}
|
|
55537
55537
|
return { attrs, node: escapeXml /*xml*/ `<v>${value}</v>` };
|
|
@@ -55656,8 +55656,7 @@
|
|
|
55656
55656
|
if (rule.style.fillColor) {
|
|
55657
55657
|
dxf.fill = { fgColor: { rgb: rule.style.fillColor } };
|
|
55658
55658
|
}
|
|
55659
|
-
|
|
55660
|
-
ruleAttributes.push(["dxfId", id]);
|
|
55659
|
+
ruleAttributes.push(["dxfId", pushElement(dxf, dxfs)]);
|
|
55661
55660
|
return escapeXml /*xml*/ `
|
|
55662
55661
|
<conditionalFormatting sqref="${cf.ranges.join(" ")}">
|
|
55663
55662
|
<cfRule ${formatAttributes(ruleAttributes)}>
|
|
@@ -56467,7 +56466,7 @@
|
|
|
56467
56466
|
*/
|
|
56468
56467
|
function getXLSX(data) {
|
|
56469
56468
|
const files = [];
|
|
56470
|
-
const construct = getDefaultXLSXStructure();
|
|
56469
|
+
const construct = getDefaultXLSXStructure(data);
|
|
56471
56470
|
files.push(createWorkbook(data, construct));
|
|
56472
56471
|
files.push(...createWorksheets(data, construct));
|
|
56473
56472
|
files.push(createStylesSheet(construct));
|
|
@@ -57356,9 +57355,9 @@
|
|
|
57356
57355
|
exports.tokenize = tokenize;
|
|
57357
57356
|
|
|
57358
57357
|
|
|
57359
|
-
__info__.version = "17.1.
|
|
57360
|
-
__info__.date = "2024-04-
|
|
57361
|
-
__info__.hash = "
|
|
57358
|
+
__info__.version = "17.1.12";
|
|
57359
|
+
__info__.date = "2024-04-18T16:45:30.109Z";
|
|
57360
|
+
__info__.hash = "3e90776";
|
|
57362
57361
|
|
|
57363
57362
|
|
|
57364
57363
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|