@odoo/o-spreadsheet 16.3.0-alpha.3 → 16.3.0-alpha.4
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 +1607 -1027
- package/dist/o-spreadsheet.d.ts +481 -176
- package/dist/o-spreadsheet.esm.js +1607 -1028
- package/dist/o-spreadsheet.iife.js +1607 -1027
- package/dist/o-spreadsheet.iife.min.js +351 -364
- package/package.json +1 -1
|
@@ -114,6 +114,7 @@
|
|
|
114
114
|
const BACKGROUND_HEADER_FILTER_COLOR = "#E6F4EA";
|
|
115
115
|
const BACKGROUND_HEADER_SELECTED_FILTER_COLOR = "#CEEAD6";
|
|
116
116
|
const SEPARATOR_COLOR = "#E0E2E4";
|
|
117
|
+
const ICONS_COLOR = "#4A4F59";
|
|
117
118
|
// Color picker defaults as upper case HEX to match `toHex`helper
|
|
118
119
|
const COLOR_PICKER_DEFAULTS = [
|
|
119
120
|
"#000000",
|
|
@@ -220,8 +221,10 @@
|
|
|
220
221
|
const FILTER_ICON_EDGE_LENGTH = 17;
|
|
221
222
|
// Menus
|
|
222
223
|
const MENU_WIDTH = 250;
|
|
223
|
-
const MENU_VERTICAL_PADDING =
|
|
224
|
-
const MENU_ITEM_HEIGHT =
|
|
224
|
+
const MENU_VERTICAL_PADDING = 6;
|
|
225
|
+
const MENU_ITEM_HEIGHT = 26;
|
|
226
|
+
const MENU_ITEM_PADDING_HORIZONTAL = 13;
|
|
227
|
+
const MENU_ITEM_PADDING_VERTICAL = 4;
|
|
225
228
|
const MENU_SEPARATOR_BORDER_WIDTH = 1;
|
|
226
229
|
const MENU_SEPARATOR_PADDING = 5;
|
|
227
230
|
// Fonts
|
|
@@ -229,6 +232,7 @@
|
|
|
229
232
|
const DEFAULT_FONT_SIZE = 10;
|
|
230
233
|
const HEADER_FONT_SIZE = 11;
|
|
231
234
|
const DEFAULT_FONT = "'Roboto', arial";
|
|
235
|
+
const DEFAULT_VERTICAL_ALIGN = "middle";
|
|
232
236
|
// Borders
|
|
233
237
|
const DEFAULT_BORDER_DESC = ["thin", "#000"];
|
|
234
238
|
const DEFAULT_FILTER_BORDER_DESC = ["thin", FILTERS_COLOR];
|
|
@@ -271,15 +275,22 @@
|
|
|
271
275
|
ComponentsImportance[ComponentsImportance["Highlight"] = 5] = "Highlight";
|
|
272
276
|
ComponentsImportance[ComponentsImportance["Figure"] = 10] = "Figure";
|
|
273
277
|
ComponentsImportance[ComponentsImportance["ScrollBar"] = 15] = "ScrollBar";
|
|
274
|
-
ComponentsImportance[ComponentsImportance["
|
|
278
|
+
ComponentsImportance[ComponentsImportance["GridPopover"] = 19] = "GridPopover";
|
|
275
279
|
ComponentsImportance[ComponentsImportance["GridComposer"] = 20] = "GridComposer";
|
|
276
|
-
ComponentsImportance[ComponentsImportance["
|
|
280
|
+
ComponentsImportance[ComponentsImportance["Dropdown"] = 21] = "Dropdown";
|
|
277
281
|
ComponentsImportance[ComponentsImportance["IconPicker"] = 25] = "IconPicker";
|
|
278
|
-
ComponentsImportance[ComponentsImportance["
|
|
282
|
+
ComponentsImportance[ComponentsImportance["TopBarComposer"] = 30] = "TopBarComposer";
|
|
283
|
+
ComponentsImportance[ComponentsImportance["Popover"] = 35] = "Popover";
|
|
279
284
|
ComponentsImportance[ComponentsImportance["FigureAnchor"] = 1000] = "FigureAnchor";
|
|
280
285
|
ComponentsImportance[ComponentsImportance["FigureSnapLine"] = 1001] = "FigureSnapLine";
|
|
281
286
|
})(ComponentsImportance || (ComponentsImportance = {}));
|
|
282
|
-
|
|
287
|
+
let DEFAULT_SHEETVIEW_SIZE = 0;
|
|
288
|
+
function getDefaultSheetViewSize() {
|
|
289
|
+
return DEFAULT_SHEETVIEW_SIZE;
|
|
290
|
+
}
|
|
291
|
+
function setDefaultSheetViewSize(size) {
|
|
292
|
+
DEFAULT_SHEETVIEW_SIZE = size;
|
|
293
|
+
}
|
|
283
294
|
const MAXIMAL_FREEZABLE_RATIO = 0.85;
|
|
284
295
|
const NEWLINE = "\n";
|
|
285
296
|
const FONT_SIZES = [6, 7, 8, 9, 10, 11, 12, 14, 18, 24, 36];
|
|
@@ -5182,6 +5193,11 @@
|
|
|
5182
5193
|
this.currentPosition = newPosition;
|
|
5183
5194
|
});
|
|
5184
5195
|
}
|
|
5196
|
+
get popoverStyle() {
|
|
5197
|
+
return cssPropertiesToCss({
|
|
5198
|
+
"z-index": `${this.props.zIndex}`,
|
|
5199
|
+
});
|
|
5200
|
+
}
|
|
5185
5201
|
}
|
|
5186
5202
|
Popover.template = "o-spreadsheet-Popover";
|
|
5187
5203
|
Popover.defaultProps = {
|
|
@@ -5190,6 +5206,7 @@
|
|
|
5190
5206
|
onMouseWheel: () => { },
|
|
5191
5207
|
onPopoverMoved: () => { },
|
|
5192
5208
|
onPopoverHidden: () => { },
|
|
5209
|
+
zIndex: ComponentsImportance.Popover,
|
|
5193
5210
|
};
|
|
5194
5211
|
Popover.props = {
|
|
5195
5212
|
anchorRect: Object,
|
|
@@ -5201,6 +5218,7 @@
|
|
|
5201
5218
|
onMouseWheel: { type: Function, optional: true },
|
|
5202
5219
|
onPopoverHidden: { type: Function, optional: true },
|
|
5203
5220
|
onPopoverMoved: { type: Function, optional: true },
|
|
5221
|
+
zIndex: { type: Number, optional: true },
|
|
5204
5222
|
slots: Object,
|
|
5205
5223
|
};
|
|
5206
5224
|
class PopoverPositionContext {
|
|
@@ -5344,7 +5362,7 @@
|
|
|
5344
5362
|
align-items: center;
|
|
5345
5363
|
box-sizing: border-box;
|
|
5346
5364
|
height: ${MENU_ITEM_HEIGHT}px;
|
|
5347
|
-
padding:
|
|
5365
|
+
padding: ${MENU_ITEM_PADDING_VERTICAL}px ${MENU_ITEM_PADDING_HORIZONTAL}px;
|
|
5348
5366
|
cursor: pointer;
|
|
5349
5367
|
user-select: none;
|
|
5350
5368
|
|
|
@@ -5358,11 +5376,18 @@
|
|
|
5358
5376
|
display: flex;
|
|
5359
5377
|
justify-content: space-between;
|
|
5360
5378
|
}
|
|
5379
|
+
|
|
5361
5380
|
.o-menu-item-icon {
|
|
5362
|
-
|
|
5363
|
-
margin-
|
|
5381
|
+
display: inline-block;
|
|
5382
|
+
margin-right: calc(${MENU_ITEM_PADDING_HORIZONTAL}px * 3 / 5);
|
|
5383
|
+
width: ${MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
|
|
5384
|
+
line-height: ${MENU_ITEM_HEIGHT - 2 * MENU_ITEM_PADDING_VERTICAL}px;
|
|
5385
|
+
|
|
5386
|
+
.o-icon {
|
|
5387
|
+
color: ${ICONS_COLOR};
|
|
5388
|
+
}
|
|
5364
5389
|
}
|
|
5365
|
-
.o-
|
|
5390
|
+
.o-menu-item-root {
|
|
5366
5391
|
width: 10px;
|
|
5367
5392
|
}
|
|
5368
5393
|
|
|
@@ -5442,12 +5467,22 @@
|
|
|
5442
5467
|
onPopoverMoved: () => this.closeSubMenu(),
|
|
5443
5468
|
};
|
|
5444
5469
|
}
|
|
5470
|
+
get childrenHaveIcon() {
|
|
5471
|
+
return this.props.menuItems.some((menuItem) => !menuItem.icon && !!menuItem.isActive);
|
|
5472
|
+
}
|
|
5473
|
+
getIconName(menu) {
|
|
5474
|
+
var _a;
|
|
5475
|
+
if ((_a = menu.isActive) === null || _a === void 0 ? void 0 : _a.call(menu, this.env)) {
|
|
5476
|
+
return "o-spreadsheet-Icon.CHECK";
|
|
5477
|
+
}
|
|
5478
|
+
return "";
|
|
5479
|
+
}
|
|
5445
5480
|
getColor(menu) {
|
|
5446
5481
|
return menu.textColor ? `color: ${menu.textColor}` : undefined;
|
|
5447
5482
|
}
|
|
5448
5483
|
async activateMenu(menu) {
|
|
5449
5484
|
var _a, _b, _c;
|
|
5450
|
-
const result = await ((_a = menu.
|
|
5485
|
+
const result = await ((_a = menu.execute) === null || _a === void 0 ? void 0 : _a.call(menu, this.env));
|
|
5451
5486
|
this.close();
|
|
5452
5487
|
(_c = (_b = this.props).onMenuClicked) === null || _c === void 0 ? void 0 : _c.call(_b, { detail: result });
|
|
5453
5488
|
}
|
|
@@ -5468,7 +5503,7 @@
|
|
|
5468
5503
|
return menu.name(this.env);
|
|
5469
5504
|
}
|
|
5470
5505
|
isRoot(menu) {
|
|
5471
|
-
return !menu.
|
|
5506
|
+
return !menu.execute;
|
|
5472
5507
|
}
|
|
5473
5508
|
isEnabled(menu) {
|
|
5474
5509
|
if (menu.isEnabled(this.env)) {
|
|
@@ -5515,7 +5550,7 @@
|
|
|
5515
5550
|
}
|
|
5516
5551
|
}
|
|
5517
5552
|
onMouseOver(menu, position, ev) {
|
|
5518
|
-
if (
|
|
5553
|
+
if (this.isEnabled(menu)) {
|
|
5519
5554
|
if (this.isRoot(menu)) {
|
|
5520
5555
|
this.openSubMenu(menu, position, ev);
|
|
5521
5556
|
}
|
|
@@ -5652,11 +5687,82 @@
|
|
|
5652
5687
|
onClosed: { type: Function, optional: true },
|
|
5653
5688
|
};
|
|
5654
5689
|
|
|
5655
|
-
|
|
5656
|
-
|
|
5690
|
+
const linkSheet = {
|
|
5691
|
+
name: _lt("Link sheet"),
|
|
5692
|
+
children: [
|
|
5693
|
+
(env) => {
|
|
5694
|
+
const sheets = env.model.getters
|
|
5695
|
+
.getSheetIds()
|
|
5696
|
+
.map((sheetId) => env.model.getters.getSheet(sheetId));
|
|
5697
|
+
return sheets.map((sheet) => ({
|
|
5698
|
+
id: sheet.id,
|
|
5699
|
+
name: sheet.name,
|
|
5700
|
+
execute: () => markdownLink(sheet.name, buildSheetLink(sheet.id)),
|
|
5701
|
+
}));
|
|
5702
|
+
},
|
|
5703
|
+
],
|
|
5704
|
+
};
|
|
5705
|
+
const deleteSheet = {
|
|
5706
|
+
name: _lt("Delete"),
|
|
5707
|
+
isVisible: (env) => {
|
|
5708
|
+
return env.model.getters.getSheetIds().length > 1;
|
|
5709
|
+
},
|
|
5710
|
+
execute: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet ?"), () => {
|
|
5711
|
+
env.model.dispatch("DELETE_SHEET", { sheetId: env.model.getters.getActiveSheetId() });
|
|
5712
|
+
}),
|
|
5713
|
+
};
|
|
5714
|
+
const duplicateSheet = {
|
|
5715
|
+
name: _lt("Duplicate"),
|
|
5716
|
+
execute: (env) => {
|
|
5717
|
+
const sheetIdFrom = env.model.getters.getActiveSheetId();
|
|
5718
|
+
const sheetIdTo = env.model.uuidGenerator.uuidv4();
|
|
5719
|
+
env.model.dispatch("DUPLICATE_SHEET", {
|
|
5720
|
+
sheetId: sheetIdFrom,
|
|
5721
|
+
sheetIdTo,
|
|
5722
|
+
});
|
|
5723
|
+
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom, sheetIdTo });
|
|
5724
|
+
},
|
|
5725
|
+
};
|
|
5726
|
+
const renameSheet = (args) => {
|
|
5727
|
+
return {
|
|
5728
|
+
name: _lt("Rename"),
|
|
5729
|
+
execute: args.renameSheetCallback,
|
|
5730
|
+
};
|
|
5731
|
+
};
|
|
5732
|
+
const sheetMoveRight = {
|
|
5733
|
+
name: _lt("Move right"),
|
|
5734
|
+
isVisible: (env) => {
|
|
5735
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
5736
|
+
const sheetIds = env.model.getters.getVisibleSheetIds();
|
|
5737
|
+
return sheetIds.indexOf(sheetId) !== sheetIds.length - 1;
|
|
5738
|
+
},
|
|
5739
|
+
execute: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
5740
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
5741
|
+
delta: 1,
|
|
5742
|
+
}),
|
|
5743
|
+
};
|
|
5744
|
+
const sheetMoveLeft = {
|
|
5745
|
+
name: _lt("Move left"),
|
|
5746
|
+
isVisible: (env) => {
|
|
5747
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
5748
|
+
return env.model.getters.getVisibleSheetIds()[0] !== sheetId;
|
|
5749
|
+
},
|
|
5750
|
+
execute: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
5751
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
5752
|
+
delta: -1,
|
|
5753
|
+
}),
|
|
5754
|
+
};
|
|
5755
|
+
const hideSheet = {
|
|
5756
|
+
name: _lt("Hide sheet"),
|
|
5757
|
+
isVisible: (env) => env.model.getters.getVisibleSheetIds().length !== 1,
|
|
5758
|
+
execute: (env) => env.model.dispatch("HIDE_SHEET", { sheetId: env.model.getters.getActiveSheetId() }),
|
|
5759
|
+
};
|
|
5760
|
+
|
|
5761
|
+
function createActions(menuItems) {
|
|
5762
|
+
return menuItems.map(createAction).sort((a, b) => a.sequence - b.sequence);
|
|
5657
5763
|
}
|
|
5658
5764
|
const uuidGenerator$1 = new UuidGenerator();
|
|
5659
|
-
function
|
|
5765
|
+
function createAction(item) {
|
|
5660
5766
|
const name = item.name;
|
|
5661
5767
|
const children = item.children;
|
|
5662
5768
|
return {
|
|
@@ -5664,23 +5770,25 @@
|
|
|
5664
5770
|
name: typeof name === "function" ? name : () => name,
|
|
5665
5771
|
isVisible: item.isVisible ? item.isVisible : () => true,
|
|
5666
5772
|
isEnabled: item.isEnabled ? item.isEnabled : () => true,
|
|
5667
|
-
|
|
5773
|
+
isActive: item.isActive,
|
|
5774
|
+
execute: item.execute,
|
|
5668
5775
|
children: children
|
|
5669
5776
|
? (env) => {
|
|
5670
5777
|
return children
|
|
5671
5778
|
.map((child) => (typeof child === "function" ? child(env) : child))
|
|
5672
5779
|
.flat()
|
|
5673
|
-
.map(
|
|
5780
|
+
.map(createAction);
|
|
5674
5781
|
}
|
|
5675
5782
|
: () => [],
|
|
5676
5783
|
isReadonlyAllowed: item.isReadonlyAllowed || false,
|
|
5677
5784
|
separator: item.separator || false,
|
|
5678
|
-
icon: item.icon,
|
|
5785
|
+
icon: item.icon || "",
|
|
5679
5786
|
description: item.description || "",
|
|
5680
5787
|
textColor: item.textColor,
|
|
5681
5788
|
sequence: item.sequence || 0,
|
|
5682
5789
|
};
|
|
5683
|
-
}
|
|
5790
|
+
}
|
|
5791
|
+
|
|
5684
5792
|
/**
|
|
5685
5793
|
* The class Registry is extended in order to add the function addChild
|
|
5686
5794
|
*
|
|
@@ -5727,7 +5835,7 @@
|
|
|
5727
5835
|
return this;
|
|
5728
5836
|
}
|
|
5729
5837
|
getMenuItems() {
|
|
5730
|
-
return
|
|
5838
|
+
return createActions(this.getAll());
|
|
5731
5839
|
}
|
|
5732
5840
|
}
|
|
5733
5841
|
|
|
@@ -5735,20 +5843,9 @@
|
|
|
5735
5843
|
// Link Menu Registry
|
|
5736
5844
|
//------------------------------------------------------------------------------
|
|
5737
5845
|
const linkMenuRegistry = new MenuItemRegistry();
|
|
5738
|
-
linkMenuRegistry
|
|
5739
|
-
|
|
5740
|
-
name: _lt("Link sheet"),
|
|
5846
|
+
linkMenuRegistry.add("sheet", {
|
|
5847
|
+
...linkSheet,
|
|
5741
5848
|
sequence: 10,
|
|
5742
|
-
})
|
|
5743
|
-
.addChild("sheet_list", ["sheet"], (env) => {
|
|
5744
|
-
const sheets = env.model.getters
|
|
5745
|
-
.getSheetIds()
|
|
5746
|
-
.map((sheetId) => env.model.getters.getSheet(sheetId));
|
|
5747
|
-
return sheets.map((sheet) => ({
|
|
5748
|
-
id: sheet.id,
|
|
5749
|
-
name: sheet.name,
|
|
5750
|
-
action: () => markdownLink(sheet.name, buildSheetLink(sheet.id)),
|
|
5751
|
-
}));
|
|
5752
5849
|
});
|
|
5753
5850
|
|
|
5754
5851
|
const MENU_OFFSET_X = 320;
|
|
@@ -6412,18 +6509,6 @@
|
|
|
6412
6509
|
[43 /* CommandResult.GaugeUpperInflectionPointNaN */]: _lt("The upper inflection point value must be a number"),
|
|
6413
6510
|
},
|
|
6414
6511
|
};
|
|
6415
|
-
const NumberFormatTerms = {
|
|
6416
|
-
Automatic: _lt("Automatic"),
|
|
6417
|
-
Number: _lt("Number"),
|
|
6418
|
-
Percent: _lt("Percent"),
|
|
6419
|
-
Currency: _lt("Currency"),
|
|
6420
|
-
CurrencyRounded: _lt("Currency rounded"),
|
|
6421
|
-
Date: _lt("Date"),
|
|
6422
|
-
Time: _lt("Time"),
|
|
6423
|
-
DateTime: _lt("Date time"),
|
|
6424
|
-
Duration: _lt("Duration"),
|
|
6425
|
-
CustomCurrency: _lt("Custom currency"),
|
|
6426
|
-
};
|
|
6427
6512
|
const CustomCurrencyTerms = {
|
|
6428
6513
|
Custom: _lt("Custom"),
|
|
6429
6514
|
};
|
|
@@ -7967,7 +8052,7 @@
|
|
|
7967
8052
|
id: "edit",
|
|
7968
8053
|
name: _lt("Edit"),
|
|
7969
8054
|
sequence: 1,
|
|
7970
|
-
|
|
8055
|
+
execute: () => {
|
|
7971
8056
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
7972
8057
|
env.openSidePanel("ChartPanel");
|
|
7973
8058
|
},
|
|
@@ -7976,7 +8061,7 @@
|
|
|
7976
8061
|
getCutMenuItem(figureId, env),
|
|
7977
8062
|
getDeleteMenuItem(figureId, onFigureDeleted, env),
|
|
7978
8063
|
];
|
|
7979
|
-
return
|
|
8064
|
+
return createActions(menuItemSpecs);
|
|
7980
8065
|
}
|
|
7981
8066
|
function getImageMenuRegistry(figureId, onFigureDeleted, env) {
|
|
7982
8067
|
const menuItemSpecs = [
|
|
@@ -7986,7 +8071,7 @@
|
|
|
7986
8071
|
id: "reset_size",
|
|
7987
8072
|
name: _lt("Reset size"),
|
|
7988
8073
|
sequence: 4,
|
|
7989
|
-
|
|
8074
|
+
execute: () => {
|
|
7990
8075
|
const size = env.model.getters.getImageSize(figureId);
|
|
7991
8076
|
const { height, width } = getMaxFigureSize(env.model.getters, size);
|
|
7992
8077
|
env.model.dispatch("UPDATE_FIGURE", {
|
|
@@ -7999,7 +8084,7 @@
|
|
|
7999
8084
|
},
|
|
8000
8085
|
getDeleteMenuItem(figureId, onFigureDeleted, env),
|
|
8001
8086
|
];
|
|
8002
|
-
return
|
|
8087
|
+
return createActions(menuItemSpecs);
|
|
8003
8088
|
}
|
|
8004
8089
|
function getCopyMenuItem(figureId, env) {
|
|
8005
8090
|
return {
|
|
@@ -8007,7 +8092,7 @@
|
|
|
8007
8092
|
name: _lt("Copy"),
|
|
8008
8093
|
sequence: 2,
|
|
8009
8094
|
description: "Ctrl+C",
|
|
8010
|
-
|
|
8095
|
+
execute: async () => {
|
|
8011
8096
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
8012
8097
|
env.model.dispatch("COPY");
|
|
8013
8098
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
@@ -8020,7 +8105,7 @@
|
|
|
8020
8105
|
name: _lt("Cut"),
|
|
8021
8106
|
sequence: 3,
|
|
8022
8107
|
description: "Ctrl+X",
|
|
8023
|
-
|
|
8108
|
+
execute: async () => {
|
|
8024
8109
|
env.model.dispatch("SELECT_FIGURE", { id: figureId });
|
|
8025
8110
|
env.model.dispatch("CUT");
|
|
8026
8111
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
@@ -8032,7 +8117,7 @@
|
|
|
8032
8117
|
id: "delete",
|
|
8033
8118
|
name: _lt("Delete"),
|
|
8034
8119
|
sequence: 10,
|
|
8035
|
-
|
|
8120
|
+
execute: () => {
|
|
8036
8121
|
env.model.dispatch("DELETE_FIGURE", {
|
|
8037
8122
|
sheetId: env.model.getters.getActiveSheetId(),
|
|
8038
8123
|
id: figureId,
|
|
@@ -8139,6 +8224,22 @@
|
|
|
8139
8224
|
];
|
|
8140
8225
|
}
|
|
8141
8226
|
|
|
8227
|
+
const AddMergeInteractiveContent = {
|
|
8228
|
+
MergeIsDestructive: _lt("Merging these cells will only preserve the top-leftmost value. Merge anyway?"),
|
|
8229
|
+
MergeInFilter: _lt("You can't merge cells inside of an existing filter."),
|
|
8230
|
+
};
|
|
8231
|
+
function interactiveAddMerge(env, sheetId, target) {
|
|
8232
|
+
const result = env.model.dispatch("ADD_MERGE", { sheetId, target });
|
|
8233
|
+
if (result.isCancelledBecause(80 /* CommandResult.MergeInFilter */)) {
|
|
8234
|
+
env.raiseError(AddMergeInteractiveContent.MergeInFilter);
|
|
8235
|
+
}
|
|
8236
|
+
else if (result.isCancelledBecause(3 /* CommandResult.MergeIsDestructive */)) {
|
|
8237
|
+
env.askConfirmation(AddMergeInteractiveContent.MergeIsDestructive, () => {
|
|
8238
|
+
env.model.dispatch("ADD_MERGE", { sheetId, target, force: true });
|
|
8239
|
+
});
|
|
8240
|
+
}
|
|
8241
|
+
}
|
|
8242
|
+
|
|
8142
8243
|
/**
|
|
8143
8244
|
* Create a function used to create a Chart based on the definition
|
|
8144
8245
|
*/
|
|
@@ -8494,9 +8595,9 @@
|
|
|
8494
8595
|
interactiveCut(env);
|
|
8495
8596
|
await env.clipboard.write(env.model.getters.getClipboardContent());
|
|
8496
8597
|
};
|
|
8497
|
-
const PASTE_ACTION = async (env) => paste(env);
|
|
8498
|
-
const PASTE_VALUE_ACTION = async (env) => paste(env, "onlyValue");
|
|
8499
|
-
async function paste(env, pasteOption) {
|
|
8598
|
+
const PASTE_ACTION = async (env) => paste$1(env);
|
|
8599
|
+
const PASTE_VALUE_ACTION = async (env) => paste$1(env, "onlyValue");
|
|
8600
|
+
async function paste$1(env, pasteOption) {
|
|
8500
8601
|
const spreadsheetClipboard = env.model.getters.getClipboardTextContent();
|
|
8501
8602
|
const osClipboard = await env.clipboard.readText();
|
|
8502
8603
|
switch (osClipboard.status) {
|
|
@@ -9050,365 +9151,159 @@
|
|
|
9050
9151
|
return env.model.getters.getSelectedZones().length === 1;
|
|
9051
9152
|
};
|
|
9052
9153
|
|
|
9053
|
-
|
|
9054
|
-
|
|
9055
|
-
|
|
9056
|
-
|
|
9057
|
-
|
|
9058
|
-
.
|
|
9059
|
-
|
|
9060
|
-
|
|
9061
|
-
|
|
9062
|
-
|
|
9063
|
-
|
|
9064
|
-
.
|
|
9154
|
+
const undo = {
|
|
9155
|
+
name: _lt("Undo"),
|
|
9156
|
+
description: "Ctrl+Z",
|
|
9157
|
+
execute: UNDO_ACTION,
|
|
9158
|
+
isEnabled: (env) => env.model.getters.canUndo(),
|
|
9159
|
+
icon: "o-spreadsheet-Icon.UNDO",
|
|
9160
|
+
};
|
|
9161
|
+
const redo = {
|
|
9162
|
+
name: _lt("Redo"),
|
|
9163
|
+
description: "Ctrl+Y",
|
|
9164
|
+
execute: REDO_ACTION,
|
|
9165
|
+
isEnabled: (env) => env.model.getters.canRedo(),
|
|
9166
|
+
icon: "o-spreadsheet-Icon.REDO",
|
|
9167
|
+
};
|
|
9168
|
+
const copy = {
|
|
9065
9169
|
name: _lt("Copy"),
|
|
9066
9170
|
description: "Ctrl+C",
|
|
9067
|
-
sequence: 20,
|
|
9068
9171
|
isReadonlyAllowed: true,
|
|
9069
|
-
|
|
9070
|
-
}
|
|
9071
|
-
|
|
9072
|
-
name: _lt("Paste"),
|
|
9073
|
-
description: "Ctrl+V",
|
|
9074
|
-
sequence: 30,
|
|
9075
|
-
action: PASTE_ACTION,
|
|
9076
|
-
})
|
|
9077
|
-
.add("paste_special", {
|
|
9078
|
-
name: _lt("Paste special"),
|
|
9079
|
-
sequence: 40,
|
|
9080
|
-
separator: true,
|
|
9081
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
9082
|
-
})
|
|
9083
|
-
.addChild("paste_value_only", ["paste_special"], {
|
|
9084
|
-
name: _lt("Paste values only"),
|
|
9085
|
-
sequence: 10,
|
|
9086
|
-
action: PASTE_VALUE_ACTION,
|
|
9087
|
-
})
|
|
9088
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9089
|
-
name: _lt("Paste format only"),
|
|
9090
|
-
sequence: 20,
|
|
9091
|
-
action: PASTE_FORMAT_ACTION,
|
|
9092
|
-
})
|
|
9093
|
-
.add("add_row_before", {
|
|
9094
|
-
name: CELL_INSERT_ROWS_BEFORE_NAME,
|
|
9095
|
-
sequence: 70,
|
|
9096
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
9097
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9098
|
-
})
|
|
9099
|
-
.add("add_column_before", {
|
|
9100
|
-
name: CELL_INSERT_COLUMNS_BEFORE_NAME,
|
|
9101
|
-
sequence: 90,
|
|
9102
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
9103
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9104
|
-
})
|
|
9105
|
-
.add("insert_cell", {
|
|
9106
|
-
name: _lt("Insert cells"),
|
|
9107
|
-
sequence: 100,
|
|
9108
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9109
|
-
separator: true,
|
|
9110
|
-
})
|
|
9111
|
-
.addChild("insert_cell_down", ["insert_cell"], {
|
|
9112
|
-
name: _lt("Shift down"),
|
|
9113
|
-
sequence: 10,
|
|
9114
|
-
action: INSERT_CELL_SHIFT_DOWN,
|
|
9115
|
-
})
|
|
9116
|
-
.addChild("insert_cell_right", ["insert_cell"], {
|
|
9117
|
-
name: _lt("Shift right"),
|
|
9118
|
-
sequence: 20,
|
|
9119
|
-
action: INSERT_CELL_SHIFT_RIGHT,
|
|
9120
|
-
})
|
|
9121
|
-
.add("delete_row", {
|
|
9122
|
-
name: REMOVE_ROWS_NAME,
|
|
9123
|
-
sequence: 110,
|
|
9124
|
-
action: REMOVE_ROWS_ACTION,
|
|
9125
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9126
|
-
})
|
|
9127
|
-
.add("delete_column", {
|
|
9128
|
-
name: REMOVE_COLUMNS_NAME,
|
|
9129
|
-
sequence: 120,
|
|
9130
|
-
action: REMOVE_COLUMNS_ACTION,
|
|
9131
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9132
|
-
})
|
|
9133
|
-
.add("delete_cell", {
|
|
9134
|
-
name: _lt("Delete cells"),
|
|
9135
|
-
sequence: 130,
|
|
9136
|
-
isVisible: IS_ONLY_ONE_RANGE,
|
|
9137
|
-
})
|
|
9138
|
-
.addChild("delete_cell_up", ["delete_cell"], {
|
|
9139
|
-
name: _lt("Shift up"),
|
|
9140
|
-
sequence: 10,
|
|
9141
|
-
action: DELETE_CELL_SHIFT_UP,
|
|
9142
|
-
})
|
|
9143
|
-
.addChild("delete_cell_down", ["delete_cell"], {
|
|
9144
|
-
name: _lt("Shift left"),
|
|
9145
|
-
sequence: 20,
|
|
9146
|
-
action: DELETE_CELL_SHIFT_LEFT,
|
|
9147
|
-
})
|
|
9148
|
-
.add("insert_link", {
|
|
9149
|
-
name: _lt("Insert link"),
|
|
9150
|
-
separator: true,
|
|
9151
|
-
sequence: 150,
|
|
9152
|
-
action: INSERT_LINK,
|
|
9153
|
-
});
|
|
9154
|
-
|
|
9155
|
-
const colMenuRegistry = new MenuItemRegistry();
|
|
9156
|
-
colMenuRegistry
|
|
9157
|
-
.add("cut", {
|
|
9172
|
+
execute: COPY_ACTION,
|
|
9173
|
+
};
|
|
9174
|
+
const cut = {
|
|
9158
9175
|
name: _lt("Cut"),
|
|
9159
9176
|
description: "Ctrl+X",
|
|
9160
|
-
|
|
9161
|
-
|
|
9162
|
-
|
|
9163
|
-
.add("copy", {
|
|
9164
|
-
name: _lt("Copy"),
|
|
9165
|
-
description: "Ctrl+C",
|
|
9166
|
-
sequence: 20,
|
|
9167
|
-
isReadonlyAllowed: true,
|
|
9168
|
-
action: COPY_ACTION,
|
|
9169
|
-
})
|
|
9170
|
-
.add("paste", {
|
|
9177
|
+
execute: CUT_ACTION,
|
|
9178
|
+
};
|
|
9179
|
+
const paste = {
|
|
9171
9180
|
name: _lt("Paste"),
|
|
9172
9181
|
description: "Ctrl+V",
|
|
9173
|
-
|
|
9174
|
-
|
|
9175
|
-
|
|
9176
|
-
.add("paste_special", {
|
|
9182
|
+
execute: PASTE_ACTION,
|
|
9183
|
+
};
|
|
9184
|
+
const pasteSpecial = {
|
|
9177
9185
|
name: _lt("Paste special"),
|
|
9178
|
-
sequence: 40,
|
|
9179
|
-
separator: true,
|
|
9180
9186
|
isVisible: IS_NOT_CUT_OPERATION,
|
|
9181
|
-
}
|
|
9182
|
-
|
|
9187
|
+
};
|
|
9188
|
+
const pasteSpecialValue = {
|
|
9183
9189
|
name: _lt("Paste value only"),
|
|
9184
|
-
|
|
9185
|
-
|
|
9186
|
-
|
|
9187
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9190
|
+
execute: PASTE_VALUE_ACTION,
|
|
9191
|
+
};
|
|
9192
|
+
const pasteSpecialFormat = {
|
|
9188
9193
|
name: _lt("Paste format only"),
|
|
9189
|
-
|
|
9190
|
-
|
|
9191
|
-
|
|
9192
|
-
|
|
9193
|
-
|
|
9194
|
-
|
|
9194
|
+
execute: PASTE_FORMAT_ACTION,
|
|
9195
|
+
};
|
|
9196
|
+
const findAndReplace = {
|
|
9197
|
+
name: _lt("Find and replace"),
|
|
9198
|
+
description: "Ctrl+H",
|
|
9199
|
+
isReadonlyAllowed: true,
|
|
9200
|
+
execute: OPEN_FAR_SIDEPANEL_ACTION,
|
|
9201
|
+
};
|
|
9202
|
+
const deleteValues = {
|
|
9203
|
+
name: _lt("Delete values"),
|
|
9204
|
+
execute: DELETE_CONTENT_ACTION,
|
|
9205
|
+
};
|
|
9206
|
+
const deleteRows = {
|
|
9207
|
+
name: REMOVE_ROWS_NAME,
|
|
9208
|
+
execute: REMOVE_ROWS_ACTION,
|
|
9209
|
+
};
|
|
9210
|
+
const deleteRow = {
|
|
9211
|
+
...deleteRows,
|
|
9195
9212
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
9196
|
-
|
|
9197
|
-
|
|
9198
|
-
|
|
9199
|
-
|
|
9200
|
-
|
|
9201
|
-
|
|
9202
|
-
})
|
|
9203
|
-
.addChild("sort_descending", ["sort_columns"], {
|
|
9204
|
-
name: _lt("Descending (Z ⟶ A)"),
|
|
9205
|
-
sequence: 20,
|
|
9206
|
-
action: SORT_CELLS_DESCENDING,
|
|
9207
|
-
})
|
|
9208
|
-
.add("add_column_before", {
|
|
9209
|
-
name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
|
|
9210
|
-
sequence: 70,
|
|
9211
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
9212
|
-
})
|
|
9213
|
-
.add("add_column_after", {
|
|
9214
|
-
name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
|
|
9215
|
-
sequence: 80,
|
|
9216
|
-
action: INSERT_COLUMNS_AFTER_ACTION,
|
|
9217
|
-
})
|
|
9218
|
-
.add("delete_column", {
|
|
9213
|
+
};
|
|
9214
|
+
const clearRows = {
|
|
9215
|
+
name: DELETE_CONTENT_ROWS_NAME,
|
|
9216
|
+
execute: DELETE_CONTENT_ROWS_ACTION,
|
|
9217
|
+
};
|
|
9218
|
+
const deleteCols = {
|
|
9219
9219
|
name: REMOVE_COLUMNS_NAME,
|
|
9220
|
-
|
|
9221
|
-
|
|
9222
|
-
|
|
9223
|
-
|
|
9220
|
+
execute: REMOVE_COLUMNS_ACTION,
|
|
9221
|
+
};
|
|
9222
|
+
const deleteCol = {
|
|
9223
|
+
...deleteCols,
|
|
9224
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
9225
|
+
};
|
|
9226
|
+
const clearCols = {
|
|
9224
9227
|
name: DELETE_CONTENT_COLUMNS_NAME,
|
|
9225
|
-
|
|
9226
|
-
|
|
9227
|
-
|
|
9228
|
-
|
|
9229
|
-
|
|
9230
|
-
|
|
9231
|
-
|
|
9232
|
-
|
|
9233
|
-
|
|
9234
|
-
|
|
9235
|
-
|
|
9236
|
-
|
|
9237
|
-
|
|
9238
|
-
|
|
9239
|
-
|
|
9240
|
-
|
|
9241
|
-
|
|
9242
|
-
|
|
9243
|
-
|
|
9244
|
-
|
|
9245
|
-
|
|
9246
|
-
|
|
9247
|
-
|
|
9248
|
-
|
|
9249
|
-
|
|
9250
|
-
}
|
|
9251
|
-
|
|
9252
|
-
|
|
9253
|
-
|
|
9254
|
-
|
|
9255
|
-
|
|
9256
|
-
|
|
9257
|
-
|
|
9228
|
+
execute: DELETE_CONTENT_COLUMNS_ACTION,
|
|
9229
|
+
};
|
|
9230
|
+
const deleteCells = {
|
|
9231
|
+
name: _lt("Delete cells"),
|
|
9232
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
9233
|
+
};
|
|
9234
|
+
const deleteCellShiftUp = {
|
|
9235
|
+
name: _lt("Delete cell and shift up"),
|
|
9236
|
+
execute: DELETE_CELL_SHIFT_UP,
|
|
9237
|
+
};
|
|
9238
|
+
const deleteCellShiftLeft = {
|
|
9239
|
+
name: _lt("Delete cell and shift left"),
|
|
9240
|
+
execute: DELETE_CELL_SHIFT_LEFT,
|
|
9241
|
+
};
|
|
9242
|
+
const mergeCells = {
|
|
9243
|
+
name: _lt("Merge cells"),
|
|
9244
|
+
isEnabled: (env) => !cannotMerge(env),
|
|
9245
|
+
isActive: (env) => isInMerge(env),
|
|
9246
|
+
execute: (env) => toggleMerge(env),
|
|
9247
|
+
icon: "o-spreadsheet-Icon.MERGE_CELL",
|
|
9248
|
+
};
|
|
9249
|
+
function cannotMerge(env) {
|
|
9250
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9251
|
+
const { top, left, right, bottom } = env.model.getters.getSelectedZone();
|
|
9252
|
+
const { sheetId } = env.model.getters.getActivePosition();
|
|
9253
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(sheetId);
|
|
9254
|
+
return (zones.length > 1 ||
|
|
9255
|
+
(top === bottom && left === right) ||
|
|
9256
|
+
(left < xSplit && xSplit <= right) ||
|
|
9257
|
+
(top < ySplit && ySplit <= bottom));
|
|
9258
|
+
}
|
|
9259
|
+
function isInMerge(env) {
|
|
9260
|
+
if (!cannotMerge(env)) {
|
|
9261
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9262
|
+
const { col, row, sheetId } = env.model.getters.getActivePosition();
|
|
9263
|
+
const zone = env.model.getters.expandZone(sheetId, positionToZone({ col, row }));
|
|
9264
|
+
return isEqual(zones[0], zone);
|
|
9265
|
+
}
|
|
9266
|
+
return false;
|
|
9267
|
+
}
|
|
9268
|
+
function toggleMerge(env) {
|
|
9269
|
+
if (cannotMerge(env)) {
|
|
9270
|
+
return;
|
|
9271
|
+
}
|
|
9272
|
+
const zones = env.model.getters.getSelectedZones();
|
|
9273
|
+
const target = [zones[zones.length - 1]];
|
|
9274
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
9275
|
+
if (isInMerge(env)) {
|
|
9276
|
+
env.model.dispatch("REMOVE_MERGE", { sheetId, target });
|
|
9277
|
+
}
|
|
9278
|
+
else {
|
|
9279
|
+
interactiveAddMerge(env, sheetId, target);
|
|
9280
|
+
}
|
|
9281
|
+
}
|
|
9258
9282
|
|
|
9259
|
-
|
|
9260
|
-
|
|
9261
|
-
|
|
9262
|
-
|
|
9263
|
-
|
|
9264
|
-
|
|
9265
|
-
|
|
9266
|
-
|
|
9267
|
-
|
|
9268
|
-
|
|
9269
|
-
|
|
9270
|
-
|
|
9271
|
-
|
|
9272
|
-
|
|
9273
|
-
|
|
9274
|
-
|
|
9275
|
-
|
|
9276
|
-
|
|
9277
|
-
|
|
9278
|
-
|
|
9279
|
-
|
|
9280
|
-
|
|
9281
|
-
name: _lt("Paste special"),
|
|
9282
|
-
sequence: 40,
|
|
9283
|
-
separator: true,
|
|
9284
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
9285
|
-
})
|
|
9286
|
-
.addChild("paste_value_only", ["paste_special"], {
|
|
9287
|
-
name: _lt("Paste value only"),
|
|
9288
|
-
sequence: 10,
|
|
9289
|
-
action: PASTE_VALUE_ACTION,
|
|
9290
|
-
})
|
|
9291
|
-
.addChild("paste_format_only", ["paste_special"], {
|
|
9292
|
-
name: _lt("Paste format only"),
|
|
9293
|
-
sequence: 20,
|
|
9294
|
-
action: PASTE_FORMAT_ACTION,
|
|
9295
|
-
})
|
|
9296
|
-
.add("add_row_before", {
|
|
9297
|
-
name: ROW_INSERT_ROWS_BEFORE_NAME,
|
|
9298
|
-
sequence: 50,
|
|
9299
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
9300
|
-
})
|
|
9301
|
-
.add("add_row_after", {
|
|
9302
|
-
name: ROW_INSERT_ROWS_AFTER_NAME,
|
|
9303
|
-
sequence: 60,
|
|
9304
|
-
action: INSERT_ROWS_AFTER_ACTION,
|
|
9305
|
-
})
|
|
9306
|
-
.add("delete_row", {
|
|
9307
|
-
name: REMOVE_ROWS_NAME,
|
|
9308
|
-
sequence: 70,
|
|
9309
|
-
action: REMOVE_ROWS_ACTION,
|
|
9310
|
-
})
|
|
9311
|
-
.add("clear_row", {
|
|
9312
|
-
name: DELETE_CONTENT_ROWS_NAME,
|
|
9313
|
-
sequence: 80,
|
|
9314
|
-
action: DELETE_CONTENT_ROWS_ACTION,
|
|
9315
|
-
})
|
|
9316
|
-
.add("hide_rows", {
|
|
9317
|
-
name: HIDE_ROWS_NAME,
|
|
9318
|
-
sequence: 85,
|
|
9319
|
-
action: HIDE_ROWS_ACTION,
|
|
9320
|
-
isVisible: (env) => {
|
|
9321
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9322
|
-
const hiddenRows = env.model.getters.getHiddenRowsGroups(sheetId).flat();
|
|
9323
|
-
return (env.model.getters.getNumberRows(sheetId) >
|
|
9324
|
-
hiddenRows.length + env.model.getters.getElementsFromSelection("ROW").length);
|
|
9325
|
-
},
|
|
9326
|
-
separator: true,
|
|
9327
|
-
})
|
|
9328
|
-
.add("unhide_rows", {
|
|
9329
|
-
name: _lt("Unhide rows"),
|
|
9330
|
-
sequence: 86,
|
|
9331
|
-
action: UNHIDE_ROWS_ACTION,
|
|
9332
|
-
isVisible: (env) => {
|
|
9333
|
-
const hiddenRows = env.model.getters
|
|
9334
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
9335
|
-
.flat();
|
|
9336
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
9337
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
9338
|
-
},
|
|
9339
|
-
separator: true,
|
|
9340
|
-
})
|
|
9341
|
-
.add("conditional_formatting", {
|
|
9342
|
-
name: _lt("Conditional formatting"),
|
|
9343
|
-
sequence: 90,
|
|
9344
|
-
action: OPEN_CF_SIDEPANEL_ACTION,
|
|
9283
|
+
var ACTION_EDIT = /*#__PURE__*/Object.freeze({
|
|
9284
|
+
__proto__: null,
|
|
9285
|
+
undo: undo,
|
|
9286
|
+
redo: redo,
|
|
9287
|
+
copy: copy,
|
|
9288
|
+
cut: cut,
|
|
9289
|
+
paste: paste,
|
|
9290
|
+
pasteSpecial: pasteSpecial,
|
|
9291
|
+
pasteSpecialValue: pasteSpecialValue,
|
|
9292
|
+
pasteSpecialFormat: pasteSpecialFormat,
|
|
9293
|
+
findAndReplace: findAndReplace,
|
|
9294
|
+
deleteValues: deleteValues,
|
|
9295
|
+
deleteRows: deleteRows,
|
|
9296
|
+
deleteRow: deleteRow,
|
|
9297
|
+
clearRows: clearRows,
|
|
9298
|
+
deleteCols: deleteCols,
|
|
9299
|
+
deleteCol: deleteCol,
|
|
9300
|
+
clearCols: clearCols,
|
|
9301
|
+
deleteCells: deleteCells,
|
|
9302
|
+
deleteCellShiftUp: deleteCellShiftUp,
|
|
9303
|
+
deleteCellShiftLeft: deleteCellShiftLeft,
|
|
9304
|
+
mergeCells: mergeCells
|
|
9345
9305
|
});
|
|
9346
9306
|
|
|
9347
|
-
function getSheetMenuRegistry(args) {
|
|
9348
|
-
const sheetMenuRegistry = new MenuItemRegistry();
|
|
9349
|
-
sheetMenuRegistry
|
|
9350
|
-
.add("delete", {
|
|
9351
|
-
name: _lt("Delete"),
|
|
9352
|
-
sequence: 10,
|
|
9353
|
-
isVisible: (env) => {
|
|
9354
|
-
return env.model.getters.getSheetIds().length > 1;
|
|
9355
|
-
},
|
|
9356
|
-
action: (env) => env.askConfirmation(_lt("Are you sure you want to delete this sheet ?"), () => {
|
|
9357
|
-
env.model.dispatch("DELETE_SHEET", { sheetId: env.model.getters.getActiveSheetId() });
|
|
9358
|
-
}),
|
|
9359
|
-
})
|
|
9360
|
-
.add("duplicate", {
|
|
9361
|
-
name: _lt("Duplicate"),
|
|
9362
|
-
sequence: 20,
|
|
9363
|
-
action: (env) => {
|
|
9364
|
-
const sheetIdFrom = env.model.getters.getActiveSheetId();
|
|
9365
|
-
const sheetIdTo = env.model.uuidGenerator.uuidv4();
|
|
9366
|
-
env.model.dispatch("DUPLICATE_SHEET", {
|
|
9367
|
-
sheetId: sheetIdFrom,
|
|
9368
|
-
sheetIdTo,
|
|
9369
|
-
});
|
|
9370
|
-
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom, sheetIdTo });
|
|
9371
|
-
},
|
|
9372
|
-
})
|
|
9373
|
-
.add("rename", {
|
|
9374
|
-
name: _lt("Rename"),
|
|
9375
|
-
sequence: 30,
|
|
9376
|
-
action: () => args.renameSheetCallback(),
|
|
9377
|
-
})
|
|
9378
|
-
.add("move_right", {
|
|
9379
|
-
name: _lt("Move right"),
|
|
9380
|
-
sequence: 40,
|
|
9381
|
-
isVisible: (env) => {
|
|
9382
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9383
|
-
const sheetIds = env.model.getters.getVisibleSheetIds();
|
|
9384
|
-
return sheetIds.indexOf(sheetId) !== sheetIds.length - 1;
|
|
9385
|
-
},
|
|
9386
|
-
action: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
9387
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
9388
|
-
delta: 1,
|
|
9389
|
-
}),
|
|
9390
|
-
})
|
|
9391
|
-
.add("move_left", {
|
|
9392
|
-
name: _lt("Move left"),
|
|
9393
|
-
sequence: 50,
|
|
9394
|
-
isVisible: (env) => {
|
|
9395
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
9396
|
-
return env.model.getters.getVisibleSheetIds()[0] !== sheetId;
|
|
9397
|
-
},
|
|
9398
|
-
action: (env) => env.model.dispatch("MOVE_SHEET", {
|
|
9399
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
9400
|
-
delta: -1,
|
|
9401
|
-
}),
|
|
9402
|
-
})
|
|
9403
|
-
.add("hide_sheet", {
|
|
9404
|
-
name: _lt("Hide sheet"),
|
|
9405
|
-
sequence: 60,
|
|
9406
|
-
isVisible: (env) => env.model.getters.getVisibleSheetIds().length !== 1,
|
|
9407
|
-
action: (env) => env.model.dispatch("HIDE_SHEET", { sheetId: env.model.getters.getActiveSheetId() }),
|
|
9408
|
-
});
|
|
9409
|
-
return sheetMenuRegistry;
|
|
9410
|
-
}
|
|
9411
|
-
|
|
9412
9307
|
//------------------------------------------------------------------------------
|
|
9413
9308
|
// Arg description DSL
|
|
9414
9309
|
//------------------------------------------------------------------------------
|
|
@@ -16169,6 +16064,593 @@
|
|
|
16169
16064
|
}
|
|
16170
16065
|
}
|
|
16171
16066
|
|
|
16067
|
+
const rowInsertRowBefore = {
|
|
16068
|
+
name: ROW_INSERT_ROWS_BEFORE_NAME,
|
|
16069
|
+
execute: INSERT_ROWS_BEFORE_ACTION,
|
|
16070
|
+
};
|
|
16071
|
+
const topBarInsertRowsBefore = {
|
|
16072
|
+
...rowInsertRowBefore,
|
|
16073
|
+
name: MENU_INSERT_ROWS_BEFORE_NAME,
|
|
16074
|
+
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16075
|
+
};
|
|
16076
|
+
const cellInsertRowsBefore = {
|
|
16077
|
+
...rowInsertRowBefore,
|
|
16078
|
+
name: CELL_INSERT_ROWS_BEFORE_NAME,
|
|
16079
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16080
|
+
};
|
|
16081
|
+
const rowInsertRowsAfter = {
|
|
16082
|
+
execute: INSERT_ROWS_AFTER_ACTION,
|
|
16083
|
+
name: ROW_INSERT_ROWS_AFTER_NAME,
|
|
16084
|
+
};
|
|
16085
|
+
const topBarInsertRowsAfter = {
|
|
16086
|
+
...rowInsertRowsAfter,
|
|
16087
|
+
name: MENU_INSERT_ROWS_AFTER_NAME,
|
|
16088
|
+
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16089
|
+
};
|
|
16090
|
+
const colInsertColsBefore = {
|
|
16091
|
+
name: COLUMN_INSERT_COLUMNS_BEFORE_NAME,
|
|
16092
|
+
execute: INSERT_COLUMNS_BEFORE_ACTION,
|
|
16093
|
+
};
|
|
16094
|
+
const topBarInsertColsBefore = {
|
|
16095
|
+
...colInsertColsBefore,
|
|
16096
|
+
name: MENU_INSERT_COLUMNS_BEFORE_NAME,
|
|
16097
|
+
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16098
|
+
};
|
|
16099
|
+
const cellInsertColsBefore = {
|
|
16100
|
+
...colInsertColsBefore,
|
|
16101
|
+
name: CELL_INSERT_COLUMNS_BEFORE_NAME,
|
|
16102
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16103
|
+
};
|
|
16104
|
+
const colInsertColsAfter = {
|
|
16105
|
+
name: COLUMN_INSERT_COLUMNS_AFTER_NAME,
|
|
16106
|
+
execute: INSERT_COLUMNS_AFTER_ACTION,
|
|
16107
|
+
};
|
|
16108
|
+
const topBarInsertColsAfter = {
|
|
16109
|
+
...colInsertColsAfter,
|
|
16110
|
+
name: MENU_INSERT_COLUMNS_AFTER_NAME,
|
|
16111
|
+
execute: INSERT_COLUMNS_AFTER_ACTION,
|
|
16112
|
+
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16113
|
+
};
|
|
16114
|
+
const insertCell = {
|
|
16115
|
+
name: _lt("Insert cells"),
|
|
16116
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16117
|
+
};
|
|
16118
|
+
const insertCellShiftDown = {
|
|
16119
|
+
name: _lt("Insert cells and shift down"),
|
|
16120
|
+
execute: INSERT_CELL_SHIFT_DOWN,
|
|
16121
|
+
};
|
|
16122
|
+
const insertCellShiftRight = {
|
|
16123
|
+
name: _lt("Insert cells and shift right"),
|
|
16124
|
+
execute: INSERT_CELL_SHIFT_RIGHT,
|
|
16125
|
+
};
|
|
16126
|
+
const insertChart = {
|
|
16127
|
+
name: _lt("Chart"),
|
|
16128
|
+
execute: CREATE_CHART,
|
|
16129
|
+
};
|
|
16130
|
+
const insertImage = {
|
|
16131
|
+
name: _lt("Image"),
|
|
16132
|
+
execute: CREATE_IMAGE,
|
|
16133
|
+
isVisible: (env) => env.imageProvider !== undefined,
|
|
16134
|
+
};
|
|
16135
|
+
const insertFunction = {
|
|
16136
|
+
name: _lt("Function"),
|
|
16137
|
+
};
|
|
16138
|
+
const insertFunctionSum = {
|
|
16139
|
+
name: _lt("SUM"),
|
|
16140
|
+
execute: (env) => env.startCellEdition(`=SUM(`),
|
|
16141
|
+
};
|
|
16142
|
+
const insertFunctionAverage = {
|
|
16143
|
+
name: _lt("AVERAGE"),
|
|
16144
|
+
execute: (env) => env.startCellEdition(`=AVERAGE(`),
|
|
16145
|
+
};
|
|
16146
|
+
const insertFunctionCount = {
|
|
16147
|
+
name: _lt("COUNT"),
|
|
16148
|
+
execute: (env) => env.startCellEdition(`=COUNT(`),
|
|
16149
|
+
};
|
|
16150
|
+
const insertFunctionMax = {
|
|
16151
|
+
name: _lt("MAX"),
|
|
16152
|
+
execute: (env) => env.startCellEdition(`=MAX(`),
|
|
16153
|
+
};
|
|
16154
|
+
const insertFunctionMin = {
|
|
16155
|
+
name: _lt("MIN"),
|
|
16156
|
+
execute: (env) => env.startCellEdition(`=MIN(`),
|
|
16157
|
+
};
|
|
16158
|
+
const categorieFunctionAll = {
|
|
16159
|
+
name: _lt("All"),
|
|
16160
|
+
children: allFunctionListMenuBuilder(),
|
|
16161
|
+
};
|
|
16162
|
+
function allFunctionListMenuBuilder() {
|
|
16163
|
+
const fnNames = functionRegistry.getKeys();
|
|
16164
|
+
return createFormulaFunctions(fnNames);
|
|
16165
|
+
}
|
|
16166
|
+
const categoriesFunctionListMenuBuilder = () => {
|
|
16167
|
+
const functions = functionRegistry.content;
|
|
16168
|
+
const categories = [...new Set(functionRegistry.getAll().map((fn) => fn.category))].filter(isDefined$1);
|
|
16169
|
+
return categories.sort().map((category, i) => {
|
|
16170
|
+
const functionsInCategory = Object.keys(functions).filter((key) => functions[key].category === category);
|
|
16171
|
+
return {
|
|
16172
|
+
name: category,
|
|
16173
|
+
children: createFormulaFunctions(functionsInCategory),
|
|
16174
|
+
};
|
|
16175
|
+
});
|
|
16176
|
+
};
|
|
16177
|
+
const insertLink = {
|
|
16178
|
+
name: _lt("Link"),
|
|
16179
|
+
execute: INSERT_LINK,
|
|
16180
|
+
};
|
|
16181
|
+
const insertSheet = {
|
|
16182
|
+
name: _lt("New sheet"),
|
|
16183
|
+
execute: CREATE_SHEET_ACTION,
|
|
16184
|
+
};
|
|
16185
|
+
function createFormulaFunctions(fnNames) {
|
|
16186
|
+
return fnNames.sort().map((fnName, i) => {
|
|
16187
|
+
return {
|
|
16188
|
+
name: fnName,
|
|
16189
|
+
sequence: i * 10,
|
|
16190
|
+
execute: (env) => env.startCellEdition(`=${fnName}(`),
|
|
16191
|
+
};
|
|
16192
|
+
});
|
|
16193
|
+
}
|
|
16194
|
+
|
|
16195
|
+
//------------------------------------------------------------------------------
|
|
16196
|
+
// Context Menu Registry
|
|
16197
|
+
//------------------------------------------------------------------------------
|
|
16198
|
+
const cellMenuRegistry = new MenuItemRegistry();
|
|
16199
|
+
cellMenuRegistry
|
|
16200
|
+
.add("cut", {
|
|
16201
|
+
...cut,
|
|
16202
|
+
sequence: 10,
|
|
16203
|
+
})
|
|
16204
|
+
.add("copy", {
|
|
16205
|
+
...copy,
|
|
16206
|
+
sequence: 20,
|
|
16207
|
+
})
|
|
16208
|
+
.add("paste", {
|
|
16209
|
+
...paste,
|
|
16210
|
+
sequence: 30,
|
|
16211
|
+
})
|
|
16212
|
+
.add("paste_special", {
|
|
16213
|
+
...pasteSpecial,
|
|
16214
|
+
sequence: 40,
|
|
16215
|
+
separator: true,
|
|
16216
|
+
})
|
|
16217
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16218
|
+
...pasteSpecialValue,
|
|
16219
|
+
sequence: 10,
|
|
16220
|
+
})
|
|
16221
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16222
|
+
...pasteSpecialFormat,
|
|
16223
|
+
sequence: 20,
|
|
16224
|
+
})
|
|
16225
|
+
.add("add_row_before", {
|
|
16226
|
+
...cellInsertRowsBefore,
|
|
16227
|
+
sequence: 70,
|
|
16228
|
+
})
|
|
16229
|
+
.add("add_column_before", {
|
|
16230
|
+
...cellInsertColsBefore,
|
|
16231
|
+
sequence: 90,
|
|
16232
|
+
})
|
|
16233
|
+
.add("insert_cell", {
|
|
16234
|
+
...insertCell,
|
|
16235
|
+
sequence: 100,
|
|
16236
|
+
separator: true,
|
|
16237
|
+
})
|
|
16238
|
+
.addChild("insert_cell_down", ["insert_cell"], {
|
|
16239
|
+
...insertCellShiftDown,
|
|
16240
|
+
name: _lt("Shift down"),
|
|
16241
|
+
sequence: 10,
|
|
16242
|
+
})
|
|
16243
|
+
.addChild("insert_cell_right", ["insert_cell"], {
|
|
16244
|
+
...insertCellShiftRight,
|
|
16245
|
+
name: _lt("Shift right"),
|
|
16246
|
+
sequence: 20,
|
|
16247
|
+
})
|
|
16248
|
+
.add("delete_row", {
|
|
16249
|
+
...deleteRow,
|
|
16250
|
+
sequence: 110,
|
|
16251
|
+
})
|
|
16252
|
+
.add("delete_column", {
|
|
16253
|
+
...deleteCol,
|
|
16254
|
+
sequence: 120,
|
|
16255
|
+
})
|
|
16256
|
+
.add("delete_cell", {
|
|
16257
|
+
...deleteCells,
|
|
16258
|
+
sequence: 130,
|
|
16259
|
+
})
|
|
16260
|
+
.addChild("delete_cell_up", ["delete_cell"], {
|
|
16261
|
+
...deleteCellShiftUp,
|
|
16262
|
+
name: _lt("Shift up"),
|
|
16263
|
+
sequence: 10,
|
|
16264
|
+
})
|
|
16265
|
+
.addChild("delete_cell_left", ["delete_cell"], {
|
|
16266
|
+
...deleteCellShiftLeft,
|
|
16267
|
+
name: _lt("Shift left"),
|
|
16268
|
+
sequence: 20,
|
|
16269
|
+
})
|
|
16270
|
+
.add("insert_link", {
|
|
16271
|
+
...insertLink,
|
|
16272
|
+
name: _lt("Insert link"),
|
|
16273
|
+
sequence: 150,
|
|
16274
|
+
separator: true,
|
|
16275
|
+
});
|
|
16276
|
+
|
|
16277
|
+
const sortRange = {
|
|
16278
|
+
name: _lt("Sort range"),
|
|
16279
|
+
isVisible: IS_ONLY_ONE_RANGE,
|
|
16280
|
+
};
|
|
16281
|
+
const sortAscending = {
|
|
16282
|
+
name: _lt("Ascending (A ⟶ Z)"),
|
|
16283
|
+
execute: SORT_CELLS_ASCENDING,
|
|
16284
|
+
};
|
|
16285
|
+
const sortDescending = {
|
|
16286
|
+
name: _lt("Descending (Z ⟶ A)"),
|
|
16287
|
+
execute: SORT_CELLS_DESCENDING,
|
|
16288
|
+
};
|
|
16289
|
+
const addDataFilter = {
|
|
16290
|
+
name: _lt("Create filter"),
|
|
16291
|
+
execute: FILTERS_CREATE_FILTER_TABLE,
|
|
16292
|
+
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
16293
|
+
isEnabled: (env) => SELECTION_IS_CONTINUOUS(env),
|
|
16294
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16295
|
+
};
|
|
16296
|
+
const removeDataFilter = {
|
|
16297
|
+
name: _lt("Remove filter"),
|
|
16298
|
+
execute: FILTERS_REMOVE_FILTER_TABLE,
|
|
16299
|
+
isVisible: SELECTION_CONTAINS_FILTER,
|
|
16300
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16301
|
+
};
|
|
16302
|
+
|
|
16303
|
+
const formatNumberAutomatic = {
|
|
16304
|
+
name: _lt("Automatic"),
|
|
16305
|
+
execute: FORMAT_AUTOMATIC_ACTION,
|
|
16306
|
+
isActive: (env) => isAutomaticFormatSelected(env),
|
|
16307
|
+
};
|
|
16308
|
+
const formatNumberNumber = {
|
|
16309
|
+
name: _lt("Number"),
|
|
16310
|
+
description: "1,000.12",
|
|
16311
|
+
execute: FORMAT_NUMBER_ACTION,
|
|
16312
|
+
isActive: (env) => isFormatSelected(env, "#,##0.00"),
|
|
16313
|
+
};
|
|
16314
|
+
const formatPercent = {
|
|
16315
|
+
name: _lt("Format as percent"),
|
|
16316
|
+
execute: FORMAT_PERCENT_ACTION,
|
|
16317
|
+
icon: "o-spreadsheet-Icon.PERCENT",
|
|
16318
|
+
};
|
|
16319
|
+
const formatNumberPercent = {
|
|
16320
|
+
name: _lt("Percent"),
|
|
16321
|
+
description: "10.12%",
|
|
16322
|
+
execute: FORMAT_PERCENT_ACTION,
|
|
16323
|
+
isActive: (env) => isFormatSelected(env, "0.00%"),
|
|
16324
|
+
};
|
|
16325
|
+
const formatNumberCurrency = {
|
|
16326
|
+
name: _lt("Currency"),
|
|
16327
|
+
description: "$1,000.12",
|
|
16328
|
+
execute: FORMAT_CURRENCY_ACTION,
|
|
16329
|
+
isActive: (env) => isFormatSelected(env, "[$$]#,##0.00"),
|
|
16330
|
+
};
|
|
16331
|
+
const formatNumberCurrencyRounded = {
|
|
16332
|
+
name: _lt("Currency rounded"),
|
|
16333
|
+
description: "$1,000",
|
|
16334
|
+
execute: FORMAT_CURRENCY_ROUNDED_ACTION,
|
|
16335
|
+
isActive: (env) => isFormatSelected(env, "[$$]#,##0"),
|
|
16336
|
+
};
|
|
16337
|
+
const formatCustomCurrency = {
|
|
16338
|
+
name: _lt("Custom currency"),
|
|
16339
|
+
isVisible: (env) => env.loadCurrencies !== undefined,
|
|
16340
|
+
execute: OPEN_CUSTOM_CURRENCY_SIDEPANEL_ACTION,
|
|
16341
|
+
};
|
|
16342
|
+
const formatNumberDate = {
|
|
16343
|
+
name: _lt("Date"),
|
|
16344
|
+
description: "9/26/2008",
|
|
16345
|
+
execute: FORMAT_DATE_ACTION,
|
|
16346
|
+
isActive: (env) => isFormatSelected(env, "m/d/yyyy"),
|
|
16347
|
+
};
|
|
16348
|
+
const formatNumberTime = {
|
|
16349
|
+
name: _lt("Time"),
|
|
16350
|
+
description: "10:43:00 PM",
|
|
16351
|
+
execute: FORMAT_TIME_ACTION,
|
|
16352
|
+
isActive: (env) => isFormatSelected(env, "hh:mm:ss a"),
|
|
16353
|
+
};
|
|
16354
|
+
const formatNumberDateTime = {
|
|
16355
|
+
name: _lt("Date time"),
|
|
16356
|
+
description: "9/26/2008 22:43:00",
|
|
16357
|
+
execute: FORMAT_DATE_TIME_ACTION,
|
|
16358
|
+
isActive: (env) => isFormatSelected(env, "m/d/yyyy hh:mm:ss"),
|
|
16359
|
+
};
|
|
16360
|
+
const formatNumberDuration = {
|
|
16361
|
+
name: _lt("Duration"),
|
|
16362
|
+
description: "27:51:38",
|
|
16363
|
+
execute: FORMAT_DURATION_ACTION,
|
|
16364
|
+
isActive: (env) => isFormatSelected(env, "hhhh:mm:ss"),
|
|
16365
|
+
};
|
|
16366
|
+
const incraseDecimalPlaces = {
|
|
16367
|
+
name: _lt("Increase decimal places"),
|
|
16368
|
+
icon: "o-spreadsheet-Icon.INCREASE_DECIMAL",
|
|
16369
|
+
execute: (env) => env.model.dispatch("SET_DECIMAL", {
|
|
16370
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16371
|
+
target: env.model.getters.getSelectedZones(),
|
|
16372
|
+
step: 1,
|
|
16373
|
+
}),
|
|
16374
|
+
};
|
|
16375
|
+
const decraseDecimalPlaces = {
|
|
16376
|
+
name: _lt("Decrease decimal places"),
|
|
16377
|
+
icon: "o-spreadsheet-Icon.DECRASE_DECIMAL",
|
|
16378
|
+
execute: (env) => env.model.dispatch("SET_DECIMAL", {
|
|
16379
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16380
|
+
target: env.model.getters.getSelectedZones(),
|
|
16381
|
+
step: -1,
|
|
16382
|
+
}),
|
|
16383
|
+
};
|
|
16384
|
+
const formatBold = {
|
|
16385
|
+
name: _lt("Bold"),
|
|
16386
|
+
description: "Ctrl+B",
|
|
16387
|
+
execute: FORMAT_BOLD_ACTION,
|
|
16388
|
+
icon: "o-spreadsheet-Icon.BOLD",
|
|
16389
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().bold,
|
|
16390
|
+
};
|
|
16391
|
+
const formatItalic = {
|
|
16392
|
+
name: _lt("Italic"),
|
|
16393
|
+
description: "Ctrl+I",
|
|
16394
|
+
execute: FORMAT_ITALIC_ACTION,
|
|
16395
|
+
icon: "o-spreadsheet-Icon.ITALIC",
|
|
16396
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().italic,
|
|
16397
|
+
};
|
|
16398
|
+
const formatUnderline = {
|
|
16399
|
+
name: _lt("Underline"),
|
|
16400
|
+
description: "Ctrl+U",
|
|
16401
|
+
execute: FORMAT_UNDERLINE_ACTION,
|
|
16402
|
+
icon: "o-spreadsheet-Icon.UNDERLINE",
|
|
16403
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().underline,
|
|
16404
|
+
};
|
|
16405
|
+
const formatStrikethrough = {
|
|
16406
|
+
name: _lt("Strikethrough"),
|
|
16407
|
+
execute: FORMAT_STRIKETHROUGH_ACTION,
|
|
16408
|
+
icon: "o-spreadsheet-Icon.STRIKE",
|
|
16409
|
+
isActive: (env) => !!env.model.getters.getCurrentStyle().strikethrough,
|
|
16410
|
+
};
|
|
16411
|
+
const formatFontSize = {
|
|
16412
|
+
name: _lt("Font size"),
|
|
16413
|
+
children: fontSizeMenuBuilder(),
|
|
16414
|
+
};
|
|
16415
|
+
const formatAlignment = {
|
|
16416
|
+
name: _lt("Alignment"),
|
|
16417
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16418
|
+
};
|
|
16419
|
+
const formatAlignmentHorizontal = {
|
|
16420
|
+
name: _lt("Horizontal align"),
|
|
16421
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16422
|
+
};
|
|
16423
|
+
const formatAlignmentLeft = {
|
|
16424
|
+
name: _lt("Left"),
|
|
16425
|
+
execute: (env) => setStyle(env, { align: "left" }),
|
|
16426
|
+
isActive: (env) => getHorizontalAlign(env) === "left",
|
|
16427
|
+
icon: "o-spreadsheet-Icon.ALIGN_LEFT",
|
|
16428
|
+
};
|
|
16429
|
+
const formatAlignmentCenter = {
|
|
16430
|
+
name: _lt("Center"),
|
|
16431
|
+
execute: (env) => setStyle(env, { align: "center" }),
|
|
16432
|
+
isActive: (env) => getHorizontalAlign(env) === "center",
|
|
16433
|
+
icon: "o-spreadsheet-Icon.ALIGN_CENTER",
|
|
16434
|
+
};
|
|
16435
|
+
const formatAlignmentRight = {
|
|
16436
|
+
name: _lt("Right"),
|
|
16437
|
+
execute: (env) => setStyle(env, { align: "right" }),
|
|
16438
|
+
isActive: (env) => getHorizontalAlign(env) === "right",
|
|
16439
|
+
icon: "o-spreadsheet-Icon.ALIGN_RIGHT",
|
|
16440
|
+
};
|
|
16441
|
+
const formatAlignmentVertical = {
|
|
16442
|
+
name: _lt("Vertical align"),
|
|
16443
|
+
icon: "o-spreadsheet-Icon.ALIGN_MIDDLE",
|
|
16444
|
+
};
|
|
16445
|
+
const formatAlignmentTop = {
|
|
16446
|
+
name: _lt("Top"),
|
|
16447
|
+
execute: (env) => setStyle(env, { verticalAlign: "top" }),
|
|
16448
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "top",
|
|
16449
|
+
icon: "o-spreadsheet-Icon.ALIGN_TOP",
|
|
16450
|
+
};
|
|
16451
|
+
const formatAlignmentMiddle = {
|
|
16452
|
+
name: _lt("Middle"),
|
|
16453
|
+
execute: (env) => setStyle(env, { verticalAlign: "middle" }),
|
|
16454
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "middle",
|
|
16455
|
+
icon: "o-spreadsheet-Icon.ALIGN_MIDDLE",
|
|
16456
|
+
};
|
|
16457
|
+
const formatAlignmentBottom = {
|
|
16458
|
+
name: _lt("Bottom"),
|
|
16459
|
+
execute: (env) => setStyle(env, { verticalAlign: "bottom" }),
|
|
16460
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().verticalAlign || DEFAULT_VERTICAL_ALIGN) === "bottom",
|
|
16461
|
+
icon: "o-spreadsheet-Icon.ALIGN_BOTTOM",
|
|
16462
|
+
};
|
|
16463
|
+
const formatWrapping = {
|
|
16464
|
+
name: _lt("Wrapping"),
|
|
16465
|
+
icon: "o-spreadsheet-Icon.WRAPPING_OVERFLOW",
|
|
16466
|
+
};
|
|
16467
|
+
const formatWrappingOverflow = {
|
|
16468
|
+
name: _lt("Overflow"),
|
|
16469
|
+
execute: (env) => setStyle(env, { wrapping: "overflow" }),
|
|
16470
|
+
isActive: (env) => (env.model.getters.getCurrentStyle().wrapping || "overflow") === "overflow",
|
|
16471
|
+
icon: "o-spreadsheet-Icon.WRAPPING_OVERFLOW",
|
|
16472
|
+
};
|
|
16473
|
+
const formatWrappingWrap = {
|
|
16474
|
+
name: _lt("Wrap"),
|
|
16475
|
+
execute: (env) => setStyle(env, { wrapping: "wrap" }),
|
|
16476
|
+
isActive: (env) => env.model.getters.getCurrentStyle().wrapping === "wrap",
|
|
16477
|
+
icon: "o-spreadsheet-Icon.WRAPPING_WRAP",
|
|
16478
|
+
};
|
|
16479
|
+
const formatWrappingClip = {
|
|
16480
|
+
name: _lt("Clip"),
|
|
16481
|
+
execute: (env) => setStyle(env, { wrapping: "clip" }),
|
|
16482
|
+
isActive: (env) => env.model.getters.getCurrentStyle().wrapping === "clip",
|
|
16483
|
+
icon: "o-spreadsheet-Icon.WRAPPING_CLIP",
|
|
16484
|
+
};
|
|
16485
|
+
const textColor = {
|
|
16486
|
+
name: _lt("Text Color"),
|
|
16487
|
+
icon: "o-spreadsheet-Icon.TEXT_COLOR",
|
|
16488
|
+
};
|
|
16489
|
+
const fillColor = {
|
|
16490
|
+
name: _lt("Fill Color"),
|
|
16491
|
+
icon: "o-spreadsheet-Icon.FILL_COLOR",
|
|
16492
|
+
};
|
|
16493
|
+
const formatCF = {
|
|
16494
|
+
name: _lt("Conditional formatting"),
|
|
16495
|
+
execute: OPEN_CF_SIDEPANEL_ACTION,
|
|
16496
|
+
};
|
|
16497
|
+
const paintFormat = {
|
|
16498
|
+
name: _lt("Paint Format"),
|
|
16499
|
+
execute: (env) => env.model.dispatch("ACTIVATE_PAINT_FORMAT", {
|
|
16500
|
+
target: env.model.getters.getSelectedZones(),
|
|
16501
|
+
}),
|
|
16502
|
+
icon: "o-spreadsheet-Icon.PAINT_FORMAT",
|
|
16503
|
+
isActive: (env) => env.model.getters.isPaintingFormat(),
|
|
16504
|
+
};
|
|
16505
|
+
const clearFormat = {
|
|
16506
|
+
name: _lt("Clear formatting"),
|
|
16507
|
+
execute: FORMAT_CLEARFORMAT_ACTION,
|
|
16508
|
+
icon: "o-spreadsheet-Icon.CLEAR_FORMAT",
|
|
16509
|
+
};
|
|
16510
|
+
const borders = {
|
|
16511
|
+
name: _lt("Borders"),
|
|
16512
|
+
icon: "o-spreadsheet-Icon.BORDERS",
|
|
16513
|
+
};
|
|
16514
|
+
const bordersAll = {
|
|
16515
|
+
name: _lt("All borders"),
|
|
16516
|
+
execute: (env) => setBorder(env, "all"),
|
|
16517
|
+
icon: "o-spreadsheet-Icon.BORDERS",
|
|
16518
|
+
};
|
|
16519
|
+
const bordersInner = {
|
|
16520
|
+
name: _lt("Inner borders"),
|
|
16521
|
+
execute: (env) => setBorder(env, "hv"),
|
|
16522
|
+
icon: "o-spreadsheet-Icon.BORDER_HV",
|
|
16523
|
+
};
|
|
16524
|
+
const bordersHorizontal = {
|
|
16525
|
+
name: _lt("Horizontal borders"),
|
|
16526
|
+
execute: (env) => setBorder(env, "h"),
|
|
16527
|
+
icon: "o-spreadsheet-Icon.BORDER_H",
|
|
16528
|
+
};
|
|
16529
|
+
const bordersVertical = {
|
|
16530
|
+
name: _lt("Vertical borders"),
|
|
16531
|
+
execute: (env) => setBorder(env, "v"),
|
|
16532
|
+
icon: "o-spreadsheet-Icon.BORDER_V",
|
|
16533
|
+
};
|
|
16534
|
+
const bordersExternal = {
|
|
16535
|
+
name: _lt("External borders"),
|
|
16536
|
+
execute: (env) => setBorder(env, "external"),
|
|
16537
|
+
icon: "o-spreadsheet-Icon.BORDER_EXTERNAL",
|
|
16538
|
+
};
|
|
16539
|
+
const bordersLeft = {
|
|
16540
|
+
name: _lt("Left borders"),
|
|
16541
|
+
execute: (env) => setBorder(env, "left"),
|
|
16542
|
+
icon: "o-spreadsheet-Icon.BORDER_LEFT",
|
|
16543
|
+
};
|
|
16544
|
+
const bordersTop = {
|
|
16545
|
+
name: _lt("Top borders"),
|
|
16546
|
+
execute: (env) => setBorder(env, "top"),
|
|
16547
|
+
icon: "o-spreadsheet-Icon.BORDER_TOP",
|
|
16548
|
+
};
|
|
16549
|
+
const bordersRight = {
|
|
16550
|
+
name: _lt("Right borders"),
|
|
16551
|
+
execute: (env) => setBorder(env, "right"),
|
|
16552
|
+
icon: "o-spreadsheet-Icon.BORDER_RIGHT",
|
|
16553
|
+
};
|
|
16554
|
+
const bordersBottom = {
|
|
16555
|
+
name: _lt("Bottom borders"),
|
|
16556
|
+
execute: (env) => setBorder(env, "bottom"),
|
|
16557
|
+
icon: "o-spreadsheet-Icon.BORDER_BOTTOM",
|
|
16558
|
+
};
|
|
16559
|
+
const bordersClear = {
|
|
16560
|
+
name: _lt("Clear borders"),
|
|
16561
|
+
execute: (env) => setBorder(env, "clear"),
|
|
16562
|
+
icon: "o-spreadsheet-Icon.BORDER_CLEAR",
|
|
16563
|
+
};
|
|
16564
|
+
function fontSizeMenuBuilder() {
|
|
16565
|
+
return FONT_SIZES.map((fs) => {
|
|
16566
|
+
return {
|
|
16567
|
+
name: fs.toString(),
|
|
16568
|
+
sequence: fs,
|
|
16569
|
+
id: `font_size_${fs}`,
|
|
16570
|
+
execute: (env) => setStyle(env, { fontSize: fs }),
|
|
16571
|
+
isActive: (env) => isFontSizeSelected(env, fs),
|
|
16572
|
+
};
|
|
16573
|
+
});
|
|
16574
|
+
}
|
|
16575
|
+
function isAutomaticFormatSelected(env) {
|
|
16576
|
+
const activeCell = env.model.getters.getActiveCell();
|
|
16577
|
+
return !activeCell || !activeCell.format;
|
|
16578
|
+
}
|
|
16579
|
+
function isFormatSelected(env, format) {
|
|
16580
|
+
const activeCell = env.model.getters.getActiveCell();
|
|
16581
|
+
return activeCell && activeCell.format === format;
|
|
16582
|
+
}
|
|
16583
|
+
function isFontSizeSelected(env, fontSize) {
|
|
16584
|
+
const currentFontSize = env.model.getters.getCurrentStyle().fontSize || DEFAULT_FONT_SIZE;
|
|
16585
|
+
return currentFontSize === fontSize;
|
|
16586
|
+
}
|
|
16587
|
+
function setBorder(env, command) {
|
|
16588
|
+
env.model.dispatch("SET_FORMATTING", {
|
|
16589
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16590
|
+
target: env.model.getters.getSelectedZones(),
|
|
16591
|
+
border: command,
|
|
16592
|
+
});
|
|
16593
|
+
}
|
|
16594
|
+
function getHorizontalAlign(env) {
|
|
16595
|
+
const style = env.model.getters.getCurrentStyle();
|
|
16596
|
+
if (style.align) {
|
|
16597
|
+
return style.align;
|
|
16598
|
+
}
|
|
16599
|
+
const cell = env.model.getters.getActiveCell();
|
|
16600
|
+
return cell.defaultAlign;
|
|
16601
|
+
}
|
|
16602
|
+
|
|
16603
|
+
var ACTION_FORMAT = /*#__PURE__*/Object.freeze({
|
|
16604
|
+
__proto__: null,
|
|
16605
|
+
formatNumberAutomatic: formatNumberAutomatic,
|
|
16606
|
+
formatNumberNumber: formatNumberNumber,
|
|
16607
|
+
formatPercent: formatPercent,
|
|
16608
|
+
formatNumberPercent: formatNumberPercent,
|
|
16609
|
+
formatNumberCurrency: formatNumberCurrency,
|
|
16610
|
+
formatNumberCurrencyRounded: formatNumberCurrencyRounded,
|
|
16611
|
+
formatCustomCurrency: formatCustomCurrency,
|
|
16612
|
+
formatNumberDate: formatNumberDate,
|
|
16613
|
+
formatNumberTime: formatNumberTime,
|
|
16614
|
+
formatNumberDateTime: formatNumberDateTime,
|
|
16615
|
+
formatNumberDuration: formatNumberDuration,
|
|
16616
|
+
incraseDecimalPlaces: incraseDecimalPlaces,
|
|
16617
|
+
decraseDecimalPlaces: decraseDecimalPlaces,
|
|
16618
|
+
formatBold: formatBold,
|
|
16619
|
+
formatItalic: formatItalic,
|
|
16620
|
+
formatUnderline: formatUnderline,
|
|
16621
|
+
formatStrikethrough: formatStrikethrough,
|
|
16622
|
+
formatFontSize: formatFontSize,
|
|
16623
|
+
formatAlignment: formatAlignment,
|
|
16624
|
+
formatAlignmentHorizontal: formatAlignmentHorizontal,
|
|
16625
|
+
formatAlignmentLeft: formatAlignmentLeft,
|
|
16626
|
+
formatAlignmentCenter: formatAlignmentCenter,
|
|
16627
|
+
formatAlignmentRight: formatAlignmentRight,
|
|
16628
|
+
formatAlignmentVertical: formatAlignmentVertical,
|
|
16629
|
+
formatAlignmentTop: formatAlignmentTop,
|
|
16630
|
+
formatAlignmentMiddle: formatAlignmentMiddle,
|
|
16631
|
+
formatAlignmentBottom: formatAlignmentBottom,
|
|
16632
|
+
formatWrapping: formatWrapping,
|
|
16633
|
+
formatWrappingOverflow: formatWrappingOverflow,
|
|
16634
|
+
formatWrappingWrap: formatWrappingWrap,
|
|
16635
|
+
formatWrappingClip: formatWrappingClip,
|
|
16636
|
+
textColor: textColor,
|
|
16637
|
+
fillColor: fillColor,
|
|
16638
|
+
formatCF: formatCF,
|
|
16639
|
+
paintFormat: paintFormat,
|
|
16640
|
+
clearFormat: clearFormat,
|
|
16641
|
+
borders: borders,
|
|
16642
|
+
bordersAll: bordersAll,
|
|
16643
|
+
bordersInner: bordersInner,
|
|
16644
|
+
bordersHorizontal: bordersHorizontal,
|
|
16645
|
+
bordersVertical: bordersVertical,
|
|
16646
|
+
bordersExternal: bordersExternal,
|
|
16647
|
+
bordersLeft: bordersLeft,
|
|
16648
|
+
bordersTop: bordersTop,
|
|
16649
|
+
bordersRight: bordersRight,
|
|
16650
|
+
bordersBottom: bordersBottom,
|
|
16651
|
+
bordersClear: bordersClear
|
|
16652
|
+
});
|
|
16653
|
+
|
|
16172
16654
|
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
16173
16655
|
const sheetId = env.model.getters.getActiveSheetId();
|
|
16174
16656
|
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
@@ -16178,524 +16660,740 @@
|
|
|
16178
16660
|
}
|
|
16179
16661
|
}
|
|
16180
16662
|
|
|
16181
|
-
const
|
|
16182
|
-
|
|
16183
|
-
|
|
16184
|
-
|
|
16185
|
-
|
|
16186
|
-
|
|
16187
|
-
|
|
16188
|
-
|
|
16189
|
-
|
|
16190
|
-
|
|
16191
|
-
|
|
16192
|
-
|
|
16193
|
-
|
|
16194
|
-
|
|
16195
|
-
|
|
16196
|
-
|
|
16197
|
-
|
|
16663
|
+
const hideCols = {
|
|
16664
|
+
name: HIDE_COLUMNS_NAME,
|
|
16665
|
+
execute: HIDE_COLUMNS_ACTION,
|
|
16666
|
+
isVisible: (env) => {
|
|
16667
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16668
|
+
const hiddenCols = env.model.getters.getHiddenColsGroups(sheetId).flat();
|
|
16669
|
+
return (env.model.getters.getNumberCols(sheetId) >
|
|
16670
|
+
hiddenCols.length + env.model.getters.getElementsFromSelection("COL").length);
|
|
16671
|
+
},
|
|
16672
|
+
};
|
|
16673
|
+
const unhideCols = {
|
|
16674
|
+
name: _lt("Unhide columns"),
|
|
16675
|
+
execute: UNHIDE_COLUMNS_ACTION,
|
|
16676
|
+
isVisible: (env) => {
|
|
16677
|
+
const hiddenCols = env.model.getters
|
|
16678
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
16679
|
+
.flat();
|
|
16680
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
16681
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
16682
|
+
},
|
|
16683
|
+
};
|
|
16684
|
+
const unhideAllCols = {
|
|
16685
|
+
name: _lt("Unhide all columns"),
|
|
16686
|
+
execute: UNHIDE_ALL_COLUMNS_ACTION,
|
|
16687
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16688
|
+
};
|
|
16689
|
+
const hideRows = {
|
|
16690
|
+
name: HIDE_ROWS_NAME,
|
|
16691
|
+
execute: HIDE_ROWS_ACTION,
|
|
16692
|
+
isVisible: (env) => {
|
|
16693
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16694
|
+
const hiddenRows = env.model.getters.getHiddenRowsGroups(sheetId).flat();
|
|
16695
|
+
return (env.model.getters.getNumberRows(sheetId) >
|
|
16696
|
+
hiddenRows.length + env.model.getters.getElementsFromSelection("ROW").length);
|
|
16697
|
+
},
|
|
16698
|
+
};
|
|
16699
|
+
const unhideRows = {
|
|
16700
|
+
name: _lt("Unhide rows"),
|
|
16701
|
+
execute: UNHIDE_ROWS_ACTION,
|
|
16702
|
+
isVisible: (env) => {
|
|
16703
|
+
const hiddenRows = env.model.getters
|
|
16704
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
16705
|
+
.flat();
|
|
16706
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
16707
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
16708
|
+
},
|
|
16709
|
+
};
|
|
16710
|
+
const unhideAllRows = {
|
|
16711
|
+
name: _lt("Unhide all rows"),
|
|
16712
|
+
execute: UNHIDE_ALL_ROWS_ACTION,
|
|
16713
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16714
|
+
};
|
|
16715
|
+
const unFreezePane = {
|
|
16716
|
+
name: _lt("Unfreeze"),
|
|
16717
|
+
isVisible: (env) => {
|
|
16718
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
16719
|
+
return xSplit + ySplit > 0;
|
|
16720
|
+
},
|
|
16721
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
16722
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16723
|
+
}),
|
|
16724
|
+
};
|
|
16725
|
+
const freezePane = {
|
|
16726
|
+
name: _lt("Freeze"),
|
|
16727
|
+
};
|
|
16728
|
+
const unFreezeRows = {
|
|
16729
|
+
name: _lt("No rows"),
|
|
16730
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
16731
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16732
|
+
}),
|
|
16733
|
+
isReadonlyAllowed: true,
|
|
16734
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
16735
|
+
};
|
|
16736
|
+
const freezeFirstRow = {
|
|
16737
|
+
name: _lt("1 row"),
|
|
16738
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
16739
|
+
isReadonlyAllowed: true,
|
|
16740
|
+
};
|
|
16741
|
+
const freezeSecondRow = {
|
|
16742
|
+
name: _lt("2 rows"),
|
|
16743
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
16744
|
+
isReadonlyAllowed: true,
|
|
16745
|
+
};
|
|
16746
|
+
const freezeCurrentRow = {
|
|
16747
|
+
name: _lt("Up to current row"),
|
|
16748
|
+
execute: (env) => {
|
|
16749
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
16750
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
16751
|
+
},
|
|
16752
|
+
isReadonlyAllowed: true,
|
|
16753
|
+
};
|
|
16754
|
+
const unFreezeCols = {
|
|
16755
|
+
name: _lt("No columns"),
|
|
16756
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
16757
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16758
|
+
}),
|
|
16759
|
+
isReadonlyAllowed: true,
|
|
16760
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
16761
|
+
};
|
|
16762
|
+
const freezeFirstCol = {
|
|
16763
|
+
name: _lt("1 column"),
|
|
16764
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
16765
|
+
isReadonlyAllowed: true,
|
|
16766
|
+
};
|
|
16767
|
+
const freezeSecondCol = {
|
|
16768
|
+
name: _lt("2 columns"),
|
|
16769
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
16770
|
+
isReadonlyAllowed: true,
|
|
16771
|
+
};
|
|
16772
|
+
const freezeCurrentCol = {
|
|
16773
|
+
name: _lt("Up to current column"),
|
|
16774
|
+
execute: (env) => {
|
|
16775
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
16776
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
16777
|
+
},
|
|
16778
|
+
isReadonlyAllowed: true,
|
|
16779
|
+
};
|
|
16780
|
+
const viewGridlines = {
|
|
16781
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
16782
|
+
? _lt("Hide gridlines")
|
|
16783
|
+
: _lt("Show gridlines"),
|
|
16784
|
+
execute: SET_GRID_LINES_VISIBILITY_ACTION,
|
|
16785
|
+
};
|
|
16786
|
+
const viewFormulas = {
|
|
16787
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? _lt("Hide formulas") : _lt("Show formulas"),
|
|
16788
|
+
execute: SET_FORMULA_VISIBILITY_ACTION,
|
|
16789
|
+
isReadonlyAllowed: true,
|
|
16790
|
+
};
|
|
16791
|
+
const createRemoveFilter = {
|
|
16792
|
+
name: (env) => selectionContainsFilter(env) ? _lt("Remove selected filters") : _lt("Create filter"),
|
|
16793
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
16794
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
16795
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
16796
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
16797
|
+
};
|
|
16798
|
+
function selectionContainsFilter(env) {
|
|
16799
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16800
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
16801
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
16802
|
+
}
|
|
16803
|
+
function cannotCreateFilter(env) {
|
|
16804
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
16805
|
+
}
|
|
16806
|
+
function createRemoveFilterAction(env) {
|
|
16807
|
+
if (selectionContainsFilter(env)) {
|
|
16808
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
16809
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
16810
|
+
target: env.model.getters.getSelectedZones(),
|
|
16811
|
+
});
|
|
16812
|
+
return;
|
|
16813
|
+
}
|
|
16814
|
+
if (cannotCreateFilter(env)) {
|
|
16815
|
+
return;
|
|
16816
|
+
}
|
|
16817
|
+
env.model.selection.selectTableAroundSelection();
|
|
16818
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
16819
|
+
const selection = env.model.getters.getSelectedZones();
|
|
16820
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
16821
|
+
}
|
|
16822
|
+
|
|
16823
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
16824
|
+
__proto__: null,
|
|
16825
|
+
hideCols: hideCols,
|
|
16826
|
+
unhideCols: unhideCols,
|
|
16827
|
+
unhideAllCols: unhideAllCols,
|
|
16828
|
+
hideRows: hideRows,
|
|
16829
|
+
unhideRows: unhideRows,
|
|
16830
|
+
unhideAllRows: unhideAllRows,
|
|
16831
|
+
unFreezePane: unFreezePane,
|
|
16832
|
+
freezePane: freezePane,
|
|
16833
|
+
unFreezeRows: unFreezeRows,
|
|
16834
|
+
freezeFirstRow: freezeFirstRow,
|
|
16835
|
+
freezeSecondRow: freezeSecondRow,
|
|
16836
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
16837
|
+
unFreezeCols: unFreezeCols,
|
|
16838
|
+
freezeFirstCol: freezeFirstCol,
|
|
16839
|
+
freezeSecondCol: freezeSecondCol,
|
|
16840
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
16841
|
+
viewGridlines: viewGridlines,
|
|
16842
|
+
viewFormulas: viewFormulas,
|
|
16843
|
+
createRemoveFilter: createRemoveFilter
|
|
16844
|
+
});
|
|
16845
|
+
|
|
16846
|
+
const colMenuRegistry = new MenuItemRegistry();
|
|
16847
|
+
colMenuRegistry
|
|
16848
|
+
.add("cut", {
|
|
16849
|
+
...cut,
|
|
16198
16850
|
sequence: 10,
|
|
16199
|
-
action: UNDO_ACTION,
|
|
16200
16851
|
})
|
|
16201
|
-
.
|
|
16202
|
-
|
|
16203
|
-
description: "Ctrl+Y",
|
|
16852
|
+
.add("copy", {
|
|
16853
|
+
...copy,
|
|
16204
16854
|
sequence: 20,
|
|
16205
|
-
action: REDO_ACTION,
|
|
16206
|
-
separator: true,
|
|
16207
16855
|
})
|
|
16208
|
-
.
|
|
16209
|
-
|
|
16210
|
-
description: "Ctrl+C",
|
|
16856
|
+
.add("paste", {
|
|
16857
|
+
...paste,
|
|
16211
16858
|
sequence: 30,
|
|
16212
|
-
isReadonlyAllowed: true,
|
|
16213
|
-
action: COPY_ACTION,
|
|
16214
16859
|
})
|
|
16215
|
-
.
|
|
16216
|
-
|
|
16217
|
-
description: "Ctrl+X",
|
|
16860
|
+
.add("paste_special", {
|
|
16861
|
+
...pasteSpecial,
|
|
16218
16862
|
sequence: 40,
|
|
16219
|
-
|
|
16863
|
+
separator: true,
|
|
16220
16864
|
})
|
|
16221
|
-
.addChild("
|
|
16222
|
-
|
|
16223
|
-
|
|
16224
|
-
sequence: 50,
|
|
16225
|
-
action: PASTE_ACTION,
|
|
16865
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16866
|
+
...pasteSpecialValue,
|
|
16867
|
+
sequence: 10,
|
|
16226
16868
|
})
|
|
16227
|
-
.addChild("
|
|
16228
|
-
|
|
16229
|
-
sequence:
|
|
16869
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16870
|
+
...pasteSpecialFormat,
|
|
16871
|
+
sequence: 20,
|
|
16872
|
+
})
|
|
16873
|
+
.add("sort_columns", {
|
|
16874
|
+
...sortRange,
|
|
16875
|
+
name: (env) => env.model.getters.getActiveCols().size > 1 ? _lt("Sort columns") : _lt("Sort column"),
|
|
16876
|
+
sequence: 50,
|
|
16230
16877
|
separator: true,
|
|
16231
|
-
isVisible: IS_NOT_CUT_OPERATION,
|
|
16232
16878
|
})
|
|
16233
|
-
.addChild("
|
|
16234
|
-
|
|
16879
|
+
.addChild("sort_ascending", ["sort_columns"], {
|
|
16880
|
+
...sortAscending,
|
|
16235
16881
|
sequence: 10,
|
|
16236
|
-
action: PASTE_VALUE_ACTION,
|
|
16237
16882
|
})
|
|
16238
|
-
.addChild("
|
|
16239
|
-
|
|
16883
|
+
.addChild("sort_descending", ["sort_columns"], {
|
|
16884
|
+
...sortDescending,
|
|
16240
16885
|
sequence: 20,
|
|
16241
|
-
action: PASTE_FORMAT_ACTION,
|
|
16242
16886
|
})
|
|
16243
|
-
.
|
|
16244
|
-
|
|
16245
|
-
sequence:
|
|
16246
|
-
|
|
16887
|
+
.add("add_column_before", {
|
|
16888
|
+
...colInsertColsBefore,
|
|
16889
|
+
sequence: 70,
|
|
16890
|
+
})
|
|
16891
|
+
.add("add_column_after", {
|
|
16892
|
+
...colInsertColsAfter,
|
|
16893
|
+
sequence: 80,
|
|
16894
|
+
})
|
|
16895
|
+
.add("delete_column", {
|
|
16896
|
+
...deleteCols,
|
|
16897
|
+
sequence: 90,
|
|
16898
|
+
})
|
|
16899
|
+
.add("clear_column", {
|
|
16900
|
+
...clearCols,
|
|
16901
|
+
sequence: 100,
|
|
16902
|
+
})
|
|
16903
|
+
.add("hide_columns", {
|
|
16904
|
+
...hideCols,
|
|
16905
|
+
sequence: 85,
|
|
16247
16906
|
separator: true,
|
|
16248
16907
|
})
|
|
16249
|
-
.
|
|
16250
|
-
|
|
16908
|
+
.add("unhide_columns", {
|
|
16909
|
+
...unhideCols,
|
|
16910
|
+
sequence: 86,
|
|
16911
|
+
separator: true,
|
|
16912
|
+
})
|
|
16913
|
+
.add("conditional_formatting", {
|
|
16914
|
+
...formatCF,
|
|
16915
|
+
sequence: 110,
|
|
16916
|
+
});
|
|
16917
|
+
|
|
16918
|
+
const numberFormatMenuRegistry = new MenuItemRegistry();
|
|
16919
|
+
numberFormatMenuRegistry
|
|
16920
|
+
.add("format_number_automatic", {
|
|
16921
|
+
...formatNumberAutomatic,
|
|
16251
16922
|
sequence: 10,
|
|
16252
|
-
|
|
16923
|
+
separator: true,
|
|
16253
16924
|
})
|
|
16254
|
-
.
|
|
16255
|
-
|
|
16925
|
+
.add("format_number_number", {
|
|
16926
|
+
...formatNumberNumber,
|
|
16256
16927
|
sequence: 20,
|
|
16257
|
-
action: SORT_CELLS_DESCENDING,
|
|
16258
16928
|
})
|
|
16259
|
-
.
|
|
16260
|
-
|
|
16261
|
-
|
|
16262
|
-
sequence: 65,
|
|
16263
|
-
isReadonlyAllowed: true,
|
|
16264
|
-
action: OPEN_FAR_SIDEPANEL_ACTION,
|
|
16929
|
+
.add("format_number_percent", {
|
|
16930
|
+
...formatNumberPercent,
|
|
16931
|
+
sequence: 30,
|
|
16265
16932
|
separator: true,
|
|
16266
16933
|
})
|
|
16267
|
-
.
|
|
16268
|
-
|
|
16269
|
-
sequence:
|
|
16270
|
-
action: DELETE_CONTENT_ACTION,
|
|
16934
|
+
.add("format_number_currency", {
|
|
16935
|
+
...formatNumberCurrency,
|
|
16936
|
+
sequence: 40,
|
|
16271
16937
|
})
|
|
16272
|
-
.
|
|
16273
|
-
|
|
16274
|
-
sequence:
|
|
16275
|
-
action: REMOVE_ROWS_ACTION,
|
|
16938
|
+
.add("format_number_currency_rounded", {
|
|
16939
|
+
...formatNumberCurrencyRounded,
|
|
16940
|
+
sequence: 50,
|
|
16276
16941
|
})
|
|
16277
|
-
.
|
|
16278
|
-
|
|
16279
|
-
sequence:
|
|
16280
|
-
|
|
16942
|
+
.add("format_custom_currency", {
|
|
16943
|
+
...formatCustomCurrency,
|
|
16944
|
+
sequence: 60,
|
|
16945
|
+
separator: true,
|
|
16281
16946
|
})
|
|
16282
|
-
.
|
|
16283
|
-
|
|
16284
|
-
sequence:
|
|
16285
|
-
action: DELETE_CELL_SHIFT_UP,
|
|
16947
|
+
.add("format_number_date", {
|
|
16948
|
+
...formatNumberDate,
|
|
16949
|
+
sequence: 70,
|
|
16286
16950
|
})
|
|
16287
|
-
.
|
|
16288
|
-
|
|
16289
|
-
sequence:
|
|
16290
|
-
action: DELETE_CELL_SHIFT_LEFT,
|
|
16951
|
+
.add("format_number_time", {
|
|
16952
|
+
...formatNumberTime,
|
|
16953
|
+
sequence: 80,
|
|
16291
16954
|
})
|
|
16292
|
-
.
|
|
16293
|
-
|
|
16294
|
-
sequence:
|
|
16295
|
-
action: UNHIDE_ALL_COLUMNS_ACTION,
|
|
16296
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
16955
|
+
.add("format_number_date_time", {
|
|
16956
|
+
...formatNumberDateTime,
|
|
16957
|
+
sequence: 90,
|
|
16297
16958
|
})
|
|
16298
|
-
.
|
|
16299
|
-
|
|
16959
|
+
.add("format_number_duration", {
|
|
16960
|
+
...formatNumberDuration,
|
|
16300
16961
|
sequence: 100,
|
|
16301
|
-
|
|
16302
|
-
|
|
16303
|
-
|
|
16304
|
-
|
|
16305
|
-
|
|
16962
|
+
separator: true,
|
|
16963
|
+
});
|
|
16964
|
+
const formatNumberMenuItemSpec = {
|
|
16965
|
+
name: _lt("More formats"),
|
|
16966
|
+
icon: "o-spreadsheet-Icon.NUMBER_FORMATS",
|
|
16967
|
+
children: [() => numberFormatMenuRegistry.getAll()],
|
|
16968
|
+
};
|
|
16969
|
+
|
|
16970
|
+
const rowMenuRegistry = new MenuItemRegistry();
|
|
16971
|
+
rowMenuRegistry
|
|
16972
|
+
.add("cut", {
|
|
16973
|
+
...cut,
|
|
16306
16974
|
sequence: 10,
|
|
16307
|
-
action: INSERT_ROWS_BEFORE_ACTION,
|
|
16308
|
-
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16309
16975
|
})
|
|
16310
|
-
.
|
|
16311
|
-
|
|
16976
|
+
.add("copy", {
|
|
16977
|
+
...copy,
|
|
16312
16978
|
sequence: 20,
|
|
16313
|
-
action: INSERT_ROWS_AFTER_ACTION,
|
|
16314
|
-
isVisible: (env) => env.model.getters.getActiveCols().size === 0,
|
|
16315
|
-
separator: true,
|
|
16316
16979
|
})
|
|
16317
|
-
.
|
|
16318
|
-
|
|
16980
|
+
.add("paste", {
|
|
16981
|
+
...paste,
|
|
16319
16982
|
sequence: 30,
|
|
16320
|
-
action: INSERT_COLUMNS_BEFORE_ACTION,
|
|
16321
|
-
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16322
16983
|
})
|
|
16323
|
-
.
|
|
16324
|
-
|
|
16984
|
+
.add("paste_special", {
|
|
16985
|
+
...pasteSpecial,
|
|
16325
16986
|
sequence: 40,
|
|
16326
|
-
action: INSERT_COLUMNS_AFTER_ACTION,
|
|
16327
|
-
isVisible: (env) => env.model.getters.getActiveRows().size === 0,
|
|
16328
16987
|
separator: true,
|
|
16329
16988
|
})
|
|
16330
|
-
.addChild("
|
|
16331
|
-
|
|
16332
|
-
sequence:
|
|
16333
|
-
action: INSERT_CELL_SHIFT_DOWN,
|
|
16989
|
+
.addChild("paste_value_only", ["paste_special"], {
|
|
16990
|
+
...pasteSpecialValue,
|
|
16991
|
+
sequence: 10,
|
|
16334
16992
|
})
|
|
16335
|
-
.addChild("
|
|
16336
|
-
|
|
16337
|
-
sequence:
|
|
16338
|
-
action: INSERT_CELL_SHIFT_RIGHT,
|
|
16339
|
-
separator: true,
|
|
16993
|
+
.addChild("paste_format_only", ["paste_special"], {
|
|
16994
|
+
...pasteSpecialFormat,
|
|
16995
|
+
sequence: 20,
|
|
16340
16996
|
})
|
|
16341
|
-
.
|
|
16342
|
-
|
|
16997
|
+
.add("add_row_before", {
|
|
16998
|
+
...rowInsertRowBefore,
|
|
16343
16999
|
sequence: 50,
|
|
16344
|
-
action: CREATE_CHART,
|
|
16345
|
-
})
|
|
16346
|
-
.addChild("insert_image", ["insert"], {
|
|
16347
|
-
name: _lt("Image"),
|
|
16348
|
-
sequence: 55,
|
|
16349
|
-
action: CREATE_IMAGE,
|
|
16350
|
-
isVisible: (env) => env.imageProvider !== undefined,
|
|
16351
17000
|
})
|
|
16352
|
-
.
|
|
16353
|
-
|
|
17001
|
+
.add("add_row_after", {
|
|
17002
|
+
...rowInsertRowsAfter,
|
|
16354
17003
|
sequence: 60,
|
|
16355
17004
|
})
|
|
16356
|
-
.
|
|
16357
|
-
|
|
16358
|
-
|
|
16359
|
-
sequence: 0,
|
|
17005
|
+
.add("delete_row", {
|
|
17006
|
+
...deleteRows,
|
|
17007
|
+
sequence: 70,
|
|
16360
17008
|
})
|
|
16361
|
-
.
|
|
16362
|
-
|
|
16363
|
-
|
|
17009
|
+
.add("clear_row", {
|
|
17010
|
+
...clearRows,
|
|
17011
|
+
sequence: 80,
|
|
17012
|
+
})
|
|
17013
|
+
.add("hide_rows", {
|
|
17014
|
+
...hideRows,
|
|
17015
|
+
sequence: 85,
|
|
17016
|
+
separator: true,
|
|
17017
|
+
})
|
|
17018
|
+
.add("unhide_rows", {
|
|
17019
|
+
...unhideRows,
|
|
17020
|
+
sequence: 86,
|
|
17021
|
+
separator: true,
|
|
17022
|
+
})
|
|
17023
|
+
.add("conditional_formatting", {
|
|
17024
|
+
...formatCF,
|
|
17025
|
+
sequence: 90,
|
|
17026
|
+
});
|
|
17027
|
+
|
|
17028
|
+
function getSheetMenuRegistry(args) {
|
|
17029
|
+
const sheetMenuRegistry = new MenuItemRegistry();
|
|
17030
|
+
sheetMenuRegistry
|
|
17031
|
+
.add("delete", {
|
|
17032
|
+
...deleteSheet,
|
|
17033
|
+
sequence: 10,
|
|
17034
|
+
})
|
|
17035
|
+
.add("duplicate", {
|
|
17036
|
+
...duplicateSheet,
|
|
17037
|
+
sequence: 20,
|
|
17038
|
+
})
|
|
17039
|
+
.add("rename", {
|
|
17040
|
+
...renameSheet(args),
|
|
17041
|
+
sequence: 30,
|
|
17042
|
+
})
|
|
17043
|
+
.add("move_right", {
|
|
17044
|
+
...sheetMoveRight,
|
|
17045
|
+
sequence: 40,
|
|
17046
|
+
})
|
|
17047
|
+
.add("move_left", {
|
|
17048
|
+
...sheetMoveLeft,
|
|
17049
|
+
sequence: 50,
|
|
17050
|
+
})
|
|
17051
|
+
.add("hide_sheet", {
|
|
17052
|
+
...hideSheet,
|
|
17053
|
+
sequence: 60,
|
|
17054
|
+
});
|
|
17055
|
+
return sheetMenuRegistry;
|
|
17056
|
+
}
|
|
17057
|
+
|
|
17058
|
+
const topbarMenuRegistry = new MenuItemRegistry();
|
|
17059
|
+
topbarMenuRegistry
|
|
17060
|
+
// ---------------------------------------------------------------------
|
|
17061
|
+
// FILE MENU ITEMS
|
|
17062
|
+
// ---------------------------------------------------------------------
|
|
17063
|
+
.add("file", {
|
|
17064
|
+
name: _lt("File"),
|
|
16364
17065
|
sequence: 10,
|
|
16365
17066
|
})
|
|
16366
|
-
|
|
16367
|
-
|
|
16368
|
-
|
|
17067
|
+
// ---------------------------------------------------------------------
|
|
17068
|
+
// EDIT MENU ITEMS
|
|
17069
|
+
// ---------------------------------------------------------------------
|
|
17070
|
+
.add("edit", {
|
|
17071
|
+
name: _lt("Edit"),
|
|
16369
17072
|
sequence: 20,
|
|
16370
17073
|
})
|
|
16371
|
-
.addChild("
|
|
16372
|
-
|
|
16373
|
-
|
|
17074
|
+
.addChild("undo", ["edit"], {
|
|
17075
|
+
...undo,
|
|
17076
|
+
sequence: 10,
|
|
17077
|
+
})
|
|
17078
|
+
.addChild("redo", ["edit"], {
|
|
17079
|
+
...redo,
|
|
17080
|
+
sequence: 20,
|
|
17081
|
+
separator: true,
|
|
17082
|
+
})
|
|
17083
|
+
.addChild("copy", ["edit"], {
|
|
17084
|
+
...copy,
|
|
16374
17085
|
sequence: 30,
|
|
16375
17086
|
})
|
|
16376
|
-
.addChild("
|
|
16377
|
-
|
|
16378
|
-
action: (env) => env.startCellEdition(`=MIN(`),
|
|
17087
|
+
.addChild("cut", ["edit"], {
|
|
17088
|
+
...cut,
|
|
16379
17089
|
sequence: 40,
|
|
16380
|
-
separator: true,
|
|
16381
17090
|
})
|
|
16382
|
-
.addChild("
|
|
16383
|
-
|
|
17091
|
+
.addChild("paste", ["edit"], {
|
|
17092
|
+
...paste,
|
|
16384
17093
|
sequence: 50,
|
|
16385
17094
|
})
|
|
16386
|
-
.addChild("
|
|
16387
|
-
|
|
16388
|
-
|
|
17095
|
+
.addChild("paste_special", ["edit"], {
|
|
17096
|
+
...pasteSpecial,
|
|
17097
|
+
sequence: 60,
|
|
17098
|
+
separator: true,
|
|
16389
17099
|
})
|
|
16390
|
-
.addChild("
|
|
16391
|
-
|
|
16392
|
-
|
|
16393
|
-
return categories.sort().map((category, i) => {
|
|
16394
|
-
const functionsInCategory = Object.keys(functions).filter((key) => functions[key].category === category);
|
|
16395
|
-
return {
|
|
16396
|
-
name: category,
|
|
16397
|
-
sequence: 60 + i * 10,
|
|
16398
|
-
children: createFormulaFunctionMenuItems(functionsInCategory),
|
|
16399
|
-
};
|
|
16400
|
-
});
|
|
17100
|
+
.addChild("paste_special_value", ["edit", "paste_special"], {
|
|
17101
|
+
...pasteSpecialValue,
|
|
17102
|
+
sequence: 10,
|
|
16401
17103
|
})
|
|
16402
|
-
.addChild("
|
|
16403
|
-
|
|
17104
|
+
.addChild("paste_special_format", ["edit", "paste_special"], {
|
|
17105
|
+
...pasteSpecialFormat,
|
|
17106
|
+
sequence: 20,
|
|
17107
|
+
})
|
|
17108
|
+
.addChild("find_and_replace", ["edit"], {
|
|
17109
|
+
...findAndReplace,
|
|
17110
|
+
sequence: 65,
|
|
16404
17111
|
separator: true,
|
|
17112
|
+
})
|
|
17113
|
+
.addChild("edit_delete_cell_values", ["edit"], {
|
|
17114
|
+
...deleteValues,
|
|
16405
17115
|
sequence: 70,
|
|
16406
|
-
action: INSERT_LINK,
|
|
16407
17116
|
})
|
|
16408
|
-
.addChild("
|
|
16409
|
-
|
|
17117
|
+
.addChild("edit_delete_row", ["edit"], {
|
|
17118
|
+
...deleteRows,
|
|
16410
17119
|
sequence: 80,
|
|
16411
|
-
|
|
16412
|
-
|
|
17120
|
+
})
|
|
17121
|
+
.addChild("edit_delete_column", ["edit"], {
|
|
17122
|
+
...deleteCols,
|
|
17123
|
+
sequence: 90,
|
|
17124
|
+
})
|
|
17125
|
+
.addChild("edit_delete_cell_shift_up", ["edit"], {
|
|
17126
|
+
...deleteCellShiftUp,
|
|
17127
|
+
sequence: 93,
|
|
17128
|
+
})
|
|
17129
|
+
.addChild("edit_delete_cell_shift_left", ["edit"], {
|
|
17130
|
+
...deleteCellShiftLeft,
|
|
17131
|
+
sequence: 97,
|
|
17132
|
+
})
|
|
17133
|
+
.addChild("edit_unhide_columns", ["edit"], {
|
|
17134
|
+
...unhideAllCols,
|
|
17135
|
+
sequence: 100,
|
|
17136
|
+
})
|
|
17137
|
+
.addChild("edit_unhide_rows", ["edit"], {
|
|
17138
|
+
...unhideAllRows,
|
|
17139
|
+
sequence: 100,
|
|
17140
|
+
})
|
|
17141
|
+
// ---------------------------------------------------------------------
|
|
17142
|
+
// VIEW MENU ITEMS
|
|
17143
|
+
// ---------------------------------------------------------------------
|
|
17144
|
+
.add("view", {
|
|
17145
|
+
name: _lt("View"),
|
|
17146
|
+
sequence: 30,
|
|
16413
17147
|
})
|
|
16414
17148
|
.addChild("unfreeze_panes", ["view"], {
|
|
16415
|
-
|
|
17149
|
+
...unFreezePane,
|
|
16416
17150
|
sequence: 4,
|
|
16417
|
-
isVisible: (env) => {
|
|
16418
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
16419
|
-
return xSplit + ySplit > 0;
|
|
16420
|
-
},
|
|
16421
|
-
action: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
16422
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16423
|
-
}),
|
|
16424
17151
|
})
|
|
16425
17152
|
.addChild("freeze_panes", ["view"], {
|
|
16426
|
-
|
|
17153
|
+
...freezePane,
|
|
16427
17154
|
sequence: 5,
|
|
16428
17155
|
separator: true,
|
|
16429
17156
|
})
|
|
16430
17157
|
.addChild("unfreeze_rows", ["view", "freeze_panes"], {
|
|
16431
|
-
|
|
16432
|
-
action: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
16433
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16434
|
-
}),
|
|
16435
|
-
isReadonlyAllowed: true,
|
|
17158
|
+
...unFreezeRows,
|
|
16436
17159
|
sequence: 5,
|
|
16437
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
16438
17160
|
})
|
|
16439
17161
|
.addChild("freeze_first_row", ["view", "freeze_panes"], {
|
|
16440
|
-
|
|
16441
|
-
action: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
16442
|
-
isReadonlyAllowed: true,
|
|
17162
|
+
...freezeFirstRow,
|
|
16443
17163
|
sequence: 10,
|
|
16444
17164
|
})
|
|
16445
17165
|
.addChild("freeze_second_row", ["view", "freeze_panes"], {
|
|
16446
|
-
|
|
16447
|
-
action: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
16448
|
-
isReadonlyAllowed: true,
|
|
17166
|
+
...freezeSecondRow,
|
|
16449
17167
|
sequence: 15,
|
|
16450
17168
|
})
|
|
16451
17169
|
.addChild("freeze_current_row", ["view", "freeze_panes"], {
|
|
16452
|
-
|
|
16453
|
-
action: (env) => {
|
|
16454
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
16455
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
16456
|
-
},
|
|
16457
|
-
isReadonlyAllowed: true,
|
|
17170
|
+
...freezeCurrentRow,
|
|
16458
17171
|
sequence: 20,
|
|
16459
17172
|
separator: true,
|
|
16460
17173
|
})
|
|
16461
17174
|
.addChild("unfreeze_columns", ["view", "freeze_panes"], {
|
|
16462
|
-
|
|
16463
|
-
action: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
16464
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
16465
|
-
}),
|
|
16466
|
-
isReadonlyAllowed: true,
|
|
17175
|
+
...unFreezeCols,
|
|
16467
17176
|
sequence: 25,
|
|
16468
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
16469
17177
|
})
|
|
16470
17178
|
.addChild("freeze_first_col", ["view", "freeze_panes"], {
|
|
16471
|
-
|
|
16472
|
-
action: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
16473
|
-
isReadonlyAllowed: true,
|
|
17179
|
+
...freezeFirstCol,
|
|
16474
17180
|
sequence: 30,
|
|
16475
17181
|
})
|
|
16476
17182
|
.addChild("freeze_second_col", ["view", "freeze_panes"], {
|
|
16477
|
-
|
|
16478
|
-
action: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
16479
|
-
isReadonlyAllowed: true,
|
|
17183
|
+
...freezeSecondCol,
|
|
16480
17184
|
sequence: 35,
|
|
16481
17185
|
})
|
|
16482
17186
|
.addChild("freeze_current_col", ["view", "freeze_panes"], {
|
|
16483
|
-
|
|
16484
|
-
action: (env) => {
|
|
16485
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
16486
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
16487
|
-
},
|
|
16488
|
-
isReadonlyAllowed: true,
|
|
17187
|
+
...freezeCurrentCol,
|
|
16489
17188
|
sequence: 40,
|
|
16490
17189
|
})
|
|
16491
17190
|
.addChild("view_gridlines", ["view"], {
|
|
16492
|
-
|
|
16493
|
-
? _lt("Hide gridlines")
|
|
16494
|
-
: _lt("Show gridlines"),
|
|
16495
|
-
action: SET_GRID_LINES_VISIBILITY_ACTION,
|
|
17191
|
+
...viewGridlines,
|
|
16496
17192
|
sequence: 10,
|
|
16497
17193
|
})
|
|
16498
17194
|
.addChild("view_formulas", ["view"], {
|
|
16499
|
-
|
|
16500
|
-
action: SET_FORMULA_VISIBILITY_ACTION,
|
|
16501
|
-
isReadonlyAllowed: true,
|
|
17195
|
+
...viewFormulas,
|
|
16502
17196
|
sequence: 15,
|
|
16503
17197
|
})
|
|
16504
|
-
|
|
16505
|
-
|
|
16506
|
-
|
|
16507
|
-
|
|
17198
|
+
// ---------------------------------------------------------------------
|
|
17199
|
+
// INSERT MENU ITEMS
|
|
17200
|
+
// ---------------------------------------------------------------------
|
|
17201
|
+
.add("insert", {
|
|
17202
|
+
name: _lt("Insert"),
|
|
17203
|
+
sequence: 40,
|
|
16508
17204
|
})
|
|
16509
|
-
.addChild("
|
|
16510
|
-
|
|
17205
|
+
.addChild("insert_row_before", ["insert"], {
|
|
17206
|
+
...topBarInsertRowsBefore,
|
|
16511
17207
|
sequence: 10,
|
|
16512
|
-
separator: true,
|
|
16513
|
-
action: FORMAT_AUTOMATIC_ACTION,
|
|
16514
17208
|
})
|
|
16515
|
-
.addChild("
|
|
16516
|
-
|
|
16517
|
-
description: "1,000.12",
|
|
17209
|
+
.addChild("insert_row_after", ["insert"], {
|
|
17210
|
+
...topBarInsertRowsAfter,
|
|
16518
17211
|
sequence: 20,
|
|
16519
|
-
|
|
17212
|
+
separator: true,
|
|
16520
17213
|
})
|
|
16521
|
-
.addChild("
|
|
16522
|
-
|
|
16523
|
-
description: "10.12%",
|
|
17214
|
+
.addChild("insert_column_before", ["insert"], {
|
|
17215
|
+
...topBarInsertColsBefore,
|
|
16524
17216
|
sequence: 30,
|
|
16525
|
-
separator: true,
|
|
16526
|
-
action: FORMAT_PERCENT_ACTION,
|
|
16527
17217
|
})
|
|
16528
|
-
.addChild("
|
|
16529
|
-
|
|
16530
|
-
|
|
16531
|
-
|
|
16532
|
-
action: FORMAT_CURRENCY_ACTION,
|
|
17218
|
+
.addChild("insert_column_after", ["insert"], {
|
|
17219
|
+
...topBarInsertColsAfter,
|
|
17220
|
+
sequence: 40,
|
|
17221
|
+
separator: true,
|
|
16533
17222
|
})
|
|
16534
|
-
.addChild("
|
|
16535
|
-
|
|
16536
|
-
|
|
16537
|
-
sequence: 38,
|
|
16538
|
-
action: FORMAT_CURRENCY_ROUNDED_ACTION,
|
|
17223
|
+
.addChild("insert_insert_cell_shift_down", ["insert"], {
|
|
17224
|
+
...insertCellShiftDown,
|
|
17225
|
+
sequence: 43,
|
|
16539
17226
|
})
|
|
16540
|
-
.addChild("
|
|
16541
|
-
|
|
16542
|
-
sequence:
|
|
17227
|
+
.addChild("insert_insert_cell_shift_right", ["insert"], {
|
|
17228
|
+
...insertCellShiftRight,
|
|
17229
|
+
sequence: 47,
|
|
16543
17230
|
separator: true,
|
|
16544
|
-
isVisible: (env) => env.loadCurrencies !== undefined,
|
|
16545
|
-
action: OPEN_CUSTOM_CURRENCY_SIDEPANEL_ACTION,
|
|
16546
|
-
})
|
|
16547
|
-
.addChild("format_number_date", ["format", "format_number"], {
|
|
16548
|
-
name: NumberFormatTerms.Date,
|
|
16549
|
-
description: "9/26/2008",
|
|
16550
|
-
sequence: 40,
|
|
16551
|
-
action: FORMAT_DATE_ACTION,
|
|
16552
17231
|
})
|
|
16553
|
-
.addChild("
|
|
16554
|
-
|
|
16555
|
-
description: "10:43:00 PM",
|
|
17232
|
+
.addChild("insert_chart", ["insert"], {
|
|
17233
|
+
...insertChart,
|
|
16556
17234
|
sequence: 50,
|
|
16557
|
-
action: FORMAT_TIME_ACTION,
|
|
16558
17235
|
})
|
|
16559
|
-
.addChild("
|
|
16560
|
-
|
|
16561
|
-
|
|
17236
|
+
.addChild("insert_image", ["insert"], {
|
|
17237
|
+
...insertImage,
|
|
17238
|
+
sequence: 55,
|
|
17239
|
+
})
|
|
17240
|
+
.addChild("insert_function", ["insert"], {
|
|
17241
|
+
...insertFunction,
|
|
16562
17242
|
sequence: 60,
|
|
16563
|
-
action: FORMAT_DATE_TIME_ACTION,
|
|
16564
17243
|
})
|
|
16565
|
-
.addChild("
|
|
16566
|
-
|
|
16567
|
-
|
|
17244
|
+
.addChild("insert_function_sum", ["insert", "insert_function"], {
|
|
17245
|
+
...insertFunctionSum,
|
|
17246
|
+
sequence: 0,
|
|
17247
|
+
})
|
|
17248
|
+
.addChild("insert_function_average", ["insert", "insert_function"], {
|
|
17249
|
+
...insertFunctionAverage,
|
|
17250
|
+
sequence: 10,
|
|
17251
|
+
})
|
|
17252
|
+
.addChild("insert_function_count", ["insert", "insert_function"], {
|
|
17253
|
+
...insertFunctionCount,
|
|
17254
|
+
sequence: 20,
|
|
17255
|
+
})
|
|
17256
|
+
.addChild("insert_function_max", ["insert", "insert_function"], {
|
|
17257
|
+
...insertFunctionMax,
|
|
17258
|
+
sequence: 30,
|
|
17259
|
+
})
|
|
17260
|
+
.addChild("insert_function_min", ["insert", "insert_function"], {
|
|
17261
|
+
...insertFunctionMin,
|
|
17262
|
+
sequence: 40,
|
|
17263
|
+
separator: true,
|
|
17264
|
+
})
|
|
17265
|
+
.addChild("categorie_function_all", ["insert", "insert_function"], {
|
|
17266
|
+
...categorieFunctionAll,
|
|
17267
|
+
sequence: 50,
|
|
17268
|
+
})
|
|
17269
|
+
.addChild("categories_function_list", ["insert", "insert_function"], categoriesFunctionListMenuBuilder)
|
|
17270
|
+
.addChild("insert_link", ["insert"], {
|
|
17271
|
+
...insertLink,
|
|
17272
|
+
separator: true,
|
|
16568
17273
|
sequence: 70,
|
|
17274
|
+
})
|
|
17275
|
+
.addChild("insert_sheet", ["insert"], {
|
|
17276
|
+
...insertSheet,
|
|
17277
|
+
sequence: 80,
|
|
17278
|
+
separator: true,
|
|
17279
|
+
})
|
|
17280
|
+
// ---------------------------------------------------------------------
|
|
17281
|
+
// FORMAT MENU ITEMS
|
|
17282
|
+
// ---------------------------------------------------------------------
|
|
17283
|
+
.add("format", { name: _lt("Format"), sequence: 50 })
|
|
17284
|
+
.addChild("format_number", ["format"], {
|
|
17285
|
+
...formatNumberMenuItemSpec,
|
|
17286
|
+
name: _lt("Number"),
|
|
17287
|
+
sequence: 10,
|
|
16569
17288
|
separator: true,
|
|
16570
|
-
action: FORMAT_DURATION_ACTION,
|
|
16571
17289
|
})
|
|
16572
17290
|
.addChild("format_bold", ["format"], {
|
|
16573
|
-
|
|
17291
|
+
...formatBold,
|
|
16574
17292
|
sequence: 20,
|
|
16575
|
-
description: "Ctrl+B",
|
|
16576
|
-
action: FORMAT_BOLD_ACTION,
|
|
16577
17293
|
})
|
|
16578
17294
|
.addChild("format_italic", ["format"], {
|
|
16579
|
-
|
|
17295
|
+
...formatItalic,
|
|
16580
17296
|
sequence: 30,
|
|
16581
|
-
description: "Ctrl+I",
|
|
16582
|
-
action: FORMAT_ITALIC_ACTION,
|
|
16583
17297
|
})
|
|
16584
17298
|
.addChild("format_underline", ["format"], {
|
|
16585
|
-
|
|
16586
|
-
description: "Ctrl+U",
|
|
17299
|
+
...formatUnderline,
|
|
16587
17300
|
sequence: 40,
|
|
16588
|
-
action: FORMAT_UNDERLINE_ACTION,
|
|
16589
17301
|
})
|
|
16590
17302
|
.addChild("format_strikethrough", ["format"], {
|
|
16591
|
-
|
|
17303
|
+
...formatStrikethrough,
|
|
16592
17304
|
sequence: 50,
|
|
16593
|
-
action: FORMAT_STRIKETHROUGH_ACTION,
|
|
16594
17305
|
separator: true,
|
|
16595
17306
|
})
|
|
16596
17307
|
.addChild("format_font_size", ["format"], {
|
|
16597
|
-
|
|
17308
|
+
...formatFontSize,
|
|
16598
17309
|
sequence: 60,
|
|
16599
17310
|
separator: true,
|
|
16600
17311
|
})
|
|
16601
17312
|
.addChild("format_alignment", ["format"], {
|
|
16602
|
-
|
|
17313
|
+
...formatAlignment,
|
|
16603
17314
|
sequence: 70,
|
|
16604
17315
|
})
|
|
16605
17316
|
.addChild("format_alignment_left", ["format", "format_alignment"], {
|
|
16606
|
-
|
|
17317
|
+
...formatAlignmentLeft,
|
|
16607
17318
|
sequence: 10,
|
|
16608
|
-
action: (env) => setStyle(env, { align: "left" }),
|
|
16609
17319
|
})
|
|
16610
17320
|
.addChild("format_alignment_center", ["format", "format_alignment"], {
|
|
16611
|
-
|
|
17321
|
+
...formatAlignmentCenter,
|
|
16612
17322
|
sequence: 20,
|
|
16613
|
-
action: (env) => setStyle(env, { align: "center" }),
|
|
16614
17323
|
})
|
|
16615
17324
|
.addChild("format_alignment_right", ["format", "format_alignment"], {
|
|
16616
|
-
|
|
17325
|
+
...formatAlignmentRight,
|
|
16617
17326
|
sequence: 30,
|
|
16618
|
-
action: (env) => setStyle(env, { align: "right" }),
|
|
16619
17327
|
separator: true,
|
|
16620
17328
|
})
|
|
16621
17329
|
.addChild("format_alignment_top", ["format", "format_alignment"], {
|
|
16622
|
-
|
|
17330
|
+
...formatAlignmentTop,
|
|
16623
17331
|
sequence: 40,
|
|
16624
|
-
action: (env) => setStyle(env, { verticalAlign: "top" }),
|
|
16625
17332
|
})
|
|
16626
17333
|
.addChild("format_alignment_middle", ["format", "format_alignment"], {
|
|
16627
|
-
|
|
17334
|
+
...formatAlignmentMiddle,
|
|
16628
17335
|
sequence: 50,
|
|
16629
|
-
action: (env) => setStyle(env, { verticalAlign: "middle" }),
|
|
16630
17336
|
})
|
|
16631
17337
|
.addChild("format_alignment_bottom", ["format", "format_alignment"], {
|
|
16632
|
-
|
|
17338
|
+
...formatAlignmentBottom,
|
|
16633
17339
|
sequence: 60,
|
|
16634
|
-
action: (env) => setStyle(env, { verticalAlign: "bottom" }),
|
|
16635
17340
|
separator: true,
|
|
16636
17341
|
})
|
|
16637
17342
|
.addChild("format_wrapping", ["format"], {
|
|
16638
|
-
|
|
17343
|
+
...formatWrapping,
|
|
16639
17344
|
sequence: 80,
|
|
16640
17345
|
separator: true,
|
|
16641
17346
|
})
|
|
16642
17347
|
.addChild("format_wrapping_overflow", ["format", "format_wrapping"], {
|
|
16643
|
-
|
|
17348
|
+
...formatWrappingOverflow,
|
|
16644
17349
|
sequence: 10,
|
|
16645
|
-
action: (env) => setStyle(env, { wrapping: "overflow" }),
|
|
16646
17350
|
})
|
|
16647
17351
|
.addChild("format_wrapping_wrap", ["format", "format_wrapping"], {
|
|
16648
|
-
|
|
17352
|
+
...formatWrappingWrap,
|
|
16649
17353
|
sequence: 20,
|
|
16650
|
-
action: (env) => setStyle(env, { wrapping: "wrap" }),
|
|
16651
17354
|
})
|
|
16652
17355
|
.addChild("format_wrapping_clip", ["format", "format_wrapping"], {
|
|
16653
|
-
|
|
17356
|
+
...formatWrappingClip,
|
|
16654
17357
|
sequence: 30,
|
|
16655
|
-
action: (env) => setStyle(env, { wrapping: "clip" }),
|
|
16656
17358
|
})
|
|
16657
17359
|
.addChild("format_cf", ["format"], {
|
|
16658
|
-
|
|
17360
|
+
...formatCF,
|
|
16659
17361
|
sequence: 90,
|
|
16660
|
-
action: OPEN_CF_SIDEPANEL_ACTION,
|
|
16661
17362
|
separator: true,
|
|
16662
17363
|
})
|
|
16663
17364
|
.addChild("format_clearFormat", ["format"], {
|
|
16664
|
-
|
|
17365
|
+
...clearFormat,
|
|
16665
17366
|
sequence: 100,
|
|
16666
|
-
action: FORMAT_CLEARFORMAT_ACTION,
|
|
16667
17367
|
separator: true,
|
|
17368
|
+
})
|
|
17369
|
+
// ---------------------------------------------------------------------
|
|
17370
|
+
// DATA MENU ITEMS
|
|
17371
|
+
// ---------------------------------------------------------------------
|
|
17372
|
+
.add("data", {
|
|
17373
|
+
name: _lt("Data"),
|
|
17374
|
+
sequence: 60,
|
|
17375
|
+
})
|
|
17376
|
+
.addChild("sort_range", ["data"], {
|
|
17377
|
+
...sortRange,
|
|
17378
|
+
sequence: 20,
|
|
17379
|
+
separator: true,
|
|
17380
|
+
})
|
|
17381
|
+
.addChild("sort_ascending", ["data", "sort_range"], {
|
|
17382
|
+
...sortAscending,
|
|
17383
|
+
sequence: 10,
|
|
17384
|
+
})
|
|
17385
|
+
.addChild("sort_descending", ["data", "sort_range"], {
|
|
17386
|
+
...sortDescending,
|
|
17387
|
+
sequence: 20,
|
|
16668
17388
|
})
|
|
16669
17389
|
.addChild("add_data_filter", ["data"], {
|
|
16670
|
-
|
|
17390
|
+
...addDataFilter,
|
|
16671
17391
|
sequence: 10,
|
|
16672
|
-
action: FILTERS_CREATE_FILTER_TABLE,
|
|
16673
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
16674
|
-
isEnabled: (env) => SELECTION_IS_CONTINUOUS(env),
|
|
16675
17392
|
})
|
|
16676
17393
|
.addChild("remove_data_filter", ["data"], {
|
|
16677
|
-
|
|
17394
|
+
...removeDataFilter,
|
|
16678
17395
|
sequence: 10,
|
|
16679
|
-
|
|
16680
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
16681
|
-
});
|
|
16682
|
-
// Font-sizes
|
|
16683
|
-
for (let fs of FONT_SIZES) {
|
|
16684
|
-
topbarMenuRegistry.addChild(`format_font_size_${fs}`, ["format", "format_font_size"], {
|
|
16685
|
-
name: fs.toString(),
|
|
16686
|
-
sequence: fs,
|
|
16687
|
-
action: (env) => setStyle(env, { fontSize: fs }),
|
|
16688
|
-
});
|
|
16689
|
-
}
|
|
16690
|
-
function createFormulaFunctionMenuItems(fnNames) {
|
|
16691
|
-
return fnNames.sort().map((fnName, i) => {
|
|
16692
|
-
return {
|
|
16693
|
-
name: fnName,
|
|
16694
|
-
sequence: i * 10,
|
|
16695
|
-
action: (env) => env.startCellEdition(`=${fnName}(`),
|
|
16696
|
-
};
|
|
16697
|
-
});
|
|
16698
|
-
}
|
|
17396
|
+
});
|
|
16699
17397
|
|
|
16700
17398
|
class OTRegistry extends Registry {
|
|
16701
17399
|
/**
|
|
@@ -17278,8 +17976,9 @@
|
|
|
17278
17976
|
|
|
17279
17977
|
css /* scss */ `
|
|
17280
17978
|
.o-color-picker-widget {
|
|
17281
|
-
display:
|
|
17979
|
+
display: flex;
|
|
17282
17980
|
position: relative;
|
|
17981
|
+
align-items: center;
|
|
17283
17982
|
|
|
17284
17983
|
.o-color-picker-button-style {
|
|
17285
17984
|
display: flex;
|
|
@@ -17295,6 +17994,7 @@
|
|
|
17295
17994
|
}
|
|
17296
17995
|
|
|
17297
17996
|
.o-color-picker-button {
|
|
17997
|
+
height: 30px;
|
|
17298
17998
|
> span {
|
|
17299
17999
|
border-bottom: 4px solid;
|
|
17300
18000
|
height: 16px;
|
|
@@ -21313,6 +22013,10 @@
|
|
|
21313
22013
|
};
|
|
21314
22014
|
|
|
21315
22015
|
class GridPopover extends owl.Component {
|
|
22016
|
+
constructor() {
|
|
22017
|
+
super(...arguments);
|
|
22018
|
+
this.zIndex = ComponentsImportance.GridPopover;
|
|
22019
|
+
}
|
|
21316
22020
|
get cellPopover() {
|
|
21317
22021
|
const popover = this.env.model.getters.getCellPopover(this.props.hoveredCell);
|
|
21318
22022
|
if (!popover.isOpen) {
|
|
@@ -33175,48 +33879,66 @@
|
|
|
33175
33879
|
this.adjustPositionY(row);
|
|
33176
33880
|
}
|
|
33177
33881
|
}
|
|
33178
|
-
adjustPositionX(
|
|
33882
|
+
adjustPositionX(targetCol) {
|
|
33179
33883
|
const sheetId = this.sheetId;
|
|
33180
|
-
const {
|
|
33181
|
-
|
|
33182
|
-
|
|
33183
|
-
|
|
33184
|
-
|
|
33185
|
-
this.adjustViewportZoneX();
|
|
33186
|
-
}
|
|
33187
|
-
while (col < this.left) {
|
|
33188
|
-
let leftCol;
|
|
33189
|
-
for (leftCol = this.left; leftCol >= 0; leftCol--) {
|
|
33190
|
-
if (!this.getters.isColHidden(sheetId, leftCol)) {
|
|
33884
|
+
const { end } = this.getters.getColDimensions(sheetId, targetCol);
|
|
33885
|
+
const maxCol = this.getters.getNumberCols(sheetId);
|
|
33886
|
+
if (this.offsetX + this.offsetCorrectionX + this.viewportWidth < end) {
|
|
33887
|
+
for (let col = this.left; this.offsetX + this.offsetCorrectionX + this.viewportWidth < end; col++) {
|
|
33888
|
+
if (col > maxCol) {
|
|
33191
33889
|
break;
|
|
33192
33890
|
}
|
|
33891
|
+
if (this.getters.isColHidden(sheetId, col)) {
|
|
33892
|
+
continue;
|
|
33893
|
+
}
|
|
33894
|
+
this.offsetX = this.getters.getColDimensions(sheetId, col).end - this.offsetCorrectionX;
|
|
33895
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33896
|
+
this.adjustViewportZoneX();
|
|
33897
|
+
}
|
|
33898
|
+
}
|
|
33899
|
+
else if (this.left > targetCol) {
|
|
33900
|
+
for (let col = this.left; col >= targetCol; col--) {
|
|
33901
|
+
if (col < 0) {
|
|
33902
|
+
break;
|
|
33903
|
+
}
|
|
33904
|
+
if (this.getters.isColHidden(sheetId, col)) {
|
|
33905
|
+
continue;
|
|
33906
|
+
}
|
|
33907
|
+
this.offsetX = this.getters.getColDimensions(sheetId, col).start - this.offsetCorrectionX;
|
|
33908
|
+
this.offsetScrollbarX = this.offsetX;
|
|
33909
|
+
this.adjustViewportZoneX();
|
|
33193
33910
|
}
|
|
33194
|
-
this.offsetX =
|
|
33195
|
-
this.getters.getColDimensions(sheetId, leftCol - 1).start - this.offsetCorrectionX;
|
|
33196
|
-
this.offsetScrollbarX = this.offsetX;
|
|
33197
|
-
this.adjustViewportZoneX();
|
|
33198
33911
|
}
|
|
33199
33912
|
}
|
|
33200
|
-
adjustPositionY(
|
|
33913
|
+
adjustPositionY(targetRow) {
|
|
33201
33914
|
const sheetId = this.sheetId;
|
|
33202
|
-
|
|
33203
|
-
|
|
33204
|
-
|
|
33205
|
-
|
|
33206
|
-
|
|
33207
|
-
|
|
33208
|
-
|
|
33209
|
-
|
|
33210
|
-
|
|
33211
|
-
|
|
33212
|
-
|
|
33915
|
+
const { end } = this.getters.getRowDimensions(sheetId, targetRow);
|
|
33916
|
+
const maxRow = this.getters.getNumberRows(sheetId);
|
|
33917
|
+
if (this.offsetY + this.viewportHeight + this.offsetCorrectionY < end) {
|
|
33918
|
+
for (let row = this.top; this.offsetY + this.viewportHeight + this.offsetCorrectionY < end; row++) {
|
|
33919
|
+
if (row > maxRow) {
|
|
33920
|
+
break;
|
|
33921
|
+
}
|
|
33922
|
+
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33923
|
+
continue;
|
|
33924
|
+
}
|
|
33925
|
+
this.offsetY = this.getters.getRowDimensions(sheetId, row).end - this.offsetCorrectionY;
|
|
33926
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33927
|
+
this.adjustViewportZoneY();
|
|
33928
|
+
}
|
|
33929
|
+
}
|
|
33930
|
+
else if (this.top > targetRow) {
|
|
33931
|
+
for (let row = this.top; row >= targetRow; row--) {
|
|
33932
|
+
if (row < 0) {
|
|
33213
33933
|
break;
|
|
33214
33934
|
}
|
|
33935
|
+
if (this.getters.isRowHidden(sheetId, row)) {
|
|
33936
|
+
continue;
|
|
33937
|
+
}
|
|
33938
|
+
this.offsetY = this.getters.getRowDimensions(sheetId, row).start - this.offsetCorrectionY;
|
|
33939
|
+
this.offsetScrollbarY = this.offsetY;
|
|
33940
|
+
this.adjustViewportZoneY();
|
|
33215
33941
|
}
|
|
33216
|
-
this.offsetY =
|
|
33217
|
-
this.getters.getRowDimensions(sheetId, topRow - 1).start - this.offsetCorrectionY;
|
|
33218
|
-
this.offsetScrollbarY = this.offsetY;
|
|
33219
|
-
this.adjustViewportZoneY();
|
|
33220
33942
|
}
|
|
33221
33943
|
}
|
|
33222
33944
|
setViewportOffset(offsetX, offsetY) {
|
|
@@ -33409,8 +34131,8 @@
|
|
|
33409
34131
|
* In the absence of a component (standalone model), is it mandatory to set reasonable default values
|
|
33410
34132
|
* to ensure the correct operation of this plugin.
|
|
33411
34133
|
*/
|
|
33412
|
-
this.sheetViewWidth =
|
|
33413
|
-
this.sheetViewHeight =
|
|
34134
|
+
this.sheetViewWidth = getDefaultSheetViewSize();
|
|
34135
|
+
this.sheetViewHeight = getDefaultSheetViewSize();
|
|
33414
34136
|
this.gridOffsetX = 0;
|
|
33415
34137
|
this.gridOffsetY = 0;
|
|
33416
34138
|
this.sheetsWithDirtyViewports = new Set();
|
|
@@ -39841,7 +40563,7 @@
|
|
|
39841
40563
|
const clickableCellRegistry = new Registry();
|
|
39842
40564
|
clickableCellRegistry.add("link", {
|
|
39843
40565
|
condition: (position, env) => !!env.model.getters.getEvaluatedCell(position).link,
|
|
39844
|
-
|
|
40566
|
+
execute: (position, env) => openLink(env.model.getters.getEvaluatedCell(position).link, env),
|
|
39845
40567
|
sequence: 5,
|
|
39846
40568
|
});
|
|
39847
40569
|
|
|
@@ -40298,7 +41020,7 @@
|
|
|
40298
41020
|
name: this.getComposedFnName(fnName, fnValue),
|
|
40299
41021
|
sequence: i,
|
|
40300
41022
|
isReadonlyAllowed: true,
|
|
40301
|
-
|
|
41023
|
+
execute: () => {
|
|
40302
41024
|
this.selectedStatisticFn = fnName;
|
|
40303
41025
|
},
|
|
40304
41026
|
});
|
|
@@ -40466,10 +41188,6 @@
|
|
|
40466
41188
|
font-size: 15px;
|
|
40467
41189
|
border-top: 1px solid lightgrey;
|
|
40468
41190
|
|
|
40469
|
-
.o-add-sheet.disabled {
|
|
40470
|
-
cursor: not-allowed;
|
|
40471
|
-
}
|
|
40472
|
-
|
|
40473
41191
|
.o-sheet-item {
|
|
40474
41192
|
cursor: pointer;
|
|
40475
41193
|
&:hover {
|
|
@@ -40575,7 +41293,7 @@
|
|
|
40575
41293
|
sequence: i,
|
|
40576
41294
|
isReadonlyAllowed: true,
|
|
40577
41295
|
textColor: sheet.isVisible ? undefined : "grey",
|
|
40578
|
-
|
|
41296
|
+
execute: (env) => {
|
|
40579
41297
|
env.model.dispatch("ACTIVATE_SHEET", { sheetIdFrom: from, sheetIdTo: sheetId });
|
|
40580
41298
|
},
|
|
40581
41299
|
});
|
|
@@ -40832,7 +41550,7 @@
|
|
|
40832
41550
|
getClickableAction(position) {
|
|
40833
41551
|
for (const items of clickableCellRegistry.getAll().sort((a, b) => a.sequence - b.sequence)) {
|
|
40834
41552
|
if (items.condition(position, this.env)) {
|
|
40835
|
-
return items.
|
|
41553
|
+
return items.execute;
|
|
40836
41554
|
}
|
|
40837
41555
|
}
|
|
40838
41556
|
return false;
|
|
@@ -41060,21 +41778,66 @@
|
|
|
41060
41778
|
onCloseSidePanel: Function,
|
|
41061
41779
|
};
|
|
41062
41780
|
|
|
41063
|
-
|
|
41064
|
-
|
|
41065
|
-
|
|
41066
|
-
|
|
41067
|
-
|
|
41068
|
-
|
|
41069
|
-
|
|
41070
|
-
|
|
41781
|
+
css /* scss */ `
|
|
41782
|
+
.o-menu-item-button {
|
|
41783
|
+
display: flex;
|
|
41784
|
+
justify-content: center;
|
|
41785
|
+
align-items: center;
|
|
41786
|
+
margin: 2px;
|
|
41787
|
+
padding: 0px 3px;
|
|
41788
|
+
border-radius: 2px;
|
|
41789
|
+
min-width: 20px;
|
|
41790
|
+
}
|
|
41791
|
+
.o-disabled {
|
|
41792
|
+
opacity: 0.6;
|
|
41793
|
+
cursor: default;
|
|
41794
|
+
}
|
|
41795
|
+
`;
|
|
41796
|
+
class ActionButton extends owl.Component {
|
|
41797
|
+
constructor() {
|
|
41798
|
+
super(...arguments);
|
|
41799
|
+
this.actionButton = createAction(this.props.action);
|
|
41071
41800
|
}
|
|
41072
|
-
|
|
41073
|
-
|
|
41074
|
-
env.model.dispatch("ADD_MERGE", { sheetId, target, force: true });
|
|
41075
|
-
});
|
|
41801
|
+
setup() {
|
|
41802
|
+
owl.onWillUpdateProps(() => (this.actionButton = createAction(this.props.action)));
|
|
41076
41803
|
}
|
|
41077
|
-
|
|
41804
|
+
get isVisible() {
|
|
41805
|
+
return this.actionButton.isVisible(this.env);
|
|
41806
|
+
}
|
|
41807
|
+
get isEnabled() {
|
|
41808
|
+
return this.actionButton.isEnabled(this.env);
|
|
41809
|
+
}
|
|
41810
|
+
get isActive() {
|
|
41811
|
+
var _a, _b;
|
|
41812
|
+
return (_b = (_a = this.actionButton).isActive) === null || _b === void 0 ? void 0 : _b.call(_a, this.env);
|
|
41813
|
+
}
|
|
41814
|
+
get title() {
|
|
41815
|
+
const name = this.actionButton.name(this.env);
|
|
41816
|
+
const description = this.actionButton.description;
|
|
41817
|
+
return name + (description ? ` (${description})` : "");
|
|
41818
|
+
}
|
|
41819
|
+
get iconTitle() {
|
|
41820
|
+
return this.actionButton.icon;
|
|
41821
|
+
}
|
|
41822
|
+
onClick(ev) {
|
|
41823
|
+
var _a, _b, _c, _d;
|
|
41824
|
+
if (this.isEnabled) {
|
|
41825
|
+
(_b = (_a = this.props).onClick) === null || _b === void 0 ? void 0 : _b.call(_a, ev);
|
|
41826
|
+
(_d = (_c = this.actionButton).execute) === null || _d === void 0 ? void 0 : _d.call(_c, this.env);
|
|
41827
|
+
}
|
|
41828
|
+
}
|
|
41829
|
+
get buttonStyle() {
|
|
41830
|
+
if (this.props.selectedColor) {
|
|
41831
|
+
return cssPropertiesToCss({
|
|
41832
|
+
"border-bottom": `4px solid ${this.props.selectedColor}`,
|
|
41833
|
+
height: "16px",
|
|
41834
|
+
"margin-top": "2px",
|
|
41835
|
+
});
|
|
41836
|
+
}
|
|
41837
|
+
return "";
|
|
41838
|
+
}
|
|
41839
|
+
}
|
|
41840
|
+
ActionButton.template = "o-spreadsheet-ActionButton";
|
|
41078
41841
|
|
|
41079
41842
|
const COMPOSER_MAX_HEIGHT = 100;
|
|
41080
41843
|
css /* scss */ `
|
|
@@ -41136,6 +41899,14 @@
|
|
|
41136
41899
|
input::-webkit-inner-spin-button {
|
|
41137
41900
|
-webkit-appearance: none;
|
|
41138
41901
|
}
|
|
41902
|
+
|
|
41903
|
+
.o-text-options > div {
|
|
41904
|
+
line-height: 26px;
|
|
41905
|
+
padding: 3px 12px;
|
|
41906
|
+
&:hover {
|
|
41907
|
+
background-color: rgba(0, 0, 0, 0.08);
|
|
41908
|
+
}
|
|
41909
|
+
}
|
|
41139
41910
|
}
|
|
41140
41911
|
`;
|
|
41141
41912
|
class FontSizeEditor extends owl.Component {
|
|
@@ -41204,41 +41975,6 @@
|
|
|
41204
41975
|
dropdownStyle: String,
|
|
41205
41976
|
};
|
|
41206
41977
|
|
|
41207
|
-
const FORMATS = [
|
|
41208
|
-
{ name: "automatic", text: NumberFormatTerms.Automatic },
|
|
41209
|
-
{ name: "number", text: NumberFormatTerms.Number, description: "1,000.12", value: "#,##0.00" },
|
|
41210
|
-
{ name: "percent", text: NumberFormatTerms.Percent, description: "10.12%", value: "0.00%" },
|
|
41211
|
-
{
|
|
41212
|
-
name: "currency",
|
|
41213
|
-
text: NumberFormatTerms.Currency,
|
|
41214
|
-
description: "$1,000.12",
|
|
41215
|
-
value: "[$$]#,##0.00",
|
|
41216
|
-
},
|
|
41217
|
-
{
|
|
41218
|
-
name: "currency_rounded",
|
|
41219
|
-
text: NumberFormatTerms.CurrencyRounded,
|
|
41220
|
-
description: "$1,000",
|
|
41221
|
-
value: "[$$]#,##0",
|
|
41222
|
-
},
|
|
41223
|
-
{ name: "date", text: NumberFormatTerms.Date, description: "9/26/2008", value: "m/d/yyyy" },
|
|
41224
|
-
{ name: "time", text: NumberFormatTerms.Time, description: "10:43:00 PM", value: "hh:mm:ss a" },
|
|
41225
|
-
{
|
|
41226
|
-
name: "datetime",
|
|
41227
|
-
text: NumberFormatTerms.DateTime,
|
|
41228
|
-
description: "9/26/2008 22:43:00",
|
|
41229
|
-
value: "m/d/yyyy hh:mm:ss",
|
|
41230
|
-
},
|
|
41231
|
-
{
|
|
41232
|
-
name: "duration",
|
|
41233
|
-
text: NumberFormatTerms.Duration,
|
|
41234
|
-
description: "27:51:38",
|
|
41235
|
-
value: "hhhh:mm:ss",
|
|
41236
|
-
},
|
|
41237
|
-
];
|
|
41238
|
-
const CUSTOM_FORMATS = [
|
|
41239
|
-
{ name: "custom_currency", text: NumberFormatTerms.CustomCurrency, sidePanel: "CustomCurrency" },
|
|
41240
|
-
];
|
|
41241
|
-
const ICONS_COLOR = "#4A4F59";
|
|
41242
41978
|
// If we ever change these colors, make sure the filter tool stays green to match the icon in the grid
|
|
41243
41979
|
const ACTIVE_BG_COLOR = BACKGROUND_HEADER_FILTER_COLOR;
|
|
41244
41980
|
const ACTIVE_FONT_COLOR = FILTERS_COLOR;
|
|
@@ -41303,23 +42039,10 @@
|
|
|
41303
42039
|
|
|
41304
42040
|
/* Toolbar */
|
|
41305
42041
|
.o-toolbar-tools {
|
|
41306
|
-
|
|
41307
|
-
|
|
41308
|
-
|
|
41309
|
-
|
|
41310
|
-
margin: 2px;
|
|
41311
|
-
padding: 0px 3px;
|
|
41312
|
-
border-radius: 2px;
|
|
41313
|
-
min-width: 20px;
|
|
41314
|
-
}
|
|
41315
|
-
|
|
41316
|
-
.o-filter-tool {
|
|
41317
|
-
margin-right: 8px;
|
|
41318
|
-
}
|
|
41319
|
-
|
|
41320
|
-
.o-border-dropdown {
|
|
41321
|
-
padding: 4px;
|
|
41322
|
-
}
|
|
42042
|
+
display: flex;
|
|
42043
|
+
flex-shrink: 0;
|
|
42044
|
+
margin: 0px 6px 0px 16px;
|
|
42045
|
+
cursor: default;
|
|
41323
42046
|
|
|
41324
42047
|
.o-divider {
|
|
41325
42048
|
display: inline-block;
|
|
@@ -41333,59 +42056,28 @@
|
|
|
41333
42056
|
display: flex;
|
|
41334
42057
|
align-items: center;
|
|
41335
42058
|
|
|
41336
|
-
|
|
42059
|
+
> span {
|
|
41337
42060
|
height: 30px;
|
|
41338
42061
|
}
|
|
41339
42062
|
|
|
41340
|
-
.o-text-options > div {
|
|
41341
|
-
line-height: 26px;
|
|
41342
|
-
padding: 3px 12px;
|
|
41343
|
-
&:hover {
|
|
41344
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
41345
|
-
}
|
|
41346
|
-
}
|
|
41347
|
-
|
|
41348
42063
|
.o-dropdown-content {
|
|
41349
42064
|
position: absolute;
|
|
41350
42065
|
top: 100%;
|
|
41351
42066
|
left: 0;
|
|
41352
42067
|
overflow-y: auto;
|
|
41353
42068
|
overflow-x: hidden;
|
|
42069
|
+
padding: 2px;
|
|
41354
42070
|
z-index: ${ComponentsImportance.Dropdown};
|
|
41355
42071
|
box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
|
|
41356
42072
|
background-color: white;
|
|
41357
42073
|
|
|
41358
42074
|
.o-dropdown-line {
|
|
41359
42075
|
display: flex;
|
|
41360
|
-
margin: 1px;
|
|
41361
42076
|
|
|
41362
|
-
|
|
42077
|
+
> span {
|
|
41363
42078
|
padding: 4px;
|
|
41364
|
-
width: 18px;
|
|
41365
|
-
height: 18px;
|
|
41366
|
-
}
|
|
41367
|
-
}
|
|
41368
|
-
|
|
41369
|
-
&.o-format-tool {
|
|
41370
|
-
padding: 5px 0;
|
|
41371
|
-
width: 250px;
|
|
41372
|
-
font-size: 12px;
|
|
41373
|
-
> div {
|
|
41374
|
-
padding: 0 20px;
|
|
41375
|
-
white-space: nowrap;
|
|
41376
|
-
|
|
41377
|
-
&.o-dropdown-active:before {
|
|
41378
|
-
content: "✓";
|
|
41379
|
-
font-weight: bold;
|
|
41380
|
-
position: absolute;
|
|
41381
|
-
left: 5px;
|
|
41382
|
-
}
|
|
41383
42079
|
}
|
|
41384
42080
|
}
|
|
41385
|
-
|
|
41386
|
-
.o-dropdown-align-item {
|
|
41387
|
-
padding: 7px 10px;
|
|
41388
|
-
}
|
|
41389
42081
|
}
|
|
41390
42082
|
}
|
|
41391
42083
|
}
|
|
@@ -41395,24 +42087,20 @@
|
|
|
41395
42087
|
class TopBar extends owl.Component {
|
|
41396
42088
|
constructor() {
|
|
41397
42089
|
super(...arguments);
|
|
41398
|
-
this.commonFormats = FORMATS;
|
|
41399
|
-
this.customFormats = CUSTOM_FORMATS;
|
|
41400
|
-
this.currentFormatName = "automatic";
|
|
41401
|
-
this.style = {};
|
|
41402
42090
|
this.state = owl.useState({
|
|
41403
42091
|
menuState: { isOpen: false, position: null, menuItems: [] },
|
|
41404
42092
|
activeTool: "",
|
|
42093
|
+
fillColor: "#ffffff",
|
|
42094
|
+
textColor: "#000000",
|
|
41405
42095
|
});
|
|
41406
42096
|
this.isSelectingMenu = false;
|
|
41407
42097
|
this.openedEl = null;
|
|
41408
|
-
this.inMerge = false;
|
|
41409
|
-
this.cannotMerge = false;
|
|
41410
|
-
this.undoTool = false;
|
|
41411
|
-
this.redoTool = false;
|
|
41412
|
-
this.paintFormatTool = false;
|
|
41413
|
-
this.fillColor = "#ffffff";
|
|
41414
|
-
this.textColor = "#000000";
|
|
41415
42098
|
this.menus = [];
|
|
42099
|
+
this.EDIT = ACTION_EDIT;
|
|
42100
|
+
this.FORMAT = ACTION_FORMAT;
|
|
42101
|
+
this.VIEW = ACTION_VIEW;
|
|
42102
|
+
this.formatNumberMenuItemSpec = formatNumberMenuItemSpec;
|
|
42103
|
+
this.isntToolbarMenu = false;
|
|
41416
42104
|
}
|
|
41417
42105
|
get dropdownStyle() {
|
|
41418
42106
|
return `max-height:${this.props.dropdownMaxHeight}px`;
|
|
@@ -41442,28 +42130,8 @@
|
|
|
41442
42130
|
this.props.onClick();
|
|
41443
42131
|
this.closeMenus();
|
|
41444
42132
|
}
|
|
41445
|
-
toggleStyle(style) {
|
|
41446
|
-
setStyle(this.env, { [style]: !this.style[style] });
|
|
41447
|
-
}
|
|
41448
|
-
toggleFormat(formatName) {
|
|
41449
|
-
const formatter = FORMATS.find((f) => f.name === formatName);
|
|
41450
|
-
const value = (formatter && formatter.value) || "";
|
|
41451
|
-
setFormatter(this.env, value);
|
|
41452
|
-
}
|
|
41453
|
-
toggleHorizontalAlign(align) {
|
|
41454
|
-
setStyle(this.env, { align });
|
|
41455
|
-
this.onClick();
|
|
41456
|
-
}
|
|
41457
|
-
toggleVerticalAlign(verticalAlign) {
|
|
41458
|
-
setStyle(this.env, { verticalAlign });
|
|
41459
|
-
this.onClick();
|
|
41460
|
-
}
|
|
41461
|
-
toggleTextWrapping(wrapping) {
|
|
41462
|
-
setStyle(this.env, { wrapping });
|
|
41463
|
-
this.onClick();
|
|
41464
|
-
}
|
|
41465
42133
|
onMenuMouseOver(menu, ev) {
|
|
41466
|
-
if (this.isSelectingMenu) {
|
|
42134
|
+
if (this.isSelectingMenu && this.isntToolbarMenu) {
|
|
41467
42135
|
this.openMenu(menu, ev);
|
|
41468
42136
|
}
|
|
41469
42137
|
}
|
|
@@ -41474,15 +42142,27 @@
|
|
|
41474
42142
|
this.openedEl = isOpen ? null : ev.target;
|
|
41475
42143
|
}
|
|
41476
42144
|
toggleContextMenu(menu, ev) {
|
|
41477
|
-
if (this.state.menuState.isOpen) {
|
|
42145
|
+
if (this.state.menuState.isOpen && this.isntToolbarMenu) {
|
|
41478
42146
|
this.closeMenus();
|
|
41479
42147
|
}
|
|
41480
42148
|
else {
|
|
41481
42149
|
this.openMenu(menu, ev);
|
|
42150
|
+
this.isntToolbarMenu = true;
|
|
42151
|
+
}
|
|
42152
|
+
}
|
|
42153
|
+
toggleToolbarContextMenu(menuSpec, ev) {
|
|
42154
|
+
if (this.state.menuState.isOpen && !this.isntToolbarMenu) {
|
|
42155
|
+
this.closeMenus();
|
|
42156
|
+
}
|
|
42157
|
+
else {
|
|
42158
|
+
const menu = createAction(menuSpec);
|
|
42159
|
+
this.openMenu(menu, ev);
|
|
42160
|
+
this.isntToolbarMenu = false;
|
|
41482
42161
|
}
|
|
41483
42162
|
}
|
|
41484
42163
|
openMenu(menu, ev) {
|
|
41485
|
-
const { left, top, height } = ev.
|
|
42164
|
+
const { left, top, height } = ev.currentTarget.getBoundingClientRect();
|
|
42165
|
+
this.state.activeTool = "";
|
|
41486
42166
|
this.state.menuState.isOpen = true;
|
|
41487
42167
|
this.state.menuState.position = { x: left, y: top + height };
|
|
41488
42168
|
this.state.menuState.menuItems = menu.children(this.env);
|
|
@@ -41499,134 +42179,28 @@
|
|
|
41499
42179
|
this.openedEl = null;
|
|
41500
42180
|
}
|
|
41501
42181
|
updateCellState() {
|
|
41502
|
-
const
|
|
41503
|
-
|
|
41504
|
-
this.
|
|
41505
|
-
const { top, left, right, bottom } = this.env.model.getters.getSelectedZone();
|
|
41506
|
-
const { xSplit, ySplit } = this.env.model.getters.getPaneDivisions(sheetId);
|
|
41507
|
-
this.cannotMerge =
|
|
41508
|
-
zones.length > 1 ||
|
|
41509
|
-
(top === bottom && left === right) ||
|
|
41510
|
-
(left < xSplit && xSplit <= right) ||
|
|
41511
|
-
(top < ySplit && ySplit <= bottom);
|
|
41512
|
-
if (!this.cannotMerge) {
|
|
41513
|
-
const zone = this.env.model.getters.expandZone(sheetId, positionToZone({ col, row }));
|
|
41514
|
-
this.inMerge = isEqual(zones[0], zone);
|
|
41515
|
-
}
|
|
41516
|
-
this.undoTool = this.env.model.getters.canUndo();
|
|
41517
|
-
this.redoTool = this.env.model.getters.canRedo();
|
|
41518
|
-
this.paintFormatTool = this.env.model.getters.isPaintingFormat();
|
|
41519
|
-
const cell = this.env.model.getters.getActiveCell();
|
|
41520
|
-
if (cell.format) {
|
|
41521
|
-
const currentFormat = this.commonFormats.find((f) => f.value === cell.format);
|
|
41522
|
-
this.currentFormatName = currentFormat ? currentFormat.name : "";
|
|
41523
|
-
}
|
|
41524
|
-
else {
|
|
41525
|
-
this.currentFormatName = "automatic";
|
|
41526
|
-
}
|
|
41527
|
-
this.style = { ...this.env.model.getters.getCurrentStyle() };
|
|
41528
|
-
this.style.align = this.style.align || cell.defaultAlign;
|
|
41529
|
-
this.fillColor = this.style.fillColor || "#ffffff";
|
|
41530
|
-
this.textColor = this.style.textColor || "#000000";
|
|
42182
|
+
const style = this.env.model.getters.getCurrentStyle();
|
|
42183
|
+
this.state.fillColor = style.fillColor || "#ffffff";
|
|
42184
|
+
this.state.textColor = style.textColor || "#000000";
|
|
41531
42185
|
this.menus = topbarMenuRegistry.getMenuItems();
|
|
41532
42186
|
}
|
|
41533
42187
|
getMenuName(menu) {
|
|
41534
42188
|
return menu.name(this.env);
|
|
41535
42189
|
}
|
|
41536
|
-
toggleMerge() {
|
|
41537
|
-
if (this.cannotMerge) {
|
|
41538
|
-
return;
|
|
41539
|
-
}
|
|
41540
|
-
const zones = this.env.model.getters.getSelectedZones();
|
|
41541
|
-
const target = [zones[zones.length - 1]];
|
|
41542
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41543
|
-
if (this.inMerge) {
|
|
41544
|
-
this.env.model.dispatch("REMOVE_MERGE", { sheetId, target });
|
|
41545
|
-
}
|
|
41546
|
-
else {
|
|
41547
|
-
interactiveAddMerge(this.env, sheetId, target);
|
|
41548
|
-
}
|
|
41549
|
-
}
|
|
41550
42190
|
setColor(target, color) {
|
|
41551
42191
|
setStyle(this.env, { [target]: color });
|
|
41552
42192
|
this.onClick();
|
|
41553
42193
|
}
|
|
41554
|
-
setBorder(command) {
|
|
41555
|
-
this.env.model.dispatch("SET_FORMATTING", {
|
|
41556
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41557
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41558
|
-
border: command,
|
|
41559
|
-
});
|
|
41560
|
-
this.onClick();
|
|
41561
|
-
}
|
|
41562
|
-
setFormat(format, custom) {
|
|
41563
|
-
if (!custom) {
|
|
41564
|
-
this.toggleFormat(format);
|
|
41565
|
-
}
|
|
41566
|
-
else {
|
|
41567
|
-
this.openCustomFormatSidePanel(format);
|
|
41568
|
-
}
|
|
41569
|
-
this.onClick();
|
|
41570
|
-
}
|
|
41571
|
-
openCustomFormatSidePanel(custom) {
|
|
41572
|
-
const customFormatter = CUSTOM_FORMATS.find((c) => c.name === custom);
|
|
41573
|
-
const sidePanel = (customFormatter && customFormatter.sidePanel) || "";
|
|
41574
|
-
this.env.openSidePanel(sidePanel);
|
|
41575
|
-
}
|
|
41576
|
-
setDecimal(step) {
|
|
41577
|
-
this.env.model.dispatch("SET_DECIMAL", {
|
|
41578
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41579
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41580
|
-
step: step,
|
|
41581
|
-
});
|
|
41582
|
-
}
|
|
41583
|
-
paintFormat() {
|
|
41584
|
-
this.env.model.dispatch("ACTIVATE_PAINT_FORMAT", {
|
|
41585
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41586
|
-
});
|
|
41587
|
-
}
|
|
41588
|
-
clearFormatting() {
|
|
41589
|
-
this.env.model.dispatch("CLEAR_FORMATTING", {
|
|
41590
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41591
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41592
|
-
});
|
|
41593
|
-
}
|
|
41594
|
-
doAction(action) {
|
|
41595
|
-
action(this.env);
|
|
41596
|
-
this.closeMenus();
|
|
41597
|
-
}
|
|
41598
|
-
undo() {
|
|
41599
|
-
this.env.model.dispatch("REQUEST_UNDO");
|
|
41600
|
-
}
|
|
41601
|
-
redo() {
|
|
41602
|
-
this.env.model.dispatch("REQUEST_REDO");
|
|
41603
|
-
}
|
|
41604
|
-
get selectionContainsFilter() {
|
|
41605
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41606
|
-
const selectedZones = this.env.model.getters.getSelectedZones();
|
|
41607
|
-
return this.env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
41608
|
-
}
|
|
41609
|
-
get cannotCreateFilter() {
|
|
41610
|
-
return !areZonesContinuous(...this.env.model.getters.getSelectedZones());
|
|
41611
|
-
}
|
|
41612
|
-
createFilter() {
|
|
41613
|
-
if (this.cannotCreateFilter) {
|
|
41614
|
-
return;
|
|
41615
|
-
}
|
|
41616
|
-
this.env.model.selection.selectTableAroundSelection();
|
|
41617
|
-
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
41618
|
-
const selection = this.env.model.getters.getSelectedZones();
|
|
41619
|
-
interactiveAddFilter(this.env, sheetId, selection);
|
|
41620
|
-
}
|
|
41621
|
-
removeFilter() {
|
|
41622
|
-
this.env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
41623
|
-
sheetId: this.env.model.getters.getActiveSheetId(),
|
|
41624
|
-
target: this.env.model.getters.getSelectedZones(),
|
|
41625
|
-
});
|
|
41626
|
-
}
|
|
41627
42194
|
}
|
|
41628
42195
|
TopBar.template = "o-spreadsheet-TopBar";
|
|
41629
|
-
TopBar.components = {
|
|
42196
|
+
TopBar.components = {
|
|
42197
|
+
ColorPickerWidget,
|
|
42198
|
+
ColorPicker,
|
|
42199
|
+
Menu,
|
|
42200
|
+
TopBarComposer,
|
|
42201
|
+
FontSizeEditor,
|
|
42202
|
+
ActionButton,
|
|
42203
|
+
};
|
|
41630
42204
|
TopBar.props = {
|
|
41631
42205
|
onClick: Function,
|
|
41632
42206
|
focusComposer: String,
|
|
@@ -41736,6 +42310,10 @@
|
|
|
41736
42310
|
height: ${CF_ICON_EDGE_LENGTH}px;
|
|
41737
42311
|
vertical-align: sub;
|
|
41738
42312
|
}
|
|
42313
|
+
|
|
42314
|
+
.o-text-icon {
|
|
42315
|
+
vertical-align: middle;
|
|
42316
|
+
}
|
|
41739
42317
|
`;
|
|
41740
42318
|
// -----------------------------------------------------------------------------
|
|
41741
42319
|
// GRID STYLE
|
|
@@ -45507,6 +46085,7 @@
|
|
|
45507
46085
|
inverseCommandRegistry,
|
|
45508
46086
|
urlRegistry,
|
|
45509
46087
|
cellPopoverRegistry,
|
|
46088
|
+
numberFormatMenuRegistry,
|
|
45510
46089
|
};
|
|
45511
46090
|
const helpers = {
|
|
45512
46091
|
arg,
|
|
@@ -45591,15 +46170,16 @@
|
|
|
45591
46170
|
exports.parse = parse;
|
|
45592
46171
|
exports.readonlyAllowedCommands = readonlyAllowedCommands;
|
|
45593
46172
|
exports.registries = registries;
|
|
46173
|
+
exports.setDefaultSheetViewSize = setDefaultSheetViewSize;
|
|
45594
46174
|
exports.setTranslationMethod = setTranslationMethod;
|
|
45595
46175
|
exports.tokenize = tokenize;
|
|
45596
46176
|
|
|
45597
46177
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
45598
46178
|
|
|
45599
46179
|
|
|
45600
|
-
__info__.version = '16.3.0-alpha.
|
|
45601
|
-
__info__.date = '2023-04-
|
|
45602
|
-
__info__.hash = '
|
|
46180
|
+
__info__.version = '16.3.0-alpha.4';
|
|
46181
|
+
__info__.date = '2023-04-14T12:49:16.671Z';
|
|
46182
|
+
__info__.hash = '6824b8a';
|
|
45603
46183
|
|
|
45604
46184
|
|
|
45605
46185
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|