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