@odoo/o-spreadsheet 16.2.0 → 16.3.0-alpha.1
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 +197 -96
- package/dist/o-spreadsheet.esm.js +197 -96
- package/dist/o-spreadsheet.iife.js +197 -96
- package/dist/o-spreadsheet.iife.min.js +319 -373
- package/package.json +2 -2
|
@@ -106,6 +106,7 @@ const HEADER_BORDER_COLOR = "#C0C0C0";
|
|
|
106
106
|
const CELL_BORDER_COLOR = "#E2E3E3";
|
|
107
107
|
const BACKGROUND_CHART_COLOR = "#FFFFFF";
|
|
108
108
|
const MENU_ITEM_DISABLED_COLOR = "#CACACA";
|
|
109
|
+
const BG_HOVER_COLOR = "#EBEBEB";
|
|
109
110
|
const DEFAULT_COLOR_SCALE_MIDPOINT_COLOR = 0xb6d7a8;
|
|
110
111
|
const LINK_COLOR = "#01666b";
|
|
111
112
|
const FILTERS_COLOR = "#188038";
|
|
@@ -590,6 +591,38 @@ function getYearFrac(startDate, endDate, _dayCountConvention) {
|
|
|
590
591
|
break;
|
|
591
592
|
}
|
|
592
593
|
return yearsEnd - yearsStart;
|
|
594
|
+
}
|
|
595
|
+
/**
|
|
596
|
+
* Get the number of whole months between two dates.
|
|
597
|
+
* e.g.
|
|
598
|
+
* 2002/01/01 -> 2002/02/01 = 1 month,
|
|
599
|
+
* 2002/01/01 -> 2003/02/01 = 13 months
|
|
600
|
+
* @param startDate
|
|
601
|
+
* @param endDate
|
|
602
|
+
* @returns
|
|
603
|
+
*/
|
|
604
|
+
function getTimeDifferenceInWholeMonths(startDate, endDate) {
|
|
605
|
+
const months = (endDate.getFullYear() - startDate.getFullYear()) * 12 +
|
|
606
|
+
endDate.getMonth() -
|
|
607
|
+
startDate.getMonth();
|
|
608
|
+
return startDate.getDate() > endDate.getDate() ? months - 1 : months;
|
|
609
|
+
}
|
|
610
|
+
function getTimeDifferenceInWholeDays(startDate, endDate) {
|
|
611
|
+
const startUtc = startDate.getTime();
|
|
612
|
+
const endUtc = endDate.getTime();
|
|
613
|
+
return Math.floor((endUtc - startUtc) / MS_PER_DAY);
|
|
614
|
+
}
|
|
615
|
+
function getTimeDifferenceInWholeYears(startDate, endDate) {
|
|
616
|
+
const years = endDate.getFullYear() - startDate.getFullYear();
|
|
617
|
+
const monthStart = startDate.getMonth();
|
|
618
|
+
const monthEnd = endDate.getMonth();
|
|
619
|
+
const dateStart = startDate.getDate();
|
|
620
|
+
const dateEnd = endDate.getDate();
|
|
621
|
+
const isEndMonthDateBigger = monthEnd > monthStart || (monthEnd === monthStart && dateEnd >= dateStart);
|
|
622
|
+
return isEndMonthDateBigger ? years : years - 1;
|
|
623
|
+
}
|
|
624
|
+
function areTwoDatesWithinOneYear(startDate, endDate) {
|
|
625
|
+
return getYearFrac(startDate, endDate, 1) < 1;
|
|
593
626
|
}
|
|
594
627
|
|
|
595
628
|
//------------------------------------------------------------------------------
|
|
@@ -3405,6 +3438,11 @@ function assert(condition, message) {
|
|
|
3405
3438
|
// FORMAT FUNCTIONS
|
|
3406
3439
|
// -----------------------------------------------------------------------------
|
|
3407
3440
|
const expectNumberValueError = (value) => _lt("The function [[FUNCTION_NAME]] expects a number value, but '%s' is a string, and cannot be coerced to a number.", value);
|
|
3441
|
+
const expectNumberRangeError = (lowerBound, upperBound, value) => _lt("The function [[FUNCTION_NAME]] expects a number value between %s and %s inclusive, but receives %s.", lowerBound.toString(), upperBound.toString(), value.toString());
|
|
3442
|
+
const expectStringSetError = (stringSet, value) => {
|
|
3443
|
+
const stringSetString = stringSet.map((str) => `'${str}'`).join(", ");
|
|
3444
|
+
return _lt("The function [[FUNCTION_NAME]] has an argument with value '%s'. It should be one of: %s.", value, stringSetString);
|
|
3445
|
+
};
|
|
3408
3446
|
function toNumber(value) {
|
|
3409
3447
|
switch (typeof value) {
|
|
3410
3448
|
case "number":
|
|
@@ -3430,6 +3468,12 @@ function strictToNumber(value) {
|
|
|
3430
3468
|
}
|
|
3431
3469
|
return toNumber(value);
|
|
3432
3470
|
}
|
|
3471
|
+
function strictToInteger(value) {
|
|
3472
|
+
return Math.trunc(strictToNumber(value));
|
|
3473
|
+
}
|
|
3474
|
+
function assertNumberGreaterThanOrEqualToOne(value) {
|
|
3475
|
+
assert(() => value >= 1, _lt("The function [[FUNCTION_NAME]] expects a number value to be greater than or equal to 1, but receives %s.", value.toString()));
|
|
3476
|
+
}
|
|
3433
3477
|
function toString(value) {
|
|
3434
3478
|
switch (typeof value) {
|
|
3435
3479
|
case "string":
|
|
@@ -4663,6 +4707,7 @@ const CSS$2 = css /* scss */ `
|
|
|
4663
4707
|
.o-search-icon {
|
|
4664
4708
|
right: 5px;
|
|
4665
4709
|
top: 4px;
|
|
4710
|
+
opacity: 0.4;
|
|
4666
4711
|
|
|
4667
4712
|
svg {
|
|
4668
4713
|
height: 16px;
|
|
@@ -5288,7 +5333,7 @@ css /* scss */ `
|
|
|
5288
5333
|
&:not(.disabled) {
|
|
5289
5334
|
&:hover,
|
|
5290
5335
|
&.o-menu-item-active {
|
|
5291
|
-
background-color:
|
|
5336
|
+
background-color: ${BG_HOVER_COLOR};
|
|
5292
5337
|
}
|
|
5293
5338
|
.o-menu-item-description {
|
|
5294
5339
|
color: grey;
|
|
@@ -11749,6 +11794,15 @@ var database = /*#__PURE__*/Object.freeze({
|
|
|
11749
11794
|
|
|
11750
11795
|
const DEFAULT_TYPE = 1;
|
|
11751
11796
|
const DEFAULT_WEEKEND = 1;
|
|
11797
|
+
var TIME_UNIT;
|
|
11798
|
+
(function (TIME_UNIT) {
|
|
11799
|
+
TIME_UNIT["WHOLE_YEARS"] = "Y";
|
|
11800
|
+
TIME_UNIT["WHOLE_MONTHS"] = "M";
|
|
11801
|
+
TIME_UNIT["WHOLE_DAYS"] = "D";
|
|
11802
|
+
TIME_UNIT["DAYS_WITHOUT_WHOLE_MONTHS"] = "MD";
|
|
11803
|
+
TIME_UNIT["MONTH_WITHOUT_WHOLE_YEARS"] = "YM";
|
|
11804
|
+
TIME_UNIT["DAYS_BETWEEN_NO_MORE_THAN_ONE_YEAR"] = "YD";
|
|
11805
|
+
})(TIME_UNIT || (TIME_UNIT = {}));
|
|
11752
11806
|
// -----------------------------------------------------------------------------
|
|
11753
11807
|
// DATE
|
|
11754
11808
|
// -----------------------------------------------------------------------------
|
|
@@ -11779,6 +11833,63 @@ const DATE = {
|
|
|
11779
11833
|
isExported: true,
|
|
11780
11834
|
};
|
|
11781
11835
|
// -----------------------------------------------------------------------------
|
|
11836
|
+
// DATEDIF
|
|
11837
|
+
// -----------------------------------------------------------------------------
|
|
11838
|
+
const DATEDIF = {
|
|
11839
|
+
description: _lt("Calculates the number of days, months, or years between two dates."),
|
|
11840
|
+
args: [
|
|
11841
|
+
arg("start_date (date)", _lt("The start date to consider in the calculation. Must be a reference to a cell containing a DATE, a function returning a DATE type, or a number.")),
|
|
11842
|
+
arg("end_date (date)", _lt("The end date to consider in the calculation. Must be a reference to a cell containing a DATE, a function returning a DATE type, or a number.")),
|
|
11843
|
+
arg("unit (string)", _lt(`A text abbreviation for unit of time. Accepted values are "Y" (the number of whole years between start_date and end_date), "M" (the number of whole months between start_date and end_date), "D" (the number of days between start_date and end_date), "MD" (the number of days between start_date and end_date after subtracting whole months), "YM" (the number of whole months between start_date and end_date after subtracting whole years), "YD" (the number of days between start_date and end_date, assuming start_date and end_date were no more than one year apart).`)),
|
|
11844
|
+
],
|
|
11845
|
+
returns: ["NUMBER"],
|
|
11846
|
+
compute: function (startDate, endDate, unit) {
|
|
11847
|
+
const _unit = toString(unit).toUpperCase();
|
|
11848
|
+
assert(() => Object.values(TIME_UNIT).includes(_unit), expectStringSetError(Object.values(TIME_UNIT), toString(unit)));
|
|
11849
|
+
const _startDate = Math.trunc(toNumber(startDate));
|
|
11850
|
+
const _endDate = Math.trunc(toNumber(endDate));
|
|
11851
|
+
const jsStartDate = numberToJsDate(_startDate);
|
|
11852
|
+
const jsEndDate = numberToJsDate(_endDate);
|
|
11853
|
+
assert(() => _endDate >= _startDate, _lt("start_date (%s) should be on or before end_date (%s).", jsStartDate.toLocaleDateString(), jsEndDate.toLocaleDateString()));
|
|
11854
|
+
switch (_unit) {
|
|
11855
|
+
case TIME_UNIT.WHOLE_YEARS:
|
|
11856
|
+
return getTimeDifferenceInWholeYears(jsStartDate, jsEndDate);
|
|
11857
|
+
case TIME_UNIT.WHOLE_MONTHS:
|
|
11858
|
+
return getTimeDifferenceInWholeMonths(jsStartDate, jsEndDate);
|
|
11859
|
+
case TIME_UNIT.WHOLE_DAYS: {
|
|
11860
|
+
return getTimeDifferenceInWholeDays(jsStartDate, jsEndDate);
|
|
11861
|
+
}
|
|
11862
|
+
case TIME_UNIT.MONTH_WITHOUT_WHOLE_YEARS: {
|
|
11863
|
+
return (getTimeDifferenceInWholeMonths(jsStartDate, jsEndDate) -
|
|
11864
|
+
getTimeDifferenceInWholeYears(jsStartDate, jsEndDate) * 12);
|
|
11865
|
+
}
|
|
11866
|
+
case TIME_UNIT.DAYS_WITHOUT_WHOLE_MONTHS:
|
|
11867
|
+
// Using "MD" may get incorrect result in Excel
|
|
11868
|
+
// See: https://support.microsoft.com/en-us/office/datedif-function-25dba1a4-2812-480b-84dd-8b32a451b35c
|
|
11869
|
+
let days = jsEndDate.getDate() - jsStartDate.getDate();
|
|
11870
|
+
if (days < 0) {
|
|
11871
|
+
const monthBeforeEndMonth = new Date(jsEndDate.getFullYear(), jsEndDate.getMonth() - 1, 1);
|
|
11872
|
+
const daysInMonthBeforeEndMonth = getDaysInMonth(monthBeforeEndMonth);
|
|
11873
|
+
days = daysInMonthBeforeEndMonth - Math.abs(days);
|
|
11874
|
+
}
|
|
11875
|
+
return days;
|
|
11876
|
+
case TIME_UNIT.DAYS_BETWEEN_NO_MORE_THAN_ONE_YEAR: {
|
|
11877
|
+
if (areTwoDatesWithinOneYear(_startDate, _endDate)) {
|
|
11878
|
+
return getTimeDifferenceInWholeDays(jsStartDate, jsEndDate);
|
|
11879
|
+
}
|
|
11880
|
+
const endDateWithinOneYear = new Date(jsStartDate.getFullYear(), jsEndDate.getMonth(), jsEndDate.getDate());
|
|
11881
|
+
let days = getTimeDifferenceInWholeDays(jsStartDate, endDateWithinOneYear);
|
|
11882
|
+
if (days < 0) {
|
|
11883
|
+
endDateWithinOneYear.setFullYear(jsStartDate.getFullYear() + 1);
|
|
11884
|
+
days = getTimeDifferenceInWholeDays(jsStartDate, endDateWithinOneYear);
|
|
11885
|
+
}
|
|
11886
|
+
return days;
|
|
11887
|
+
}
|
|
11888
|
+
}
|
|
11889
|
+
},
|
|
11890
|
+
isExported: true,
|
|
11891
|
+
};
|
|
11892
|
+
// -----------------------------------------------------------------------------
|
|
11782
11893
|
// DATEVALUE
|
|
11783
11894
|
// -----------------------------------------------------------------------------
|
|
11784
11895
|
const DATEVALUE = {
|
|
@@ -12457,6 +12568,7 @@ const YEAR_END = {
|
|
|
12457
12568
|
var date = /*#__PURE__*/Object.freeze({
|
|
12458
12569
|
__proto__: null,
|
|
12459
12570
|
DATE: DATE,
|
|
12571
|
+
DATEDIF: DATEDIF,
|
|
12460
12572
|
DATEVALUE: DATEVALUE,
|
|
12461
12573
|
DAY: DAY,
|
|
12462
12574
|
DAYS: DAYS,
|
|
@@ -14940,12 +15052,54 @@ var logical = /*#__PURE__*/Object.freeze({
|
|
|
14940
15052
|
const DEFAULT_IS_SORTED = true;
|
|
14941
15053
|
const DEFAULT_MATCH_MODE = 0;
|
|
14942
15054
|
const DEFAULT_SEARCH_MODE = 1;
|
|
15055
|
+
const DEFAULT_ABSOLUTE_RELATIVE_MODE = 1;
|
|
14943
15056
|
function assertAvailable(variable, searchKey) {
|
|
14944
15057
|
if (variable === undefined) {
|
|
14945
15058
|
throw new NotAvailableError(_lt("Did not find value '%s' in [[FUNCTION_NAME]] evaluation.", toString(searchKey)));
|
|
14946
15059
|
}
|
|
14947
15060
|
}
|
|
14948
15061
|
// -----------------------------------------------------------------------------
|
|
15062
|
+
// ADDRESS
|
|
15063
|
+
// -----------------------------------------------------------------------------
|
|
15064
|
+
const ADDRESS = {
|
|
15065
|
+
description: _lt("Returns a cell reference as a string. "),
|
|
15066
|
+
args: [
|
|
15067
|
+
arg("row (number)", _lt("The row number of the cell reference. ")),
|
|
15068
|
+
arg("column (number)", _lt("The column number (not name) of the cell reference. A is column number 1. ")),
|
|
15069
|
+
arg(`absolute_relative_mode (number, default=${DEFAULT_ABSOLUTE_RELATIVE_MODE})`, _lt("An indicator of whether the reference is row/column absolute. 1 is row and column absolute (e.g. $A$1), 2 is row absolute and column relative (e.g. A$1), 3 is row relative and column absolute (e.g. $A1), and 4 is row and column relative (e.g. A1).")),
|
|
15070
|
+
arg("use_a1_notation (boolean, default=TRUE)", _lt("A boolean indicating whether to use A1 style notation (TRUE) or R1C1 style notation (FALSE).")),
|
|
15071
|
+
arg("sheet (string, optional)", _lt("A string indicating the name of the sheet into which the address points.")),
|
|
15072
|
+
],
|
|
15073
|
+
returns: ["STRING"],
|
|
15074
|
+
compute: function (row, column, absoluteRelativeMode = DEFAULT_ABSOLUTE_RELATIVE_MODE, useA1Notation = true, sheet) {
|
|
15075
|
+
const rowNumber = strictToInteger(row);
|
|
15076
|
+
const colNumber = strictToInteger(column);
|
|
15077
|
+
assertNumberGreaterThanOrEqualToOne(rowNumber);
|
|
15078
|
+
assertNumberGreaterThanOrEqualToOne(colNumber);
|
|
15079
|
+
const _absoluteRelativeMode = strictToInteger(absoluteRelativeMode);
|
|
15080
|
+
assert(() => [1, 2, 3, 4].includes(_absoluteRelativeMode), expectNumberRangeError(1, 4, _absoluteRelativeMode));
|
|
15081
|
+
const _useA1Notation = toBoolean(useA1Notation);
|
|
15082
|
+
let cellReference;
|
|
15083
|
+
if (_useA1Notation) {
|
|
15084
|
+
const rangePart = {
|
|
15085
|
+
rowFixed: [1, 2].includes(_absoluteRelativeMode) ? true : false,
|
|
15086
|
+
colFixed: [1, 3].includes(_absoluteRelativeMode) ? true : false,
|
|
15087
|
+
};
|
|
15088
|
+
cellReference = toXC(colNumber - 1, rowNumber - 1, rangePart);
|
|
15089
|
+
}
|
|
15090
|
+
else {
|
|
15091
|
+
const rowPart = [1, 2].includes(_absoluteRelativeMode) ? `R${rowNumber}` : `R[${rowNumber}]`;
|
|
15092
|
+
const colPart = [1, 3].includes(_absoluteRelativeMode) ? `C${colNumber}` : `C[${colNumber}]`;
|
|
15093
|
+
cellReference = rowPart + colPart;
|
|
15094
|
+
}
|
|
15095
|
+
if (sheet !== undefined) {
|
|
15096
|
+
return `${getComposerSheetName(toString(sheet))}!${cellReference}`;
|
|
15097
|
+
}
|
|
15098
|
+
return cellReference;
|
|
15099
|
+
},
|
|
15100
|
+
isExported: true,
|
|
15101
|
+
};
|
|
15102
|
+
// -----------------------------------------------------------------------------
|
|
14949
15103
|
// COLUMN
|
|
14950
15104
|
// -----------------------------------------------------------------------------
|
|
14951
15105
|
const COLUMN = {
|
|
@@ -15194,6 +15348,7 @@ const XLOOKUP = {
|
|
|
15194
15348
|
|
|
15195
15349
|
var lookup = /*#__PURE__*/Object.freeze({
|
|
15196
15350
|
__proto__: null,
|
|
15351
|
+
ADDRESS: ADDRESS,
|
|
15197
15352
|
COLUMN: COLUMN,
|
|
15198
15353
|
COLUMNS: COLUMNS,
|
|
15199
15354
|
HLOOKUP: HLOOKUP,
|
|
@@ -19549,6 +19704,13 @@ css /* scss */ `
|
|
|
19549
19704
|
pointer-events: none;
|
|
19550
19705
|
}
|
|
19551
19706
|
}
|
|
19707
|
+
|
|
19708
|
+
.o-topbar-composer .o-composer:empty:not(:focus)::before {
|
|
19709
|
+
/* svg free of use from https://uxwing.com/formula-fx-icon/ */
|
|
19710
|
+
content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 121.8 122.9' width='16' height='16' focusable='false'%3E%3Cpath d='m28 34-4 5v2h10l-6 40c-4 22-6 28-7 30-2 2-3 3-5 3-3 0-7-2-9-4H4c-2 2-4 4-4 7s4 6 8 6 9-2 15-8c8-7 13-17 18-39l7-35 13-1 3-6H49c4-23 7-27 11-27 2 0 5 2 8 6h4c1-1 4-4 4-7 0-2-3-6-9-6-5 0-13 4-20 10-6 7-9 14-11 24h-8zm41 16c4-5 7-7 8-7s2 1 5 9l3 12c-7 11-12 17-16 17l-3-1-2-1c-3 0-6 3-6 7s3 7 7 7c6 0 12-6 22-23l3 10c3 9 6 13 10 13 5 0 11-4 18-15l-3-4c-4 6-7 8-8 8-2 0-4-3-6-10l-5-15 8-10 6-4 3 1 3 2c2 0 6-3 6-7s-2-7-6-7c-6 0-11 5-21 20l-2-6c-3-9-5-14-9-14-5 0-12 6-18 15l3 3z' fill='%23BDBDBD' /%3E%3C/svg%3E");
|
|
19711
|
+
position: relative;
|
|
19712
|
+
top: 20%;
|
|
19713
|
+
}
|
|
19552
19714
|
`;
|
|
19553
19715
|
class Composer extends Component {
|
|
19554
19716
|
constructor() {
|
|
@@ -20199,20 +20361,10 @@ const CSS$1 = css /* scss */ `
|
|
|
20199
20361
|
justify-content: center;
|
|
20200
20362
|
width: ${FILTER_ICON_EDGE_LENGTH}px;
|
|
20201
20363
|
height: ${FILTER_ICON_EDGE_LENGTH}px;
|
|
20202
|
-
|
|
20203
|
-
svg {
|
|
20204
|
-
path {
|
|
20205
|
-
fill: ${FILTERS_COLOR};
|
|
20206
|
-
}
|
|
20207
|
-
}
|
|
20208
20364
|
}
|
|
20209
20365
|
.o-filter-icon:hover {
|
|
20210
20366
|
background: ${FILTERS_COLOR};
|
|
20211
|
-
|
|
20212
|
-
path {
|
|
20213
|
-
fill: white;
|
|
20214
|
-
}
|
|
20215
|
-
}
|
|
20367
|
+
color: #fff;
|
|
20216
20368
|
}
|
|
20217
20369
|
`;
|
|
20218
20370
|
class FilterIcon extends Component {
|
|
@@ -39421,7 +39573,6 @@ function interactiveRenameSheet(env, sheetId, name, errorCallback) {
|
|
|
39421
39573
|
|
|
39422
39574
|
css /* scss */ `
|
|
39423
39575
|
.o-sheet {
|
|
39424
|
-
color: #666;
|
|
39425
39576
|
padding: 0 15px;
|
|
39426
39577
|
padding-right: 10px;
|
|
39427
39578
|
height: ${BOTTOMBAR_HEIGHT}px;
|
|
@@ -39809,6 +39960,7 @@ class DOMDndHelper {
|
|
|
39809
39960
|
const MENU_MAX_HEIGHT = 250;
|
|
39810
39961
|
css /* scss */ `
|
|
39811
39962
|
.o-spreadsheet-bottom-bar {
|
|
39963
|
+
color: ${TEXT_HEADER_COLOR};
|
|
39812
39964
|
background-color: ${BACKGROUND_GRAY_COLOR};
|
|
39813
39965
|
padding-left: ${HEADER_WIDTH}px;
|
|
39814
39966
|
font-size: 15px;
|
|
@@ -40472,6 +40624,7 @@ TopBarComposer.props = {
|
|
|
40472
40624
|
css /* scss */ `
|
|
40473
40625
|
.o-font-size-editor {
|
|
40474
40626
|
input.o-font-size {
|
|
40627
|
+
outline-color: ${SELECTION_BORDER_COLOR};
|
|
40475
40628
|
height: 20px;
|
|
40476
40629
|
width: 23px;
|
|
40477
40630
|
}
|
|
@@ -40584,52 +40737,53 @@ const FORMATS = [
|
|
|
40584
40737
|
const CUSTOM_FORMATS = [
|
|
40585
40738
|
{ name: "custom_currency", text: NumberFormatTerms.CustomCurrency, sidePanel: "CustomCurrency" },
|
|
40586
40739
|
];
|
|
40587
|
-
const
|
|
40588
|
-
|
|
40589
|
-
const
|
|
40590
|
-
const
|
|
40591
|
-
const
|
|
40740
|
+
const ICONS_COLOR = "#4A4F59";
|
|
40741
|
+
// If we ever change these colors, make sure the filter tool stays green to match the icon in the grid
|
|
40742
|
+
const ACTIVE_BG_COLOR = BACKGROUND_HEADER_FILTER_COLOR;
|
|
40743
|
+
const ACTIVE_FONT_COLOR = FILTERS_COLOR;
|
|
40744
|
+
const HOVERED_BG_COLOR = BG_HOVER_COLOR;
|
|
40745
|
+
const HOVERED_FONT_COLOR = "#000";
|
|
40592
40746
|
// -----------------------------------------------------------------------------
|
|
40593
40747
|
// TopBar
|
|
40594
40748
|
// -----------------------------------------------------------------------------
|
|
40595
40749
|
css /* scss */ `
|
|
40596
40750
|
.o-spreadsheet-topbar {
|
|
40597
|
-
background-color: white;
|
|
40598
40751
|
line-height: 1.2;
|
|
40599
|
-
display: flex;
|
|
40600
|
-
flex-direction: column;
|
|
40601
40752
|
font-size: 13px;
|
|
40602
|
-
line-height: 1.2;
|
|
40603
|
-
user-select: none;
|
|
40604
40753
|
font-weight: 500;
|
|
40605
|
-
|
|
40754
|
+
|
|
40755
|
+
.o-topbar-hoverable {
|
|
40756
|
+
cursor: pointer;
|
|
40757
|
+
.o-icon {
|
|
40758
|
+
color: ${ICONS_COLOR};
|
|
40759
|
+
}
|
|
40760
|
+
&:not(.o-disabled):not(.active):hover {
|
|
40761
|
+
background-color: ${HOVERED_BG_COLOR};
|
|
40762
|
+
color: ${HOVERED_FONT_COLOR};
|
|
40763
|
+
.o-icon {
|
|
40764
|
+
color: ${HOVERED_FONT_COLOR};
|
|
40765
|
+
}
|
|
40766
|
+
}
|
|
40767
|
+
&.active {
|
|
40768
|
+
background-color: ${ACTIVE_BG_COLOR};
|
|
40769
|
+
color: ${ACTIVE_FONT_COLOR};
|
|
40770
|
+
.o-icon {
|
|
40771
|
+
color: ${ACTIVE_FONT_COLOR};
|
|
40772
|
+
}
|
|
40773
|
+
}
|
|
40774
|
+
}
|
|
40606
40775
|
|
|
40607
40776
|
.o-topbar-top {
|
|
40608
40777
|
border-bottom: 1px solid ${SEPARATOR_COLOR};
|
|
40609
|
-
display: flex;
|
|
40610
40778
|
padding: 2px 10px;
|
|
40611
|
-
justify-content: space-between;
|
|
40612
40779
|
|
|
40613
40780
|
/* Menus */
|
|
40614
40781
|
.o-topbar-topleft {
|
|
40615
|
-
display: flex;
|
|
40616
40782
|
.o-topbar-menu {
|
|
40617
40783
|
padding: 4px 6px;
|
|
40618
40784
|
margin: 0 2px;
|
|
40619
|
-
cursor: pointer;
|
|
40620
|
-
}
|
|
40621
|
-
|
|
40622
|
-
.o-topbar-menu:hover,
|
|
40623
|
-
.o-topbar-menu-active {
|
|
40624
|
-
background-color: #f1f3f4;
|
|
40625
|
-
border-radius: 2px;
|
|
40626
40785
|
}
|
|
40627
40786
|
}
|
|
40628
|
-
|
|
40629
|
-
.o-topbar-topright {
|
|
40630
|
-
display: flex;
|
|
40631
|
-
justify-content: flex-end;
|
|
40632
|
-
}
|
|
40633
40787
|
}
|
|
40634
40788
|
|
|
40635
40789
|
.o-topbar-composer {
|
|
@@ -40638,13 +40792,9 @@ css /* scss */ `
|
|
|
40638
40792
|
|
|
40639
40793
|
/* Toolbar */
|
|
40640
40794
|
.o-topbar-toolbar {
|
|
40641
|
-
flex-shrink: 0;
|
|
40642
|
-
display: flex;
|
|
40643
40795
|
height: ${TOPBAR_TOOLBAR_HEIGHT}px;
|
|
40644
40796
|
|
|
40645
40797
|
.o-readonly-toolbar {
|
|
40646
|
-
display: flex;
|
|
40647
|
-
align-items: center;
|
|
40648
40798
|
background-color: ${BACKGROUND_HEADER_COLOR};
|
|
40649
40799
|
padding-left: 18px;
|
|
40650
40800
|
padding-right: 18px;
|
|
@@ -40652,11 +40802,6 @@ css /* scss */ `
|
|
|
40652
40802
|
|
|
40653
40803
|
/* Toolbar */
|
|
40654
40804
|
.o-toolbar-tools {
|
|
40655
|
-
display: flex;
|
|
40656
|
-
flex-shrink: 0;
|
|
40657
|
-
margin-left: 16px;
|
|
40658
|
-
cursor: default;
|
|
40659
|
-
|
|
40660
40805
|
.o-tool {
|
|
40661
40806
|
display: flex;
|
|
40662
40807
|
justify-content: center;
|
|
@@ -40664,40 +40809,13 @@ css /* scss */ `
|
|
|
40664
40809
|
margin: 2px;
|
|
40665
40810
|
padding: 0px 3px;
|
|
40666
40811
|
border-radius: 2px;
|
|
40667
|
-
cursor: pointer;
|
|
40668
40812
|
min-width: 20px;
|
|
40669
|
-
svg path,
|
|
40670
|
-
polygon,
|
|
40671
|
-
rect {
|
|
40672
|
-
fill: ${FONT_COLOR};
|
|
40673
|
-
}
|
|
40674
|
-
}
|
|
40675
|
-
|
|
40676
|
-
.o-tool-outlined {
|
|
40677
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40678
40813
|
}
|
|
40679
40814
|
|
|
40680
40815
|
.o-filter-tool {
|
|
40681
40816
|
margin-right: 8px;
|
|
40682
40817
|
}
|
|
40683
40818
|
|
|
40684
|
-
.o-tool.active {
|
|
40685
|
-
background-color: ${ACTIVE_BG_COLOR};
|
|
40686
|
-
svg path,
|
|
40687
|
-
polygon,
|
|
40688
|
-
rect {
|
|
40689
|
-
fill: ${ACTIVE_FG_COLOR};
|
|
40690
|
-
}
|
|
40691
|
-
}
|
|
40692
|
-
.o-tool:not(.o-disabled):hover {
|
|
40693
|
-
background-color: ${HOVERED_BG_COLOR};
|
|
40694
|
-
svg path,
|
|
40695
|
-
polygon,
|
|
40696
|
-
rect {
|
|
40697
|
-
fill: ${HOVERED_FG_COLOR};
|
|
40698
|
-
}
|
|
40699
|
-
}
|
|
40700
|
-
|
|
40701
40819
|
.o-border-dropdown {
|
|
40702
40820
|
padding: 4px;
|
|
40703
40821
|
}
|
|
@@ -40723,10 +40841,6 @@ css /* scss */ `
|
|
|
40723
40841
|
height: 30px;
|
|
40724
40842
|
}
|
|
40725
40843
|
|
|
40726
|
-
.o-text-icon {
|
|
40727
|
-
line-height: 30px;
|
|
40728
|
-
}
|
|
40729
|
-
|
|
40730
40844
|
.o-text-options > div {
|
|
40731
40845
|
line-height: 26px;
|
|
40732
40846
|
padding: 3px 12px;
|
|
@@ -40745,14 +40859,6 @@ css /* scss */ `
|
|
|
40745
40859
|
box-shadow: 1px 2px 5px 2px rgba(51, 51, 51, 0.15);
|
|
40746
40860
|
background-color: white;
|
|
40747
40861
|
|
|
40748
|
-
.o-dropdown-item {
|
|
40749
|
-
cursor: pointer;
|
|
40750
|
-
}
|
|
40751
|
-
|
|
40752
|
-
.o-dropdown-item:hover {
|
|
40753
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40754
|
-
}
|
|
40755
|
-
|
|
40756
40862
|
.o-dropdown-line {
|
|
40757
40863
|
display: flex;
|
|
40758
40864
|
margin: 1px;
|
|
@@ -40761,11 +40867,6 @@ css /* scss */ `
|
|
|
40761
40867
|
padding: 4px;
|
|
40762
40868
|
width: 18px;
|
|
40763
40869
|
height: 18px;
|
|
40764
|
-
cursor: pointer;
|
|
40765
|
-
|
|
40766
|
-
&:hover {
|
|
40767
|
-
background-color: rgba(0, 0, 0, 0.08);
|
|
40768
|
-
}
|
|
40769
40870
|
}
|
|
40770
40871
|
}
|
|
40771
40872
|
|
|
@@ -40777,7 +40878,7 @@ css /* scss */ `
|
|
|
40777
40878
|
padding: 0 20px;
|
|
40778
40879
|
white-space: nowrap;
|
|
40779
40880
|
|
|
40780
|
-
&.active:before {
|
|
40881
|
+
&.o-dropdown-active:before {
|
|
40781
40882
|
content: "✓";
|
|
40782
40883
|
font-weight: bold;
|
|
40783
40884
|
position: absolute;
|
|
@@ -44945,6 +45046,6 @@ function addFunction(functionName, functionDescription) {
|
|
|
44945
45046
|
export { AbstractChart, CommandResult, CorePlugin, DATETIME_FORMAT, DispatchResult, EvaluationError, Model, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, UIPlugin, __info__, addFunction, astToFormula, compile, components, convertAstNodes, coreTypes, findCellInNewZone, functionCache, helpers, invalidateEvaluationCommands, links, load, parse, readonlyAllowedCommands, registries, setTranslationMethod, tokenize };
|
|
44946
45047
|
|
|
44947
45048
|
|
|
44948
|
-
__info__.version = '16.
|
|
44949
|
-
__info__.date = '2023-03-
|
|
44950
|
-
__info__.hash = '
|
|
45049
|
+
__info__.version = '16.3.0-alpha.1';
|
|
45050
|
+
__info__.date = '2023-03-16T12:12:26.034Z';
|
|
45051
|
+
__info__.hash = 'f41d64a';
|