@odoo/o-spreadsheet 17.0.17 → 17.0.19
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 +424 -446
- package/dist/o-spreadsheet.d.ts +7 -7
- package/dist/o-spreadsheet.esm.js +424 -446
- package/dist/o-spreadsheet.iife.js +424 -446
- package/dist/o-spreadsheet.iife.min.js +272 -268
- package/dist/o_spreadsheet.xml +6 -5
- package/package.json +1 -1
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* This file is generated by o-spreadsheet build tools. Do not edit it.
|
|
4
4
|
* @see https://github.com/odoo/o-spreadsheet
|
|
5
|
-
* @version 17.0.
|
|
6
|
-
* @date 2024-04-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.0.19
|
|
6
|
+
* @date 2024-04-18T16:41:42.291Z
|
|
7
|
+
* @hash 9f3317a
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function (exports, owl) {
|
|
@@ -649,7 +649,7 @@
|
|
|
649
649
|
if (typeof o1 !== typeof o2)
|
|
650
650
|
return false;
|
|
651
651
|
if (typeof o1 !== "object")
|
|
652
|
-
return
|
|
652
|
+
return false;
|
|
653
653
|
// Objects can have different keys if the values are undefined
|
|
654
654
|
for (const key in o2) {
|
|
655
655
|
if (!(key in o1) && o2[key] !== undefined) {
|
|
@@ -8119,6 +8119,7 @@
|
|
|
8119
8119
|
this.save();
|
|
8120
8120
|
}
|
|
8121
8121
|
ev.stopPropagation();
|
|
8122
|
+
ev.preventDefault();
|
|
8122
8123
|
break;
|
|
8123
8124
|
case "Escape":
|
|
8124
8125
|
this.cancel();
|
|
@@ -19901,6 +19902,332 @@
|
|
|
19901
19902
|
}
|
|
19902
19903
|
}
|
|
19903
19904
|
|
|
19905
|
+
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
19906
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19907
|
+
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
19908
|
+
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
19909
|
+
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
19910
|
+
env.raiseError(MergeErrorMessage);
|
|
19911
|
+
}
|
|
19912
|
+
}
|
|
19913
|
+
|
|
19914
|
+
const hideCols = {
|
|
19915
|
+
name: HIDE_COLUMNS_NAME,
|
|
19916
|
+
execute: (env) => {
|
|
19917
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19918
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19919
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19920
|
+
dimension: "COL",
|
|
19921
|
+
elements: columns,
|
|
19922
|
+
});
|
|
19923
|
+
},
|
|
19924
|
+
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
19925
|
+
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
19926
|
+
};
|
|
19927
|
+
const unhideCols = {
|
|
19928
|
+
name: _t("Unhide columns"),
|
|
19929
|
+
execute: (env) => {
|
|
19930
|
+
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
19931
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19932
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19933
|
+
dimension: "COL",
|
|
19934
|
+
elements: columns,
|
|
19935
|
+
});
|
|
19936
|
+
},
|
|
19937
|
+
isVisible: (env) => {
|
|
19938
|
+
const hiddenCols = env.model.getters
|
|
19939
|
+
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
19940
|
+
.flat();
|
|
19941
|
+
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
19942
|
+
return currentCols.some((col) => hiddenCols.includes(col));
|
|
19943
|
+
},
|
|
19944
|
+
};
|
|
19945
|
+
const unhideAllCols = {
|
|
19946
|
+
name: _t("Unhide all columns"),
|
|
19947
|
+
execute: (env) => {
|
|
19948
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19949
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19950
|
+
sheetId,
|
|
19951
|
+
dimension: "COL",
|
|
19952
|
+
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
19953
|
+
});
|
|
19954
|
+
},
|
|
19955
|
+
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19956
|
+
};
|
|
19957
|
+
const hideRows = {
|
|
19958
|
+
name: HIDE_ROWS_NAME,
|
|
19959
|
+
execute: (env) => {
|
|
19960
|
+
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
19961
|
+
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
19962
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19963
|
+
dimension: "ROW",
|
|
19964
|
+
elements: rows,
|
|
19965
|
+
});
|
|
19966
|
+
},
|
|
19967
|
+
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
19968
|
+
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
19969
|
+
};
|
|
19970
|
+
const unhideRows = {
|
|
19971
|
+
name: _t("Unhide rows"),
|
|
19972
|
+
execute: (env) => {
|
|
19973
|
+
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
19974
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19975
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
19976
|
+
dimension: "ROW",
|
|
19977
|
+
elements: columns,
|
|
19978
|
+
});
|
|
19979
|
+
},
|
|
19980
|
+
isVisible: (env) => {
|
|
19981
|
+
const hiddenRows = env.model.getters
|
|
19982
|
+
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
19983
|
+
.flat();
|
|
19984
|
+
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
19985
|
+
return currentRows.some((col) => hiddenRows.includes(col));
|
|
19986
|
+
},
|
|
19987
|
+
};
|
|
19988
|
+
const unhideAllRows = {
|
|
19989
|
+
name: _t("Unhide all rows"),
|
|
19990
|
+
execute: (env) => {
|
|
19991
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
19992
|
+
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
19993
|
+
sheetId,
|
|
19994
|
+
dimension: "ROW",
|
|
19995
|
+
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
19996
|
+
});
|
|
19997
|
+
},
|
|
19998
|
+
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
19999
|
+
};
|
|
20000
|
+
const unFreezePane = {
|
|
20001
|
+
name: _t("Unfreeze"),
|
|
20002
|
+
isVisible: (env) => {
|
|
20003
|
+
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20004
|
+
return xSplit + ySplit > 0;
|
|
20005
|
+
},
|
|
20006
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20007
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20008
|
+
}),
|
|
20009
|
+
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20010
|
+
};
|
|
20011
|
+
const freezePane = {
|
|
20012
|
+
name: _t("Freeze"),
|
|
20013
|
+
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20014
|
+
};
|
|
20015
|
+
const unFreezeRows = {
|
|
20016
|
+
name: _t("No rows"),
|
|
20017
|
+
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20018
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20019
|
+
}),
|
|
20020
|
+
isReadonlyAllowed: true,
|
|
20021
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20022
|
+
};
|
|
20023
|
+
const freezeFirstRow = {
|
|
20024
|
+
name: _t("1 row"),
|
|
20025
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20026
|
+
isReadonlyAllowed: true,
|
|
20027
|
+
};
|
|
20028
|
+
const freezeSecondRow = {
|
|
20029
|
+
name: _t("2 rows"),
|
|
20030
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20031
|
+
isReadonlyAllowed: true,
|
|
20032
|
+
};
|
|
20033
|
+
const freezeCurrentRow = {
|
|
20034
|
+
name: _t("Up to current row"),
|
|
20035
|
+
execute: (env) => {
|
|
20036
|
+
const { bottom } = env.model.getters.getSelectedZone();
|
|
20037
|
+
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20038
|
+
},
|
|
20039
|
+
isReadonlyAllowed: true,
|
|
20040
|
+
};
|
|
20041
|
+
const unFreezeCols = {
|
|
20042
|
+
name: _t("No columns"),
|
|
20043
|
+
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20044
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20045
|
+
}),
|
|
20046
|
+
isReadonlyAllowed: true,
|
|
20047
|
+
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20048
|
+
};
|
|
20049
|
+
const freezeFirstCol = {
|
|
20050
|
+
name: _t("1 column"),
|
|
20051
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20052
|
+
isReadonlyAllowed: true,
|
|
20053
|
+
};
|
|
20054
|
+
const freezeSecondCol = {
|
|
20055
|
+
name: _t("2 columns"),
|
|
20056
|
+
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20057
|
+
isReadonlyAllowed: true,
|
|
20058
|
+
};
|
|
20059
|
+
const freezeCurrentCol = {
|
|
20060
|
+
name: _t("Up to current column"),
|
|
20061
|
+
execute: (env) => {
|
|
20062
|
+
const { right } = env.model.getters.getSelectedZone();
|
|
20063
|
+
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20064
|
+
},
|
|
20065
|
+
isReadonlyAllowed: true,
|
|
20066
|
+
};
|
|
20067
|
+
const viewGridlines = {
|
|
20068
|
+
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20069
|
+
? _t("Hide gridlines")
|
|
20070
|
+
: _t("Show gridlines"),
|
|
20071
|
+
execute: (env) => {
|
|
20072
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20073
|
+
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20074
|
+
sheetId,
|
|
20075
|
+
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20076
|
+
});
|
|
20077
|
+
},
|
|
20078
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20079
|
+
};
|
|
20080
|
+
const viewFormulas = {
|
|
20081
|
+
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20082
|
+
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20083
|
+
isReadonlyAllowed: true,
|
|
20084
|
+
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20085
|
+
};
|
|
20086
|
+
const createRemoveFilter = {
|
|
20087
|
+
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20088
|
+
isActive: (env) => selectionContainsFilter(env),
|
|
20089
|
+
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20090
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
20091
|
+
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20092
|
+
};
|
|
20093
|
+
const groupColumns = {
|
|
20094
|
+
name: (env) => {
|
|
20095
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20096
|
+
if (selection.left === selection.right) {
|
|
20097
|
+
return _t("Group column %s", numberToLetters(selection.left));
|
|
20098
|
+
}
|
|
20099
|
+
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20100
|
+
},
|
|
20101
|
+
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20102
|
+
isVisible: (env) => {
|
|
20103
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20104
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20105
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20106
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20107
|
+
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20108
|
+
},
|
|
20109
|
+
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20110
|
+
};
|
|
20111
|
+
const groupRows = {
|
|
20112
|
+
name: (env) => {
|
|
20113
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20114
|
+
if (selection.top === selection.bottom) {
|
|
20115
|
+
return _t("Group row %s", String(selection.top + 1));
|
|
20116
|
+
}
|
|
20117
|
+
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20118
|
+
},
|
|
20119
|
+
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20120
|
+
isVisible: (env) => {
|
|
20121
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20122
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20123
|
+
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20124
|
+
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20125
|
+
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20126
|
+
},
|
|
20127
|
+
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20128
|
+
};
|
|
20129
|
+
const ungroupColumns = {
|
|
20130
|
+
name: (env) => {
|
|
20131
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20132
|
+
if (selection.left === selection.right) {
|
|
20133
|
+
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20134
|
+
}
|
|
20135
|
+
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20136
|
+
},
|
|
20137
|
+
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20138
|
+
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20139
|
+
};
|
|
20140
|
+
const ungroupRows = {
|
|
20141
|
+
name: (env) => {
|
|
20142
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20143
|
+
if (selection.top === selection.bottom) {
|
|
20144
|
+
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20145
|
+
}
|
|
20146
|
+
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20147
|
+
},
|
|
20148
|
+
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20149
|
+
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20150
|
+
};
|
|
20151
|
+
function selectionContainsFilter(env) {
|
|
20152
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20153
|
+
const selectedZones = env.model.getters.getSelectedZones();
|
|
20154
|
+
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20155
|
+
}
|
|
20156
|
+
function cannotCreateFilter(env) {
|
|
20157
|
+
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20158
|
+
}
|
|
20159
|
+
function createRemoveFilterAction(env) {
|
|
20160
|
+
if (selectionContainsFilter(env)) {
|
|
20161
|
+
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20162
|
+
sheetId: env.model.getters.getActiveSheetId(),
|
|
20163
|
+
target: env.model.getters.getSelectedZones(),
|
|
20164
|
+
});
|
|
20165
|
+
return;
|
|
20166
|
+
}
|
|
20167
|
+
if (cannotCreateFilter(env)) {
|
|
20168
|
+
return;
|
|
20169
|
+
}
|
|
20170
|
+
env.model.selection.selectTableAroundSelection();
|
|
20171
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20172
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20173
|
+
interactiveAddFilter(env, sheetId, selection);
|
|
20174
|
+
}
|
|
20175
|
+
function groupHeadersAction(env, dim) {
|
|
20176
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20177
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20178
|
+
env.model.dispatch("GROUP_HEADERS", {
|
|
20179
|
+
sheetId,
|
|
20180
|
+
dimension: dim,
|
|
20181
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20182
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20183
|
+
});
|
|
20184
|
+
}
|
|
20185
|
+
function ungroupHeaders(env, dim) {
|
|
20186
|
+
const selection = env.model.getters.getSelectedZone();
|
|
20187
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20188
|
+
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20189
|
+
sheetId,
|
|
20190
|
+
dimension: dim,
|
|
20191
|
+
start: dim === "COL" ? selection.left : selection.top,
|
|
20192
|
+
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20193
|
+
});
|
|
20194
|
+
}
|
|
20195
|
+
function canUngroupHeaders(env, dimension) {
|
|
20196
|
+
const sheetId = env.model.getters.getActiveSheetId();
|
|
20197
|
+
const selection = env.model.getters.getSelectedZones();
|
|
20198
|
+
return (selection.length === 1 &&
|
|
20199
|
+
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20200
|
+
}
|
|
20201
|
+
|
|
20202
|
+
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20203
|
+
__proto__: null,
|
|
20204
|
+
canUngroupHeaders: canUngroupHeaders,
|
|
20205
|
+
createRemoveFilter: createRemoveFilter,
|
|
20206
|
+
createRemoveFilterAction: createRemoveFilterAction,
|
|
20207
|
+
freezeCurrentCol: freezeCurrentCol,
|
|
20208
|
+
freezeCurrentRow: freezeCurrentRow,
|
|
20209
|
+
freezeFirstCol: freezeFirstCol,
|
|
20210
|
+
freezeFirstRow: freezeFirstRow,
|
|
20211
|
+
freezePane: freezePane,
|
|
20212
|
+
freezeSecondCol: freezeSecondCol,
|
|
20213
|
+
freezeSecondRow: freezeSecondRow,
|
|
20214
|
+
groupColumns: groupColumns,
|
|
20215
|
+
groupRows: groupRows,
|
|
20216
|
+
hideCols: hideCols,
|
|
20217
|
+
hideRows: hideRows,
|
|
20218
|
+
unFreezeCols: unFreezeCols,
|
|
20219
|
+
unFreezePane: unFreezePane,
|
|
20220
|
+
unFreezeRows: unFreezeRows,
|
|
20221
|
+
ungroupColumns: ungroupColumns,
|
|
20222
|
+
ungroupRows: ungroupRows,
|
|
20223
|
+
unhideAllCols: unhideAllCols,
|
|
20224
|
+
unhideAllRows: unhideAllRows,
|
|
20225
|
+
unhideCols: unhideCols,
|
|
20226
|
+
unhideRows: unhideRows,
|
|
20227
|
+
viewFormulas: viewFormulas,
|
|
20228
|
+
viewGridlines: viewGridlines
|
|
20229
|
+
});
|
|
20230
|
+
|
|
19904
20231
|
const sortRange = {
|
|
19905
20232
|
name: _t("Sort range"),
|
|
19906
20233
|
isVisible: IS_ONLY_ONE_RANGE,
|
|
@@ -19943,32 +20270,15 @@
|
|
|
19943
20270
|
},
|
|
19944
20271
|
icon: "o-spreadsheet-Icon.SORT_DESCENDING",
|
|
19945
20272
|
};
|
|
19946
|
-
const
|
|
19947
|
-
name: _t("Create filter"),
|
|
19948
|
-
execute: (env) =>
|
|
19949
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19950
|
-
const selection = env.model.getters.getSelection().zones;
|
|
19951
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
19952
|
-
},
|
|
19953
|
-
isVisible: (env) => !SELECTION_CONTAINS_FILTER(env),
|
|
20273
|
+
const addRemoveDataFilter = {
|
|
20274
|
+
name: (env) => SELECTION_CONTAINS_FILTER(env) ? _t("Remove filter") : _t("Create filter"),
|
|
20275
|
+
execute: (env) => createRemoveFilterAction(env),
|
|
19954
20276
|
isEnabled: (env) => {
|
|
19955
20277
|
const selectedZones = env.model.getters.getSelectedZones();
|
|
19956
20278
|
return areZonesContinuous(...selectedZones);
|
|
19957
20279
|
},
|
|
19958
20280
|
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19959
20281
|
};
|
|
19960
|
-
const removeDataFilter = {
|
|
19961
|
-
name: _t("Remove filter"),
|
|
19962
|
-
execute: (env) => {
|
|
19963
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
19964
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
19965
|
-
sheetId,
|
|
19966
|
-
target: env.model.getters.getSelectedZones(),
|
|
19967
|
-
});
|
|
19968
|
-
},
|
|
19969
|
-
isVisible: SELECTION_CONTAINS_FILTER,
|
|
19970
|
-
icon: "o-spreadsheet-Icon.MENU_FILTER_ICON",
|
|
19971
|
-
};
|
|
19972
20282
|
const splitToColumns = {
|
|
19973
20283
|
name: _t("Split text to columns"),
|
|
19974
20284
|
sequence: 1,
|
|
@@ -20374,331 +20684,6 @@
|
|
|
20374
20684
|
textColor: textColor
|
|
20375
20685
|
});
|
|
20376
20686
|
|
|
20377
|
-
function interactiveFreezeColumnsRows(env, dimension, base) {
|
|
20378
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20379
|
-
const cmd = dimension === "COL" ? "FREEZE_COLUMNS" : "FREEZE_ROWS";
|
|
20380
|
-
const result = env.model.dispatch(cmd, { sheetId, quantity: base });
|
|
20381
|
-
if (result.isCancelledBecause("MergeOverlap" /* CommandResult.MergeOverlap */)) {
|
|
20382
|
-
env.raiseError(MergeErrorMessage);
|
|
20383
|
-
}
|
|
20384
|
-
}
|
|
20385
|
-
|
|
20386
|
-
const hideCols = {
|
|
20387
|
-
name: HIDE_COLUMNS_NAME,
|
|
20388
|
-
execute: (env) => {
|
|
20389
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20390
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20391
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20392
|
-
dimension: "COL",
|
|
20393
|
-
elements: columns,
|
|
20394
|
-
});
|
|
20395
|
-
},
|
|
20396
|
-
isVisible: NOT_ALL_VISIBLE_COLS_SELECTED,
|
|
20397
|
-
icon: "o-spreadsheet-Icon.HIDE_COL",
|
|
20398
|
-
};
|
|
20399
|
-
const unhideCols = {
|
|
20400
|
-
name: _t("Unhide columns"),
|
|
20401
|
-
execute: (env) => {
|
|
20402
|
-
const columns = env.model.getters.getElementsFromSelection("COL");
|
|
20403
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20404
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20405
|
-
dimension: "COL",
|
|
20406
|
-
elements: columns,
|
|
20407
|
-
});
|
|
20408
|
-
},
|
|
20409
|
-
isVisible: (env) => {
|
|
20410
|
-
const hiddenCols = env.model.getters
|
|
20411
|
-
.getHiddenColsGroups(env.model.getters.getActiveSheetId())
|
|
20412
|
-
.flat();
|
|
20413
|
-
const currentCols = env.model.getters.getElementsFromSelection("COL");
|
|
20414
|
-
return currentCols.some((col) => hiddenCols.includes(col));
|
|
20415
|
-
},
|
|
20416
|
-
};
|
|
20417
|
-
const unhideAllCols = {
|
|
20418
|
-
name: _t("Unhide all columns"),
|
|
20419
|
-
execute: (env) => {
|
|
20420
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20421
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20422
|
-
sheetId,
|
|
20423
|
-
dimension: "COL",
|
|
20424
|
-
elements: Array.from(Array(env.model.getters.getNumberCols(sheetId)).keys()),
|
|
20425
|
-
});
|
|
20426
|
-
},
|
|
20427
|
-
isVisible: (env) => env.model.getters.getHiddenColsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20428
|
-
};
|
|
20429
|
-
const hideRows = {
|
|
20430
|
-
name: HIDE_ROWS_NAME,
|
|
20431
|
-
execute: (env) => {
|
|
20432
|
-
const rows = env.model.getters.getElementsFromSelection("ROW");
|
|
20433
|
-
env.model.dispatch("HIDE_COLUMNS_ROWS", {
|
|
20434
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20435
|
-
dimension: "ROW",
|
|
20436
|
-
elements: rows,
|
|
20437
|
-
});
|
|
20438
|
-
},
|
|
20439
|
-
isVisible: NOT_ALL_VISIBLE_ROWS_SELECTED,
|
|
20440
|
-
icon: "o-spreadsheet-Icon.HIDE_ROW",
|
|
20441
|
-
};
|
|
20442
|
-
const unhideRows = {
|
|
20443
|
-
name: _t("Unhide rows"),
|
|
20444
|
-
execute: (env) => {
|
|
20445
|
-
const columns = env.model.getters.getElementsFromSelection("ROW");
|
|
20446
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20447
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20448
|
-
dimension: "ROW",
|
|
20449
|
-
elements: columns,
|
|
20450
|
-
});
|
|
20451
|
-
},
|
|
20452
|
-
isVisible: (env) => {
|
|
20453
|
-
const hiddenRows = env.model.getters
|
|
20454
|
-
.getHiddenRowsGroups(env.model.getters.getActiveSheetId())
|
|
20455
|
-
.flat();
|
|
20456
|
-
const currentRows = env.model.getters.getElementsFromSelection("ROW");
|
|
20457
|
-
return currentRows.some((col) => hiddenRows.includes(col));
|
|
20458
|
-
},
|
|
20459
|
-
};
|
|
20460
|
-
const unhideAllRows = {
|
|
20461
|
-
name: _t("Unhide all rows"),
|
|
20462
|
-
execute: (env) => {
|
|
20463
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20464
|
-
env.model.dispatch("UNHIDE_COLUMNS_ROWS", {
|
|
20465
|
-
sheetId,
|
|
20466
|
-
dimension: "ROW",
|
|
20467
|
-
elements: Array.from(Array(env.model.getters.getNumberRows(sheetId)).keys()),
|
|
20468
|
-
});
|
|
20469
|
-
},
|
|
20470
|
-
isVisible: (env) => env.model.getters.getHiddenRowsGroups(env.model.getters.getActiveSheetId()).length > 0,
|
|
20471
|
-
};
|
|
20472
|
-
const unFreezePane = {
|
|
20473
|
-
name: _t("Unfreeze"),
|
|
20474
|
-
isVisible: (env) => {
|
|
20475
|
-
const { xSplit, ySplit } = env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId());
|
|
20476
|
-
return xSplit + ySplit > 0;
|
|
20477
|
-
},
|
|
20478
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS_ROWS", {
|
|
20479
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20480
|
-
}),
|
|
20481
|
-
icon: "o-spreadsheet-Icon.UNFREEZE",
|
|
20482
|
-
};
|
|
20483
|
-
const freezePane = {
|
|
20484
|
-
name: _t("Freeze"),
|
|
20485
|
-
icon: "o-spreadsheet-Icon.FREEZE",
|
|
20486
|
-
};
|
|
20487
|
-
const unFreezeRows = {
|
|
20488
|
-
name: _t("No rows"),
|
|
20489
|
-
execute: (env) => env.model.dispatch("UNFREEZE_ROWS", {
|
|
20490
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20491
|
-
}),
|
|
20492
|
-
isReadonlyAllowed: true,
|
|
20493
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).ySplit,
|
|
20494
|
-
};
|
|
20495
|
-
const freezeFirstRow = {
|
|
20496
|
-
name: _t("1 row"),
|
|
20497
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 1),
|
|
20498
|
-
isReadonlyAllowed: true,
|
|
20499
|
-
};
|
|
20500
|
-
const freezeSecondRow = {
|
|
20501
|
-
name: _t("2 rows"),
|
|
20502
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "ROW", 2),
|
|
20503
|
-
isReadonlyAllowed: true,
|
|
20504
|
-
};
|
|
20505
|
-
const freezeCurrentRow = {
|
|
20506
|
-
name: _t("Up to current row"),
|
|
20507
|
-
execute: (env) => {
|
|
20508
|
-
const { bottom } = env.model.getters.getSelectedZone();
|
|
20509
|
-
interactiveFreezeColumnsRows(env, "ROW", bottom + 1);
|
|
20510
|
-
},
|
|
20511
|
-
isReadonlyAllowed: true,
|
|
20512
|
-
};
|
|
20513
|
-
const unFreezeCols = {
|
|
20514
|
-
name: _t("No columns"),
|
|
20515
|
-
execute: (env) => env.model.dispatch("UNFREEZE_COLUMNS", {
|
|
20516
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20517
|
-
}),
|
|
20518
|
-
isReadonlyAllowed: true,
|
|
20519
|
-
isVisible: (env) => !!env.model.getters.getPaneDivisions(env.model.getters.getActiveSheetId()).xSplit,
|
|
20520
|
-
};
|
|
20521
|
-
const freezeFirstCol = {
|
|
20522
|
-
name: _t("1 column"),
|
|
20523
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 1),
|
|
20524
|
-
isReadonlyAllowed: true,
|
|
20525
|
-
};
|
|
20526
|
-
const freezeSecondCol = {
|
|
20527
|
-
name: _t("2 columns"),
|
|
20528
|
-
execute: (env) => interactiveFreezeColumnsRows(env, "COL", 2),
|
|
20529
|
-
isReadonlyAllowed: true,
|
|
20530
|
-
};
|
|
20531
|
-
const freezeCurrentCol = {
|
|
20532
|
-
name: _t("Up to current column"),
|
|
20533
|
-
execute: (env) => {
|
|
20534
|
-
const { right } = env.model.getters.getSelectedZone();
|
|
20535
|
-
interactiveFreezeColumnsRows(env, "COL", right + 1);
|
|
20536
|
-
},
|
|
20537
|
-
isReadonlyAllowed: true,
|
|
20538
|
-
};
|
|
20539
|
-
const viewGridlines = {
|
|
20540
|
-
name: (env) => env.model.getters.getGridLinesVisibility(env.model.getters.getActiveSheetId())
|
|
20541
|
-
? _t("Hide gridlines")
|
|
20542
|
-
: _t("Show gridlines"),
|
|
20543
|
-
execute: (env) => {
|
|
20544
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20545
|
-
env.model.dispatch("SET_GRID_LINES_VISIBILITY", {
|
|
20546
|
-
sheetId,
|
|
20547
|
-
areGridLinesVisible: !env.model.getters.getGridLinesVisibility(sheetId),
|
|
20548
|
-
});
|
|
20549
|
-
},
|
|
20550
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_GRID",
|
|
20551
|
-
};
|
|
20552
|
-
const viewFormulas = {
|
|
20553
|
-
name: (env) => env.model.getters.shouldShowFormulas() ? "Hide formulas" : _t("Show formulas"),
|
|
20554
|
-
execute: (env) => env.model.dispatch("SET_FORMULA_VISIBILITY", { show: !env.model.getters.shouldShowFormulas() }),
|
|
20555
|
-
isReadonlyAllowed: true,
|
|
20556
|
-
icon: "o-spreadsheet-Icon.SHOW_HIDE_FORMULA",
|
|
20557
|
-
};
|
|
20558
|
-
const createRemoveFilter = {
|
|
20559
|
-
name: (env) => selectionContainsFilter(env) ? _t("Remove selected filters") : _t("Create filter"),
|
|
20560
|
-
isActive: (env) => selectionContainsFilter(env),
|
|
20561
|
-
isEnabled: (env) => !cannotCreateFilter(env),
|
|
20562
|
-
execute: (env) => createRemoveFilterAction(env),
|
|
20563
|
-
icon: "o-spreadsheet-Icon.FILTER_ICON_INACTIVE",
|
|
20564
|
-
};
|
|
20565
|
-
const groupColumns = {
|
|
20566
|
-
name: (env) => {
|
|
20567
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20568
|
-
if (selection.left === selection.right) {
|
|
20569
|
-
return _t("Group column %s", numberToLetters(selection.left));
|
|
20570
|
-
}
|
|
20571
|
-
return _t("Group columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20572
|
-
},
|
|
20573
|
-
execute: (env) => groupHeadersAction(env, "COL"),
|
|
20574
|
-
isVisible: (env) => {
|
|
20575
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20576
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20577
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "COL", selection);
|
|
20578
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20579
|
-
!groups.some((group) => group.start === selection.left && group.end === selection.right));
|
|
20580
|
-
},
|
|
20581
|
-
icon: "o-spreadsheet-Icon.GROUP_COLUMNS",
|
|
20582
|
-
};
|
|
20583
|
-
const groupRows = {
|
|
20584
|
-
name: (env) => {
|
|
20585
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20586
|
-
if (selection.top === selection.bottom) {
|
|
20587
|
-
return _t("Group row %s", String(selection.top + 1));
|
|
20588
|
-
}
|
|
20589
|
-
return _t("Group rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20590
|
-
},
|
|
20591
|
-
execute: (env) => groupHeadersAction(env, "ROW"),
|
|
20592
|
-
isVisible: (env) => {
|
|
20593
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20594
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20595
|
-
const groups = env.model.getters.getHeaderGroupsInZone(sheetId, "ROW", selection);
|
|
20596
|
-
return (IS_ONLY_ONE_RANGE(env) &&
|
|
20597
|
-
!groups.some((group) => group.start === selection.top && group.end === selection.bottom));
|
|
20598
|
-
},
|
|
20599
|
-
icon: "o-spreadsheet-Icon.GROUP_ROWS",
|
|
20600
|
-
};
|
|
20601
|
-
const ungroupColumns = {
|
|
20602
|
-
name: (env) => {
|
|
20603
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20604
|
-
if (selection.left === selection.right) {
|
|
20605
|
-
return _t("Ungroup column %s", numberToLetters(selection.left));
|
|
20606
|
-
}
|
|
20607
|
-
return _t("Ungroup columns %s - %s", numberToLetters(selection.left), numberToLetters(selection.right));
|
|
20608
|
-
},
|
|
20609
|
-
execute: (env) => ungroupHeaders(env, "COL"),
|
|
20610
|
-
icon: "o-spreadsheet-Icon.UNGROUP_COLUMNS",
|
|
20611
|
-
};
|
|
20612
|
-
const ungroupRows = {
|
|
20613
|
-
name: (env) => {
|
|
20614
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20615
|
-
if (selection.top === selection.bottom) {
|
|
20616
|
-
return _t("Ungroup row %s", String(selection.top + 1));
|
|
20617
|
-
}
|
|
20618
|
-
return _t("Ungroup rows %s - %s", String(selection.top + 1), String(selection.bottom + 1));
|
|
20619
|
-
},
|
|
20620
|
-
execute: (env) => ungroupHeaders(env, "ROW"),
|
|
20621
|
-
icon: "o-spreadsheet-Icon.UNGROUP_ROWS",
|
|
20622
|
-
};
|
|
20623
|
-
function selectionContainsFilter(env) {
|
|
20624
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20625
|
-
const selectedZones = env.model.getters.getSelectedZones();
|
|
20626
|
-
return env.model.getters.doesZonesContainFilter(sheetId, selectedZones);
|
|
20627
|
-
}
|
|
20628
|
-
function cannotCreateFilter(env) {
|
|
20629
|
-
return !areZonesContinuous(...env.model.getters.getSelectedZones());
|
|
20630
|
-
}
|
|
20631
|
-
function createRemoveFilterAction(env) {
|
|
20632
|
-
if (selectionContainsFilter(env)) {
|
|
20633
|
-
env.model.dispatch("REMOVE_FILTER_TABLE", {
|
|
20634
|
-
sheetId: env.model.getters.getActiveSheetId(),
|
|
20635
|
-
target: env.model.getters.getSelectedZones(),
|
|
20636
|
-
});
|
|
20637
|
-
return;
|
|
20638
|
-
}
|
|
20639
|
-
if (cannotCreateFilter(env)) {
|
|
20640
|
-
return;
|
|
20641
|
-
}
|
|
20642
|
-
env.model.selection.selectTableAroundSelection();
|
|
20643
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20644
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20645
|
-
interactiveAddFilter(env, sheetId, selection);
|
|
20646
|
-
}
|
|
20647
|
-
function groupHeadersAction(env, dim) {
|
|
20648
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20649
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20650
|
-
env.model.dispatch("GROUP_HEADERS", {
|
|
20651
|
-
sheetId,
|
|
20652
|
-
dimension: dim,
|
|
20653
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20654
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20655
|
-
});
|
|
20656
|
-
}
|
|
20657
|
-
function ungroupHeaders(env, dim) {
|
|
20658
|
-
const selection = env.model.getters.getSelectedZone();
|
|
20659
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20660
|
-
env.model.dispatch("UNGROUP_HEADERS", {
|
|
20661
|
-
sheetId,
|
|
20662
|
-
dimension: dim,
|
|
20663
|
-
start: dim === "COL" ? selection.left : selection.top,
|
|
20664
|
-
end: dim === "COL" ? selection.right : selection.bottom,
|
|
20665
|
-
});
|
|
20666
|
-
}
|
|
20667
|
-
function canUngroupHeaders(env, dimension) {
|
|
20668
|
-
const sheetId = env.model.getters.getActiveSheetId();
|
|
20669
|
-
const selection = env.model.getters.getSelectedZones();
|
|
20670
|
-
return (selection.length === 1 &&
|
|
20671
|
-
env.model.getters.getHeaderGroupsInZone(sheetId, dimension, selection[0]).length > 0);
|
|
20672
|
-
}
|
|
20673
|
-
|
|
20674
|
-
var ACTION_VIEW = /*#__PURE__*/Object.freeze({
|
|
20675
|
-
__proto__: null,
|
|
20676
|
-
canUngroupHeaders: canUngroupHeaders,
|
|
20677
|
-
createRemoveFilter: createRemoveFilter,
|
|
20678
|
-
freezeCurrentCol: freezeCurrentCol,
|
|
20679
|
-
freezeCurrentRow: freezeCurrentRow,
|
|
20680
|
-
freezeFirstCol: freezeFirstCol,
|
|
20681
|
-
freezeFirstRow: freezeFirstRow,
|
|
20682
|
-
freezePane: freezePane,
|
|
20683
|
-
freezeSecondCol: freezeSecondCol,
|
|
20684
|
-
freezeSecondRow: freezeSecondRow,
|
|
20685
|
-
groupColumns: groupColumns,
|
|
20686
|
-
groupRows: groupRows,
|
|
20687
|
-
hideCols: hideCols,
|
|
20688
|
-
hideRows: hideRows,
|
|
20689
|
-
unFreezeCols: unFreezeCols,
|
|
20690
|
-
unFreezePane: unFreezePane,
|
|
20691
|
-
unFreezeRows: unFreezeRows,
|
|
20692
|
-
ungroupColumns: ungroupColumns,
|
|
20693
|
-
ungroupRows: ungroupRows,
|
|
20694
|
-
unhideAllCols: unhideAllCols,
|
|
20695
|
-
unhideAllRows: unhideAllRows,
|
|
20696
|
-
unhideCols: unhideCols,
|
|
20697
|
-
unhideRows: unhideRows,
|
|
20698
|
-
viewFormulas: viewFormulas,
|
|
20699
|
-
viewGridlines: viewGridlines
|
|
20700
|
-
});
|
|
20701
|
-
|
|
20702
20687
|
const colMenuRegistry = new MenuItemRegistry();
|
|
20703
20688
|
colMenuRegistry
|
|
20704
20689
|
.add("cut", {
|
|
@@ -21341,13 +21326,8 @@
|
|
|
21341
21326
|
sequence: 30,
|
|
21342
21327
|
separator: true,
|
|
21343
21328
|
})
|
|
21344
|
-
.addChild("
|
|
21345
|
-
...
|
|
21346
|
-
sequence: 40,
|
|
21347
|
-
separator: true,
|
|
21348
|
-
})
|
|
21349
|
-
.addChild("remove_data_filter", ["data"], {
|
|
21350
|
-
...removeDataFilter,
|
|
21329
|
+
.addChild("add_remove_data_filter", ["data"], {
|
|
21330
|
+
...addRemoveDataFilter,
|
|
21351
21331
|
sequence: 40,
|
|
21352
21332
|
separator: true,
|
|
21353
21333
|
});
|
|
@@ -26963,6 +26943,11 @@
|
|
|
26963
26943
|
}
|
|
26964
26944
|
}
|
|
26965
26945
|
}
|
|
26946
|
+
onContextMenu(ev) {
|
|
26947
|
+
if (this.env.model.getters.getEditionMode() === "inactive") {
|
|
26948
|
+
this.props.onInputContextMenu?.(ev);
|
|
26949
|
+
}
|
|
26950
|
+
}
|
|
26966
26951
|
// ---------------------------------------------------------------------------
|
|
26967
26952
|
// Private
|
|
26968
26953
|
// ---------------------------------------------------------------------------
|
|
@@ -27200,6 +27185,7 @@
|
|
|
27200
27185
|
onComposerCellFocused: { type: Function, optional: true },
|
|
27201
27186
|
onComposerContentFocused: Function,
|
|
27202
27187
|
isDefaultFocus: { type: Boolean, optional: true },
|
|
27188
|
+
onInputContextMenu: { type: Function, optional: true },
|
|
27203
27189
|
};
|
|
27204
27190
|
|
|
27205
27191
|
const COMPOSER_BORDER_WIDTH = 3 * 0.4 * window.devicePixelRatio || 1;
|
|
@@ -27275,6 +27261,7 @@
|
|
|
27275
27261
|
isDefaultFocus: true,
|
|
27276
27262
|
onComposerContentFocused: this.props.onComposerContentFocused,
|
|
27277
27263
|
onComposerCellFocused: this.props.onComposerCellFocused,
|
|
27264
|
+
onInputContextMenu: this.props.onInputContextMenu,
|
|
27278
27265
|
};
|
|
27279
27266
|
}
|
|
27280
27267
|
get containerStyle() {
|
|
@@ -27363,6 +27350,7 @@
|
|
|
27363
27350
|
onComposerContentFocused: Function,
|
|
27364
27351
|
gridDims: Object,
|
|
27365
27352
|
onComposerCellFocused: Function,
|
|
27353
|
+
onInputContextMenu: Function,
|
|
27366
27354
|
};
|
|
27367
27355
|
|
|
27368
27356
|
const CSS$1 = css /* scss */ `
|
|
@@ -27842,6 +27830,10 @@
|
|
|
27842
27830
|
height: 0px;
|
|
27843
27831
|
}
|
|
27844
27832
|
}
|
|
27833
|
+
.o-figure-container {
|
|
27834
|
+
-webkit-user-select: none; // safari
|
|
27835
|
+
user-select: none;
|
|
27836
|
+
}
|
|
27845
27837
|
`;
|
|
27846
27838
|
/**
|
|
27847
27839
|
* Each figure ⭐ is positioned inside a container `div` placed and sized
|
|
@@ -31316,29 +31308,12 @@
|
|
|
31316
31308
|
return width;
|
|
31317
31309
|
return Math.round((width / WIDTH_FACTOR) * 100) / 100;
|
|
31318
31310
|
}
|
|
31319
|
-
function convertBorderDescr(descr) {
|
|
31320
|
-
if (!descr) {
|
|
31321
|
-
return undefined;
|
|
31322
|
-
}
|
|
31323
|
-
return {
|
|
31324
|
-
style: descr.style,
|
|
31325
|
-
color: { rgb: descr.color },
|
|
31326
|
-
};
|
|
31327
|
-
}
|
|
31328
31311
|
function extractStyle(cell, data) {
|
|
31329
31312
|
let style = {};
|
|
31330
31313
|
if (cell.style) {
|
|
31331
31314
|
style = data.styles[cell.style];
|
|
31332
31315
|
}
|
|
31333
31316
|
const format = extractFormat(cell, data);
|
|
31334
|
-
const exportedBorder = {};
|
|
31335
|
-
if (cell.border) {
|
|
31336
|
-
const border = data.borders[cell.border];
|
|
31337
|
-
exportedBorder.left = convertBorderDescr(border.left);
|
|
31338
|
-
exportedBorder.right = convertBorderDescr(border.right);
|
|
31339
|
-
exportedBorder.bottom = convertBorderDescr(border.bottom);
|
|
31340
|
-
exportedBorder.top = convertBorderDescr(border.top);
|
|
31341
|
-
}
|
|
31342
31317
|
const styles = {
|
|
31343
31318
|
font: {
|
|
31344
31319
|
size: style?.fontSize || DEFAULT_FONT_SIZE,
|
|
@@ -31352,7 +31327,7 @@
|
|
|
31352
31327
|
}
|
|
31353
31328
|
: { reservedAttribute: "none" },
|
|
31354
31329
|
numFmt: format ? { format: format, id: 0 /* id not used for export */ } : undefined,
|
|
31355
|
-
border:
|
|
31330
|
+
border: cell.border || 0,
|
|
31356
31331
|
alignment: {
|
|
31357
31332
|
horizontal: style.align,
|
|
31358
31333
|
vertical: style.verticalAlign
|
|
@@ -31374,15 +31349,12 @@
|
|
|
31374
31349
|
return undefined;
|
|
31375
31350
|
}
|
|
31376
31351
|
function normalizeStyle(construct, styles) {
|
|
31377
|
-
const { id: fontId } = pushElement(styles["font"], construct.fonts);
|
|
31378
|
-
const { id: fillId } = pushElement(styles["fill"], construct.fills);
|
|
31379
|
-
const { id: borderId } = pushElement(styles["border"], construct.borders);
|
|
31380
31352
|
// Normalize this
|
|
31381
31353
|
const numFmtId = convertFormat(styles["numFmt"], construct.numFmts);
|
|
31382
31354
|
const style = {
|
|
31383
|
-
fontId,
|
|
31384
|
-
fillId,
|
|
31385
|
-
borderId,
|
|
31355
|
+
fontId: pushElement(styles.font, construct.fonts),
|
|
31356
|
+
fillId: pushElement(styles.fill, construct.fills),
|
|
31357
|
+
borderId: styles.border,
|
|
31386
31358
|
numFmtId,
|
|
31387
31359
|
alignment: {
|
|
31388
31360
|
vertical: styles.alignment.vertical,
|
|
@@ -31390,8 +31362,7 @@
|
|
|
31390
31362
|
wrapText: styles.alignment.wrapText,
|
|
31391
31363
|
},
|
|
31392
31364
|
};
|
|
31393
|
-
|
|
31394
|
-
return id;
|
|
31365
|
+
return pushElement(style, construct.styles);
|
|
31395
31366
|
}
|
|
31396
31367
|
function convertFormat(format, numFmtStructure) {
|
|
31397
31368
|
if (!format) {
|
|
@@ -31399,8 +31370,7 @@
|
|
|
31399
31370
|
}
|
|
31400
31371
|
let formatId = XLSX_FORMAT_MAP[format.format];
|
|
31401
31372
|
if (!formatId) {
|
|
31402
|
-
|
|
31403
|
-
formatId = id + FIRST_NUMFMT_ID;
|
|
31373
|
+
formatId = pushElement(format, numFmtStructure) + FIRST_NUMFMT_ID;
|
|
31404
31374
|
}
|
|
31405
31375
|
return formatId;
|
|
31406
31376
|
}
|
|
@@ -31425,20 +31395,15 @@
|
|
|
31425
31395
|
return id;
|
|
31426
31396
|
}
|
|
31427
31397
|
function pushElement(property, propertyList) {
|
|
31428
|
-
|
|
31429
|
-
|
|
31430
|
-
|
|
31398
|
+
let len = propertyList.length;
|
|
31399
|
+
const operator = typeof property === "object" ? deepEquals : (a, b) => a === b;
|
|
31400
|
+
for (let i = 0; i < len; i++) {
|
|
31401
|
+
if (operator(property, propertyList[i])) {
|
|
31402
|
+
return i;
|
|
31431
31403
|
}
|
|
31432
31404
|
}
|
|
31433
|
-
|
|
31434
|
-
|
|
31435
|
-
propertyList.push(property);
|
|
31436
|
-
elemId = propertyList.length - 1;
|
|
31437
|
-
}
|
|
31438
|
-
return {
|
|
31439
|
-
id: elemId,
|
|
31440
|
-
list: propertyList,
|
|
31441
|
-
};
|
|
31405
|
+
propertyList[propertyList.length] = property;
|
|
31406
|
+
return propertyList.length - 1;
|
|
31442
31407
|
}
|
|
31443
31408
|
const chartIds = [];
|
|
31444
31409
|
/**
|
|
@@ -32159,7 +32124,25 @@
|
|
|
32159
32124
|
}
|
|
32160
32125
|
return document;
|
|
32161
32126
|
}
|
|
32162
|
-
function
|
|
32127
|
+
function convertBorderDescr(descr) {
|
|
32128
|
+
if (!descr) {
|
|
32129
|
+
return undefined;
|
|
32130
|
+
}
|
|
32131
|
+
return {
|
|
32132
|
+
style: descr.style,
|
|
32133
|
+
color: { rgb: descr.color },
|
|
32134
|
+
};
|
|
32135
|
+
}
|
|
32136
|
+
function getDefaultXLSXStructure(data) {
|
|
32137
|
+
const xlsxBorders = Object.values(data.borders).map((border) => {
|
|
32138
|
+
return {
|
|
32139
|
+
left: convertBorderDescr(border.left),
|
|
32140
|
+
right: convertBorderDescr(border.right),
|
|
32141
|
+
bottom: convertBorderDescr(border.bottom),
|
|
32142
|
+
top: convertBorderDescr(border.top),
|
|
32143
|
+
};
|
|
32144
|
+
});
|
|
32145
|
+
const borders = [{}, ...xlsxBorders];
|
|
32163
32146
|
return {
|
|
32164
32147
|
relsFiles: [],
|
|
32165
32148
|
sharedStrings: [],
|
|
@@ -32182,7 +32165,7 @@
|
|
|
32182
32165
|
},
|
|
32183
32166
|
],
|
|
32184
32167
|
fills: [{ reservedAttribute: "none" }, { reservedAttribute: "gray125" }],
|
|
32185
|
-
borders
|
|
32168
|
+
borders,
|
|
32186
32169
|
numFmts: [],
|
|
32187
32170
|
dxfs: [],
|
|
32188
32171
|
};
|
|
@@ -37368,7 +37351,17 @@
|
|
|
37368
37351
|
}
|
|
37369
37352
|
}
|
|
37370
37353
|
exportForExcel(data) {
|
|
37371
|
-
|
|
37354
|
+
for (const sheet of data.sheets) {
|
|
37355
|
+
for (const filterTable of this.getFilterTables(sheet.id)) {
|
|
37356
|
+
if (zoneToDimension(filterTable.zone).numberOfRows === 1) {
|
|
37357
|
+
continue;
|
|
37358
|
+
}
|
|
37359
|
+
sheet.filterTables.push({
|
|
37360
|
+
range: zoneToXc(filterTable.zone),
|
|
37361
|
+
filters: [],
|
|
37362
|
+
});
|
|
37363
|
+
}
|
|
37364
|
+
}
|
|
37372
37365
|
}
|
|
37373
37366
|
}
|
|
37374
37367
|
|
|
@@ -41097,7 +41090,9 @@
|
|
|
41097
41090
|
this.blockedArrayFormulas = new Set();
|
|
41098
41091
|
this.spreadingRelations = new SpreadingRelation();
|
|
41099
41092
|
this.formulaDependencies = lazy(() => {
|
|
41100
|
-
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
41093
|
+
const dependencies = [...this.getAllCells()].flatMap((positionId) => this.getDirectDependencies(positionId)
|
|
41094
|
+
.filter((range) => !range.invalidSheetName && !range.invalidXc)
|
|
41095
|
+
.map((range) => ({
|
|
41101
41096
|
data: positionId,
|
|
41102
41097
|
boundingBox: {
|
|
41103
41098
|
zone: range.zone,
|
|
@@ -48915,7 +48910,7 @@
|
|
|
48915
48910
|
"isFilterActive",
|
|
48916
48911
|
];
|
|
48917
48912
|
filterValues = {};
|
|
48918
|
-
hiddenRows =
|
|
48913
|
+
hiddenRows = {};
|
|
48919
48914
|
isEvaluationDirty = false;
|
|
48920
48915
|
allowDispatch(cmd) {
|
|
48921
48916
|
switch (cmd.type) {
|
|
@@ -48958,11 +48953,11 @@
|
|
|
48958
48953
|
case "UNFOLD_HEADER_GROUP":
|
|
48959
48954
|
case "FOLD_ALL_HEADER_GROUPS":
|
|
48960
48955
|
case "UNFOLD_ALL_HEADER_GROUPS":
|
|
48961
|
-
this.updateHiddenRows();
|
|
48956
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
48962
48957
|
break;
|
|
48963
48958
|
case "UPDATE_FILTER":
|
|
48964
48959
|
this.updateFilter(cmd);
|
|
48965
|
-
this.updateHiddenRows();
|
|
48960
|
+
this.updateHiddenRows(cmd.sheetId);
|
|
48966
48961
|
break;
|
|
48967
48962
|
case "DUPLICATE_SHEET":
|
|
48968
48963
|
const filterValues = {};
|
|
@@ -48982,15 +48977,14 @@
|
|
|
48982
48977
|
}
|
|
48983
48978
|
finalize() {
|
|
48984
48979
|
if (this.isEvaluationDirty) {
|
|
48985
|
-
this.
|
|
48980
|
+
for (const sheetId of this.getters.getSheetIds()) {
|
|
48981
|
+
this.updateHiddenRows(sheetId);
|
|
48982
|
+
}
|
|
48986
48983
|
this.isEvaluationDirty = false;
|
|
48987
48984
|
}
|
|
48988
48985
|
}
|
|
48989
48986
|
isRowFiltered(sheetId, row) {
|
|
48990
|
-
|
|
48991
|
-
return false;
|
|
48992
|
-
}
|
|
48993
|
-
return this.hiddenRows.has(row);
|
|
48987
|
+
return !!this.hiddenRows[sheetId]?.has(row);
|
|
48994
48988
|
}
|
|
48995
48989
|
getCellBorderWithFilterBorder(position) {
|
|
48996
48990
|
const { sheetId, col, row } = position;
|
|
@@ -49041,8 +49035,7 @@
|
|
|
49041
49035
|
this.filterValues[sheetId] = {};
|
|
49042
49036
|
this.filterValues[sheetId][id] = hiddenValues;
|
|
49043
49037
|
}
|
|
49044
|
-
updateHiddenRows() {
|
|
49045
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
49038
|
+
updateHiddenRows(sheetId) {
|
|
49046
49039
|
const filters = this.getters
|
|
49047
49040
|
.getFilters(sheetId)
|
|
49048
49041
|
.sort((filter1, filter2) => filter1.zoneWithHeaders.top - filter2.zoneWithHeaders.top);
|
|
@@ -49063,7 +49056,7 @@
|
|
|
49063
49056
|
}
|
|
49064
49057
|
}
|
|
49065
49058
|
}
|
|
49066
|
-
this.hiddenRows = hiddenRows;
|
|
49059
|
+
this.hiddenRows[sheetId] = hiddenRows;
|
|
49067
49060
|
}
|
|
49068
49061
|
getCellValueAsString(sheetId, col, row) {
|
|
49069
49062
|
const value = this.getters.getEvaluatedCell({ sheetId, col, row }).formattedValue;
|
|
@@ -50204,13 +50197,14 @@
|
|
|
50204
50197
|
}
|
|
50205
50198
|
}
|
|
50206
50199
|
handleEvent(event) {
|
|
50200
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
50207
50201
|
if (event.options.scrollIntoView) {
|
|
50208
50202
|
let { col, row } = findCellInNewZone(event.previousAnchor.zone, event.anchor.zone);
|
|
50209
50203
|
if (event.mode === "updateAnchor") {
|
|
50210
50204
|
const oldZone = event.previousAnchor.zone;
|
|
50211
50205
|
const newZone = event.anchor.zone;
|
|
50212
50206
|
// altering a zone should not move the viewport in a dimension that wasn't changed
|
|
50213
|
-
const { top, bottom, left, right } = this.
|
|
50207
|
+
const { top, bottom, left, right } = this.getMainInternalViewport(sheetId);
|
|
50214
50208
|
if (oldZone.left === newZone.left && oldZone.right === newZone.right) {
|
|
50215
50209
|
col = left > col || col > right ? left : col;
|
|
50216
50210
|
}
|
|
@@ -50218,7 +50212,6 @@
|
|
|
50218
50212
|
row = top > row || row > bottom ? top : row;
|
|
50219
50213
|
}
|
|
50220
50214
|
}
|
|
50221
|
-
const sheetId = this.getters.getActiveSheetId();
|
|
50222
50215
|
col = Math.min(col, this.getters.getNumberCols(sheetId) - 1);
|
|
50223
50216
|
row = Math.min(row, this.getters.getNumberRows(sheetId) - 1);
|
|
50224
50217
|
if (!this.sheetsWithDirtyViewports.has(sheetId)) {
|
|
@@ -50255,16 +50248,16 @@
|
|
|
50255
50248
|
this.setSheetViewOffset(cmd.offsetX, cmd.offsetY);
|
|
50256
50249
|
break;
|
|
50257
50250
|
case "SHIFT_VIEWPORT_DOWN":
|
|
50258
|
-
const { top } = this.getActiveMainViewport();
|
|
50259
50251
|
const sheetId = this.getters.getActiveSheetId();
|
|
50260
|
-
const
|
|
50261
|
-
this.
|
|
50252
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50253
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50254
|
+
this.shiftVertically(topRowDims.start + viewportHeight - offsetCorrectionY);
|
|
50262
50255
|
break;
|
|
50263
50256
|
case "SHIFT_VIEWPORT_UP": {
|
|
50264
|
-
const { top } = this.getActiveMainViewport();
|
|
50265
50257
|
const sheetId = this.getters.getActiveSheetId();
|
|
50266
|
-
const
|
|
50267
|
-
this.
|
|
50258
|
+
const { top, viewportHeight, offsetCorrectionY } = this.getMainInternalViewport(sheetId);
|
|
50259
|
+
const topRowDims = this.getters.getRowDimensions(sheetId, top);
|
|
50260
|
+
this.shiftVertically(topRowDims.end - offsetCorrectionY - viewportHeight);
|
|
50268
50261
|
break;
|
|
50269
50262
|
}
|
|
50270
50263
|
case "REMOVE_FILTER_TABLE":
|
|
@@ -50657,17 +50650,6 @@
|
|
|
50657
50650
|
const { maxOffsetX, maxOffsetY } = this.getMaximumSheetOffset();
|
|
50658
50651
|
Object.values(this.getSubViewports(sheetId)).forEach((viewport) => viewport.setViewportOffset(clip(offsetX, 0, maxOffsetX), clip(offsetY, 0, maxOffsetY)));
|
|
50659
50652
|
}
|
|
50660
|
-
/**
|
|
50661
|
-
* Clip the vertical offset within the allowed range.
|
|
50662
|
-
* Not above the sheet, nor below the sheet.
|
|
50663
|
-
*/
|
|
50664
|
-
clipOffsetY(offsetY) {
|
|
50665
|
-
const { height } = this.getMainViewportRect();
|
|
50666
|
-
const maxOffset = height - this.sheetViewHeight;
|
|
50667
|
-
offsetY = Math.min(offsetY, maxOffset);
|
|
50668
|
-
offsetY = Math.max(offsetY, 0);
|
|
50669
|
-
return offsetY;
|
|
50670
|
-
}
|
|
50671
50653
|
getViewportOffset(sheetId) {
|
|
50672
50654
|
return {
|
|
50673
50655
|
x: this.viewports[sheetId]?.bottomRight.offsetScrollbarX || 0,
|
|
@@ -50723,12 +50705,15 @@
|
|
|
50723
50705
|
* viewport top.
|
|
50724
50706
|
*/
|
|
50725
50707
|
shiftVertically(offset) {
|
|
50726
|
-
const
|
|
50708
|
+
const sheetId = this.getters.getActiveSheetId();
|
|
50709
|
+
const { top } = this.getMainInternalViewport(sheetId);
|
|
50727
50710
|
const { scrollX } = this.getActiveSheetScrollInfo();
|
|
50728
50711
|
this.setSheetViewOffset(scrollX, offset);
|
|
50729
50712
|
const { anchor } = this.getters.getSelection();
|
|
50730
|
-
|
|
50731
|
-
|
|
50713
|
+
if (anchor.cell.row >= this.getters.getPaneDivisions(sheetId).ySplit) {
|
|
50714
|
+
const deltaRow = this.getMainInternalViewport(sheetId).top - top;
|
|
50715
|
+
this.selection.selectCell(anchor.cell.col, anchor.cell.row + deltaRow);
|
|
50716
|
+
}
|
|
50732
50717
|
}
|
|
50733
50718
|
getVisibleFigures() {
|
|
50734
50719
|
const sheetId = this.getters.getActiveSheetId();
|
|
@@ -51659,7 +51644,6 @@
|
|
|
51659
51644
|
cursor: pointer;
|
|
51660
51645
|
}
|
|
51661
51646
|
`;
|
|
51662
|
-
let tKey = 1;
|
|
51663
51647
|
class SpreadsheetDashboard extends owl.Component {
|
|
51664
51648
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
51665
51649
|
static components = {
|
|
@@ -51737,13 +51721,9 @@
|
|
|
51737
51721
|
coordinates: rect,
|
|
51738
51722
|
position: { col, row },
|
|
51739
51723
|
action,
|
|
51740
|
-
// we can't rely on position only because a row or a column could
|
|
51741
|
-
// be inserted at any time.
|
|
51742
|
-
tKey: `${tKey}-${col}-${row}`,
|
|
51743
51724
|
});
|
|
51744
51725
|
}
|
|
51745
51726
|
}
|
|
51746
|
-
tKey++;
|
|
51747
51727
|
return cells;
|
|
51748
51728
|
}
|
|
51749
51729
|
getClickableAction(position) {
|
|
@@ -55235,8 +55215,7 @@
|
|
|
55235
55215
|
attrs.push(["t", "b"]);
|
|
55236
55216
|
}
|
|
55237
55217
|
else if (forceString || !isNumber(value, DEFAULT_LOCALE)) {
|
|
55238
|
-
|
|
55239
|
-
value = id.toString();
|
|
55218
|
+
value = pushElement(content, sharedStrings);
|
|
55240
55219
|
attrs.push(["t", "s"]);
|
|
55241
55220
|
}
|
|
55242
55221
|
return { attrs, node: escapeXml /*xml*/ `<v>${value}</v>` };
|
|
@@ -55361,8 +55340,7 @@
|
|
|
55361
55340
|
if (rule.style.fillColor) {
|
|
55362
55341
|
dxf.fill = { fgColor: { rgb: rule.style.fillColor } };
|
|
55363
55342
|
}
|
|
55364
|
-
|
|
55365
|
-
ruleAttributes.push(["dxfId", id]);
|
|
55343
|
+
ruleAttributes.push(["dxfId", pushElement(dxf, dxfs)]);
|
|
55366
55344
|
return escapeXml /*xml*/ `
|
|
55367
55345
|
<conditionalFormatting sqref="${cf.ranges.join(" ")}">
|
|
55368
55346
|
<cfRule ${formatAttributes(ruleAttributes)}>
|
|
@@ -56171,7 +56149,7 @@
|
|
|
56171
56149
|
*/
|
|
56172
56150
|
function getXLSX(data) {
|
|
56173
56151
|
const files = [];
|
|
56174
|
-
const construct = getDefaultXLSXStructure();
|
|
56152
|
+
const construct = getDefaultXLSXStructure(data);
|
|
56175
56153
|
files.push(createWorkbook(data, construct));
|
|
56176
56154
|
files.push(...createWorksheets(data, construct));
|
|
56177
56155
|
files.push(createStylesSheet(construct));
|
|
@@ -57051,9 +57029,9 @@
|
|
|
57051
57029
|
exports.tokenize = tokenize;
|
|
57052
57030
|
|
|
57053
57031
|
|
|
57054
|
-
__info__.version = "17.0.
|
|
57055
|
-
__info__.date = "2024-04-
|
|
57056
|
-
__info__.hash = "
|
|
57032
|
+
__info__.version = "17.0.19";
|
|
57033
|
+
__info__.date = "2024-04-18T16:41:42.291Z";
|
|
57034
|
+
__info__.hash = "9f3317a";
|
|
57057
57035
|
|
|
57058
57036
|
|
|
57059
57037
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|