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