@odoo/o-spreadsheet 17.1.13 → 17.1.15
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 +54 -41
- package/dist/o-spreadsheet.d.ts +4 -1
- package/dist/o-spreadsheet.esm.js +55 -42
- package/dist/o-spreadsheet.iife.js +54 -41
- package/dist/o-spreadsheet.iife.min.js +25 -25
- package/dist/o_spreadsheet.xml +3 -3
- 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.1.
|
|
6
|
-
* @date 2024-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.1.15
|
|
6
|
+
* @date 2024-05-15T09:22:23.258Z
|
|
7
|
+
* @hash fc959fe
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
'use strict';
|
|
@@ -543,7 +543,7 @@ function getAddHeaderStartIndex(position, base) {
|
|
|
543
543
|
/**
|
|
544
544
|
* Compares two objects.
|
|
545
545
|
*/
|
|
546
|
-
function deepEquals(o1, o2) {
|
|
546
|
+
function deepEquals(o1, o2, ignoreFunctions) {
|
|
547
547
|
if (o1 === o2)
|
|
548
548
|
return true;
|
|
549
549
|
if ((o1 && !o2) || (o2 && !o1))
|
|
@@ -559,13 +559,16 @@ function deepEquals(o1, o2) {
|
|
|
559
559
|
}
|
|
560
560
|
}
|
|
561
561
|
for (const key in o1) {
|
|
562
|
-
|
|
562
|
+
const typeOfO1Key = typeof o1[key];
|
|
563
|
+
if (typeOfO1Key !== typeof o2[key])
|
|
563
564
|
return false;
|
|
564
|
-
if (
|
|
565
|
-
if (!deepEquals(o1[key], o2[key]))
|
|
565
|
+
if (typeOfO1Key === "object") {
|
|
566
|
+
if (!deepEquals(o1[key], o2[key], ignoreFunctions))
|
|
566
567
|
return false;
|
|
567
568
|
}
|
|
568
569
|
else {
|
|
570
|
+
if (ignoreFunctions && typeOfO1Key === "function")
|
|
571
|
+
return true;
|
|
569
572
|
if (o1[key] !== o2[key])
|
|
570
573
|
return false;
|
|
571
574
|
}
|
|
@@ -3625,21 +3628,22 @@ function toZoneWithoutBoundaryChanges(xc) {
|
|
|
3625
3628
|
xc = xc.split("!").at(-1);
|
|
3626
3629
|
}
|
|
3627
3630
|
if (xc.includes("$")) {
|
|
3628
|
-
xc = xc.
|
|
3631
|
+
xc = xc.replaceAll("$", "");
|
|
3629
3632
|
}
|
|
3630
|
-
let
|
|
3633
|
+
let firstRangePart = "";
|
|
3634
|
+
let secondRangePart;
|
|
3631
3635
|
if (xc.includes(":")) {
|
|
3632
|
-
|
|
3636
|
+
[firstRangePart, secondRangePart] = xc.split(":");
|
|
3637
|
+
firstRangePart = firstRangePart.trim();
|
|
3638
|
+
secondRangePart = secondRangePart.trim();
|
|
3633
3639
|
}
|
|
3634
3640
|
else {
|
|
3635
|
-
|
|
3641
|
+
firstRangePart = xc.trim();
|
|
3636
3642
|
}
|
|
3637
3643
|
let top, bottom, left, right;
|
|
3638
3644
|
let fullCol = false;
|
|
3639
3645
|
let fullRow = false;
|
|
3640
3646
|
let hasHeader = false;
|
|
3641
|
-
const firstRangePart = ranges[0];
|
|
3642
|
-
const secondRangePart = ranges[1] && ranges[1];
|
|
3643
3647
|
if (isColReference(firstRangePart)) {
|
|
3644
3648
|
left = right = lettersToNumber(firstRangePart);
|
|
3645
3649
|
top = bottom = 0;
|
|
@@ -3656,7 +3660,7 @@ function toZoneWithoutBoundaryChanges(xc) {
|
|
|
3656
3660
|
top = bottom = c.row;
|
|
3657
3661
|
hasHeader = true;
|
|
3658
3662
|
}
|
|
3659
|
-
if (
|
|
3663
|
+
if (secondRangePart) {
|
|
3660
3664
|
if (isColReference(secondRangePart)) {
|
|
3661
3665
|
right = lettersToNumber(secondRangePart);
|
|
3662
3666
|
fullCol = true;
|
|
@@ -4830,6 +4834,7 @@ class ChartJsComponent extends owl.Component {
|
|
|
4830
4834
|
};
|
|
4831
4835
|
canvas = owl.useRef("graphContainer");
|
|
4832
4836
|
chart;
|
|
4837
|
+
currentRuntime;
|
|
4833
4838
|
get background() {
|
|
4834
4839
|
return this.chartRuntime.background;
|
|
4835
4840
|
}
|
|
@@ -4846,9 +4851,18 @@ class ChartJsComponent extends owl.Component {
|
|
|
4846
4851
|
setup() {
|
|
4847
4852
|
owl.onMounted(() => {
|
|
4848
4853
|
const runtime = this.chartRuntime;
|
|
4849
|
-
this.
|
|
4854
|
+
this.currentRuntime = runtime;
|
|
4855
|
+
// Note: chartJS modify the runtime in place, so it's important to give it a copy
|
|
4856
|
+
this.createChart(deepCopy(runtime.chartJsConfig));
|
|
4857
|
+
});
|
|
4858
|
+
owl.onWillUnmount(() => this.chart?.destroy());
|
|
4859
|
+
owl.useEffect(() => {
|
|
4860
|
+
const runtime = this.chartRuntime;
|
|
4861
|
+
if (!deepEquals(runtime, this.currentRuntime, "ignoreFunctions")) {
|
|
4862
|
+
this.currentRuntime = runtime;
|
|
4863
|
+
this.updateChartJs(deepCopy(runtime));
|
|
4864
|
+
}
|
|
4850
4865
|
});
|
|
4851
|
-
owl.useEffect(() => this.updateChartJs(this.chartRuntime), () => [this.chartRuntime]);
|
|
4852
4866
|
}
|
|
4853
4867
|
createChart(chartData) {
|
|
4854
4868
|
const canvas = this.canvas.el;
|
|
@@ -4876,8 +4890,7 @@ class ChartJsComponent extends owl.Component {
|
|
|
4876
4890
|
this.chart.config.options.plugins.tooltip = chartData.options.plugins.tooltip;
|
|
4877
4891
|
this.chart.config.options.plugins.legend = chartData.options.plugins.legend;
|
|
4878
4892
|
this.chart.config.options.scales = chartData.options?.scales;
|
|
4879
|
-
|
|
4880
|
-
this.chart.update("active");
|
|
4893
|
+
this.chart.update();
|
|
4881
4894
|
}
|
|
4882
4895
|
}
|
|
4883
4896
|
|
|
@@ -7565,7 +7578,7 @@ function tokenizeString(chars) {
|
|
|
7565
7578
|
}
|
|
7566
7579
|
return null;
|
|
7567
7580
|
}
|
|
7568
|
-
const
|
|
7581
|
+
const SYMBOL_CHARS = new Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.!$");
|
|
7569
7582
|
/**
|
|
7570
7583
|
* A "Symbol" is just basically any word-like element that can appear in a
|
|
7571
7584
|
* formula, which is not a string. So:
|
|
@@ -7605,11 +7618,8 @@ function tokenizeSymbol(chars) {
|
|
|
7605
7618
|
};
|
|
7606
7619
|
}
|
|
7607
7620
|
}
|
|
7608
|
-
|
|
7609
|
-
|
|
7610
|
-
const value = match[0];
|
|
7611
|
-
result += value;
|
|
7612
|
-
chars.advanceBy(value.length);
|
|
7621
|
+
while (chars.current && SYMBOL_CHARS.has(chars.current)) {
|
|
7622
|
+
result += chars.shift();
|
|
7613
7623
|
}
|
|
7614
7624
|
if (result.length) {
|
|
7615
7625
|
const value = result;
|
|
@@ -8440,7 +8450,7 @@ function truncateLabel(label) {
|
|
|
8440
8450
|
/**
|
|
8441
8451
|
* Get a default chart js configuration
|
|
8442
8452
|
*/
|
|
8443
|
-
function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale }) {
|
|
8453
|
+
function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale, truncateLabels }) {
|
|
8444
8454
|
const options = {
|
|
8445
8455
|
// https://www.chartjs.org/docs/latest/general/responsive.html
|
|
8446
8456
|
responsive: true,
|
|
@@ -8487,7 +8497,7 @@ function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale })
|
|
|
8487
8497
|
type: chart.type,
|
|
8488
8498
|
options,
|
|
8489
8499
|
data: {
|
|
8490
|
-
labels: labels.map(truncateLabel),
|
|
8500
|
+
labels: truncateLabels ? labels.map(truncateLabel) : labels,
|
|
8491
8501
|
datasets: [],
|
|
8492
8502
|
},
|
|
8493
8503
|
platform: undefined,
|
|
@@ -9370,9 +9380,9 @@ function canBeLinearChart(labelRange, getters) {
|
|
|
9370
9380
|
}
|
|
9371
9381
|
return true;
|
|
9372
9382
|
}
|
|
9373
|
-
function getLineConfiguration(chart, labels,
|
|
9383
|
+
function getLineConfiguration(chart, labels, options) {
|
|
9374
9384
|
const fontColor = chartFontColor(chart.background);
|
|
9375
|
-
const config = getDefaultChartJsRuntime(chart, labels, fontColor,
|
|
9385
|
+
const config = getDefaultChartJsRuntime(chart, labels, fontColor, options);
|
|
9376
9386
|
const legend = {
|
|
9377
9387
|
labels: {
|
|
9378
9388
|
color: fontColor,
|
|
@@ -9415,7 +9425,7 @@ function getLineConfiguration(chart, labels, localeFormat) {
|
|
|
9415
9425
|
value = Number(value);
|
|
9416
9426
|
if (isNaN(value))
|
|
9417
9427
|
return value;
|
|
9418
|
-
const { locale, format } =
|
|
9428
|
+
const { locale, format } = options;
|
|
9419
9429
|
return formatValue(value, {
|
|
9420
9430
|
locale,
|
|
9421
9431
|
format: !format && Math.abs(value) >= 1000 ? "#,##" : format,
|
|
@@ -9448,9 +9458,10 @@ function createLineChartRuntime(chart, getters) {
|
|
|
9448
9458
|
({ labels, dataSetsValues } = aggregateDataForLabels(labels, dataSetsValues));
|
|
9449
9459
|
}
|
|
9450
9460
|
const locale = getters.getLocale();
|
|
9461
|
+
const truncateLabels = axisType === "category";
|
|
9451
9462
|
const dataSetFormat = getChartDatasetFormat(getters, chart.dataSets);
|
|
9452
|
-
const
|
|
9453
|
-
const config = getLineConfiguration(chart, labels,
|
|
9463
|
+
const options = { format: dataSetFormat, locale, truncateLabels };
|
|
9464
|
+
const config = getLineConfiguration(chart, labels, options);
|
|
9454
9465
|
const labelFormat = getChartLabelFormat(getters, chart.labelRange);
|
|
9455
9466
|
if (axisType === "time") {
|
|
9456
9467
|
const axis = {
|
|
@@ -28054,7 +28065,8 @@ class DataValidationOverlay extends owl.Component {
|
|
|
28054
28065
|
get checkBoxCellPositions() {
|
|
28055
28066
|
return this.env.model.getters
|
|
28056
28067
|
.getVisibleCellPositions()
|
|
28057
|
-
.filter(this.env.model.getters.isCellValidCheckbox)
|
|
28068
|
+
.filter((position) => this.env.model.getters.isCellValidCheckbox(position) &&
|
|
28069
|
+
!this.env.model.getters.isFilterHeader(position));
|
|
28058
28070
|
}
|
|
28059
28071
|
get listIconsCellPositions() {
|
|
28060
28072
|
if (this.env.model.getters.isReadonly()) {
|
|
@@ -28062,7 +28074,8 @@ class DataValidationOverlay extends owl.Component {
|
|
|
28062
28074
|
}
|
|
28063
28075
|
return this.env.model.getters
|
|
28064
28076
|
.getVisibleCellPositions()
|
|
28065
|
-
.filter(this.env.model.getters.cellHasListDataValidationIcon)
|
|
28077
|
+
.filter((position) => this.env.model.getters.cellHasListDataValidationIcon(position) &&
|
|
28078
|
+
!this.env.model.getters.isFilterHeader(position));
|
|
28066
28079
|
}
|
|
28067
28080
|
}
|
|
28068
28081
|
|
|
@@ -34069,7 +34082,7 @@ const machine = {
|
|
|
34069
34082
|
function matchReference(tokens) {
|
|
34070
34083
|
let head = 0;
|
|
34071
34084
|
let transitions = machine[State.LeftRef];
|
|
34072
|
-
|
|
34085
|
+
let matchedTokens = "";
|
|
34073
34086
|
while (transitions !== undefined) {
|
|
34074
34087
|
const token = tokens[head++];
|
|
34075
34088
|
if (!token) {
|
|
@@ -34081,15 +34094,15 @@ function matchReference(tokens) {
|
|
|
34081
34094
|
case undefined:
|
|
34082
34095
|
return null;
|
|
34083
34096
|
case State.Found:
|
|
34084
|
-
matchedTokens.
|
|
34097
|
+
matchedTokens += token.value;
|
|
34085
34098
|
tokens.splice(0, head);
|
|
34086
34099
|
return {
|
|
34087
34100
|
type: "REFERENCE",
|
|
34088
|
-
value:
|
|
34101
|
+
value: matchedTokens,
|
|
34089
34102
|
};
|
|
34090
34103
|
default:
|
|
34091
34104
|
transitions = machine[nextState];
|
|
34092
|
-
matchedTokens.
|
|
34105
|
+
matchedTokens += token.value;
|
|
34093
34106
|
break;
|
|
34094
34107
|
}
|
|
34095
34108
|
}
|
|
@@ -42504,7 +42517,7 @@ class EvaluationPlugin extends UIPlugin {
|
|
|
42504
42517
|
? getItemId(newFormat, data.formats)
|
|
42505
42518
|
: exportedCellData.format;
|
|
42506
42519
|
let content;
|
|
42507
|
-
if (isFormula && formulaCell instanceof FormulaCellWithDependencies) {
|
|
42520
|
+
if (isExported && isFormula && formulaCell instanceof FormulaCellWithDependencies) {
|
|
42508
42521
|
content = formulaCell.contentWithFixedReferences;
|
|
42509
42522
|
}
|
|
42510
42523
|
else {
|
|
@@ -57718,6 +57731,6 @@ exports.setTranslationMethod = setTranslationMethod;
|
|
|
57718
57731
|
exports.tokenize = tokenize;
|
|
57719
57732
|
|
|
57720
57733
|
|
|
57721
|
-
__info__.version = "17.1.
|
|
57722
|
-
__info__.date = "2024-
|
|
57723
|
-
__info__.hash = "
|
|
57734
|
+
__info__.version = "17.1.15";
|
|
57735
|
+
__info__.date = "2024-05-15T09:22:23.258Z";
|
|
57736
|
+
__info__.hash = "fc959fe";
|
package/dist/o-spreadsheet.d.ts
CHANGED
|
@@ -6248,6 +6248,7 @@ declare class ChartJsComponent extends Component<Props$B, SpreadsheetChildEnv> {
|
|
|
6248
6248
|
};
|
|
6249
6249
|
private canvas;
|
|
6250
6250
|
private chart?;
|
|
6251
|
+
private currentRuntime;
|
|
6251
6252
|
get background(): string;
|
|
6252
6253
|
get canvasStyle(): string;
|
|
6253
6254
|
get chartRuntime(): ChartJSRuntime;
|
|
@@ -8536,7 +8537,9 @@ declare function chartFontColor(backgroundColor: Color | undefined): Color;
|
|
|
8536
8537
|
/**
|
|
8537
8538
|
* Get a default chart js configuration
|
|
8538
8539
|
*/
|
|
8539
|
-
declare function getDefaultChartJsRuntime(chart: AbstractChart, labels: string[], fontColor: Color, { format, locale }: LocaleFormat
|
|
8540
|
+
declare function getDefaultChartJsRuntime(chart: AbstractChart, labels: string[], fontColor: Color, { format, locale, truncateLabels }: LocaleFormat & {
|
|
8541
|
+
truncateLabels?: boolean;
|
|
8542
|
+
}): Required<ChartConfiguration>;
|
|
8540
8543
|
/** See https://www.chartjs.org/docs/latest/charts/area.html#filling-modes */
|
|
8541
8544
|
declare function getFillingMode(index: number): "origin" | number;
|
|
8542
8545
|
|
|
@@ -2,12 +2,12 @@
|
|
|
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.1.
|
|
6
|
-
* @date 2024-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 17.1.15
|
|
6
|
+
* @date 2024-05-15T09:22:23.258Z
|
|
7
|
+
* @hash fc959fe
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { Component, useRef, onMounted, useEffect, onWillPatch, useState, onWillUpdateProps, onPatched, useComponent, useExternalListener,
|
|
10
|
+
import { Component, useRef, onMounted, onWillUnmount, useEffect, onWillPatch, useState, onWillUpdateProps, onPatched, useComponent, useExternalListener, onWillStart, xml, useChildSubEnv, useSubEnv, markRaw } from '@odoo/owl';
|
|
11
11
|
|
|
12
12
|
const CANVAS_SHIFT = 0.5;
|
|
13
13
|
// Colors
|
|
@@ -541,7 +541,7 @@ function getAddHeaderStartIndex(position, base) {
|
|
|
541
541
|
/**
|
|
542
542
|
* Compares two objects.
|
|
543
543
|
*/
|
|
544
|
-
function deepEquals(o1, o2) {
|
|
544
|
+
function deepEquals(o1, o2, ignoreFunctions) {
|
|
545
545
|
if (o1 === o2)
|
|
546
546
|
return true;
|
|
547
547
|
if ((o1 && !o2) || (o2 && !o1))
|
|
@@ -557,13 +557,16 @@ function deepEquals(o1, o2) {
|
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
559
|
for (const key in o1) {
|
|
560
|
-
|
|
560
|
+
const typeOfO1Key = typeof o1[key];
|
|
561
|
+
if (typeOfO1Key !== typeof o2[key])
|
|
561
562
|
return false;
|
|
562
|
-
if (
|
|
563
|
-
if (!deepEquals(o1[key], o2[key]))
|
|
563
|
+
if (typeOfO1Key === "object") {
|
|
564
|
+
if (!deepEquals(o1[key], o2[key], ignoreFunctions))
|
|
564
565
|
return false;
|
|
565
566
|
}
|
|
566
567
|
else {
|
|
568
|
+
if (ignoreFunctions && typeOfO1Key === "function")
|
|
569
|
+
return true;
|
|
567
570
|
if (o1[key] !== o2[key])
|
|
568
571
|
return false;
|
|
569
572
|
}
|
|
@@ -3623,21 +3626,22 @@ function toZoneWithoutBoundaryChanges(xc) {
|
|
|
3623
3626
|
xc = xc.split("!").at(-1);
|
|
3624
3627
|
}
|
|
3625
3628
|
if (xc.includes("$")) {
|
|
3626
|
-
xc = xc.
|
|
3629
|
+
xc = xc.replaceAll("$", "");
|
|
3627
3630
|
}
|
|
3628
|
-
let
|
|
3631
|
+
let firstRangePart = "";
|
|
3632
|
+
let secondRangePart;
|
|
3629
3633
|
if (xc.includes(":")) {
|
|
3630
|
-
|
|
3634
|
+
[firstRangePart, secondRangePart] = xc.split(":");
|
|
3635
|
+
firstRangePart = firstRangePart.trim();
|
|
3636
|
+
secondRangePart = secondRangePart.trim();
|
|
3631
3637
|
}
|
|
3632
3638
|
else {
|
|
3633
|
-
|
|
3639
|
+
firstRangePart = xc.trim();
|
|
3634
3640
|
}
|
|
3635
3641
|
let top, bottom, left, right;
|
|
3636
3642
|
let fullCol = false;
|
|
3637
3643
|
let fullRow = false;
|
|
3638
3644
|
let hasHeader = false;
|
|
3639
|
-
const firstRangePart = ranges[0];
|
|
3640
|
-
const secondRangePart = ranges[1] && ranges[1];
|
|
3641
3645
|
if (isColReference(firstRangePart)) {
|
|
3642
3646
|
left = right = lettersToNumber(firstRangePart);
|
|
3643
3647
|
top = bottom = 0;
|
|
@@ -3654,7 +3658,7 @@ function toZoneWithoutBoundaryChanges(xc) {
|
|
|
3654
3658
|
top = bottom = c.row;
|
|
3655
3659
|
hasHeader = true;
|
|
3656
3660
|
}
|
|
3657
|
-
if (
|
|
3661
|
+
if (secondRangePart) {
|
|
3658
3662
|
if (isColReference(secondRangePart)) {
|
|
3659
3663
|
right = lettersToNumber(secondRangePart);
|
|
3660
3664
|
fullCol = true;
|
|
@@ -4828,6 +4832,7 @@ class ChartJsComponent extends Component {
|
|
|
4828
4832
|
};
|
|
4829
4833
|
canvas = useRef("graphContainer");
|
|
4830
4834
|
chart;
|
|
4835
|
+
currentRuntime;
|
|
4831
4836
|
get background() {
|
|
4832
4837
|
return this.chartRuntime.background;
|
|
4833
4838
|
}
|
|
@@ -4844,9 +4849,18 @@ class ChartJsComponent extends Component {
|
|
|
4844
4849
|
setup() {
|
|
4845
4850
|
onMounted(() => {
|
|
4846
4851
|
const runtime = this.chartRuntime;
|
|
4847
|
-
this.
|
|
4852
|
+
this.currentRuntime = runtime;
|
|
4853
|
+
// Note: chartJS modify the runtime in place, so it's important to give it a copy
|
|
4854
|
+
this.createChart(deepCopy(runtime.chartJsConfig));
|
|
4855
|
+
});
|
|
4856
|
+
onWillUnmount(() => this.chart?.destroy());
|
|
4857
|
+
useEffect(() => {
|
|
4858
|
+
const runtime = this.chartRuntime;
|
|
4859
|
+
if (!deepEquals(runtime, this.currentRuntime, "ignoreFunctions")) {
|
|
4860
|
+
this.currentRuntime = runtime;
|
|
4861
|
+
this.updateChartJs(deepCopy(runtime));
|
|
4862
|
+
}
|
|
4848
4863
|
});
|
|
4849
|
-
useEffect(() => this.updateChartJs(this.chartRuntime), () => [this.chartRuntime]);
|
|
4850
4864
|
}
|
|
4851
4865
|
createChart(chartData) {
|
|
4852
4866
|
const canvas = this.canvas.el;
|
|
@@ -4874,8 +4888,7 @@ class ChartJsComponent extends Component {
|
|
|
4874
4888
|
this.chart.config.options.plugins.tooltip = chartData.options.plugins.tooltip;
|
|
4875
4889
|
this.chart.config.options.plugins.legend = chartData.options.plugins.legend;
|
|
4876
4890
|
this.chart.config.options.scales = chartData.options?.scales;
|
|
4877
|
-
|
|
4878
|
-
this.chart.update("active");
|
|
4891
|
+
this.chart.update();
|
|
4879
4892
|
}
|
|
4880
4893
|
}
|
|
4881
4894
|
|
|
@@ -7563,7 +7576,7 @@ function tokenizeString(chars) {
|
|
|
7563
7576
|
}
|
|
7564
7577
|
return null;
|
|
7565
7578
|
}
|
|
7566
|
-
const
|
|
7579
|
+
const SYMBOL_CHARS = new Set("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_.!$");
|
|
7567
7580
|
/**
|
|
7568
7581
|
* A "Symbol" is just basically any word-like element that can appear in a
|
|
7569
7582
|
* formula, which is not a string. So:
|
|
@@ -7603,11 +7616,8 @@ function tokenizeSymbol(chars) {
|
|
|
7603
7616
|
};
|
|
7604
7617
|
}
|
|
7605
7618
|
}
|
|
7606
|
-
|
|
7607
|
-
|
|
7608
|
-
const value = match[0];
|
|
7609
|
-
result += value;
|
|
7610
|
-
chars.advanceBy(value.length);
|
|
7619
|
+
while (chars.current && SYMBOL_CHARS.has(chars.current)) {
|
|
7620
|
+
result += chars.shift();
|
|
7611
7621
|
}
|
|
7612
7622
|
if (result.length) {
|
|
7613
7623
|
const value = result;
|
|
@@ -8438,7 +8448,7 @@ function truncateLabel(label) {
|
|
|
8438
8448
|
/**
|
|
8439
8449
|
* Get a default chart js configuration
|
|
8440
8450
|
*/
|
|
8441
|
-
function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale }) {
|
|
8451
|
+
function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale, truncateLabels }) {
|
|
8442
8452
|
const options = {
|
|
8443
8453
|
// https://www.chartjs.org/docs/latest/general/responsive.html
|
|
8444
8454
|
responsive: true,
|
|
@@ -8485,7 +8495,7 @@ function getDefaultChartJsRuntime(chart, labels, fontColor, { format, locale })
|
|
|
8485
8495
|
type: chart.type,
|
|
8486
8496
|
options,
|
|
8487
8497
|
data: {
|
|
8488
|
-
labels: labels.map(truncateLabel),
|
|
8498
|
+
labels: truncateLabels ? labels.map(truncateLabel) : labels,
|
|
8489
8499
|
datasets: [],
|
|
8490
8500
|
},
|
|
8491
8501
|
platform: undefined,
|
|
@@ -9368,9 +9378,9 @@ function canBeLinearChart(labelRange, getters) {
|
|
|
9368
9378
|
}
|
|
9369
9379
|
return true;
|
|
9370
9380
|
}
|
|
9371
|
-
function getLineConfiguration(chart, labels,
|
|
9381
|
+
function getLineConfiguration(chart, labels, options) {
|
|
9372
9382
|
const fontColor = chartFontColor(chart.background);
|
|
9373
|
-
const config = getDefaultChartJsRuntime(chart, labels, fontColor,
|
|
9383
|
+
const config = getDefaultChartJsRuntime(chart, labels, fontColor, options);
|
|
9374
9384
|
const legend = {
|
|
9375
9385
|
labels: {
|
|
9376
9386
|
color: fontColor,
|
|
@@ -9413,7 +9423,7 @@ function getLineConfiguration(chart, labels, localeFormat) {
|
|
|
9413
9423
|
value = Number(value);
|
|
9414
9424
|
if (isNaN(value))
|
|
9415
9425
|
return value;
|
|
9416
|
-
const { locale, format } =
|
|
9426
|
+
const { locale, format } = options;
|
|
9417
9427
|
return formatValue(value, {
|
|
9418
9428
|
locale,
|
|
9419
9429
|
format: !format && Math.abs(value) >= 1000 ? "#,##" : format,
|
|
@@ -9446,9 +9456,10 @@ function createLineChartRuntime(chart, getters) {
|
|
|
9446
9456
|
({ labels, dataSetsValues } = aggregateDataForLabels(labels, dataSetsValues));
|
|
9447
9457
|
}
|
|
9448
9458
|
const locale = getters.getLocale();
|
|
9459
|
+
const truncateLabels = axisType === "category";
|
|
9449
9460
|
const dataSetFormat = getChartDatasetFormat(getters, chart.dataSets);
|
|
9450
|
-
const
|
|
9451
|
-
const config = getLineConfiguration(chart, labels,
|
|
9461
|
+
const options = { format: dataSetFormat, locale, truncateLabels };
|
|
9462
|
+
const config = getLineConfiguration(chart, labels, options);
|
|
9452
9463
|
const labelFormat = getChartLabelFormat(getters, chart.labelRange);
|
|
9453
9464
|
if (axisType === "time") {
|
|
9454
9465
|
const axis = {
|
|
@@ -28052,7 +28063,8 @@ class DataValidationOverlay extends Component {
|
|
|
28052
28063
|
get checkBoxCellPositions() {
|
|
28053
28064
|
return this.env.model.getters
|
|
28054
28065
|
.getVisibleCellPositions()
|
|
28055
|
-
.filter(this.env.model.getters.isCellValidCheckbox)
|
|
28066
|
+
.filter((position) => this.env.model.getters.isCellValidCheckbox(position) &&
|
|
28067
|
+
!this.env.model.getters.isFilterHeader(position));
|
|
28056
28068
|
}
|
|
28057
28069
|
get listIconsCellPositions() {
|
|
28058
28070
|
if (this.env.model.getters.isReadonly()) {
|
|
@@ -28060,7 +28072,8 @@ class DataValidationOverlay extends Component {
|
|
|
28060
28072
|
}
|
|
28061
28073
|
return this.env.model.getters
|
|
28062
28074
|
.getVisibleCellPositions()
|
|
28063
|
-
.filter(this.env.model.getters.cellHasListDataValidationIcon)
|
|
28075
|
+
.filter((position) => this.env.model.getters.cellHasListDataValidationIcon(position) &&
|
|
28076
|
+
!this.env.model.getters.isFilterHeader(position));
|
|
28064
28077
|
}
|
|
28065
28078
|
}
|
|
28066
28079
|
|
|
@@ -34067,7 +34080,7 @@ const machine = {
|
|
|
34067
34080
|
function matchReference(tokens) {
|
|
34068
34081
|
let head = 0;
|
|
34069
34082
|
let transitions = machine[State.LeftRef];
|
|
34070
|
-
|
|
34083
|
+
let matchedTokens = "";
|
|
34071
34084
|
while (transitions !== undefined) {
|
|
34072
34085
|
const token = tokens[head++];
|
|
34073
34086
|
if (!token) {
|
|
@@ -34079,15 +34092,15 @@ function matchReference(tokens) {
|
|
|
34079
34092
|
case undefined:
|
|
34080
34093
|
return null;
|
|
34081
34094
|
case State.Found:
|
|
34082
|
-
matchedTokens.
|
|
34095
|
+
matchedTokens += token.value;
|
|
34083
34096
|
tokens.splice(0, head);
|
|
34084
34097
|
return {
|
|
34085
34098
|
type: "REFERENCE",
|
|
34086
|
-
value:
|
|
34099
|
+
value: matchedTokens,
|
|
34087
34100
|
};
|
|
34088
34101
|
default:
|
|
34089
34102
|
transitions = machine[nextState];
|
|
34090
|
-
matchedTokens.
|
|
34103
|
+
matchedTokens += token.value;
|
|
34091
34104
|
break;
|
|
34092
34105
|
}
|
|
34093
34106
|
}
|
|
@@ -42502,7 +42515,7 @@ class EvaluationPlugin extends UIPlugin {
|
|
|
42502
42515
|
? getItemId(newFormat, data.formats)
|
|
42503
42516
|
: exportedCellData.format;
|
|
42504
42517
|
let content;
|
|
42505
|
-
if (isFormula && formulaCell instanceof FormulaCellWithDependencies) {
|
|
42518
|
+
if (isExported && isFormula && formulaCell instanceof FormulaCellWithDependencies) {
|
|
42506
42519
|
content = formulaCell.contentWithFixedReferences;
|
|
42507
42520
|
}
|
|
42508
42521
|
else {
|
|
@@ -57680,6 +57693,6 @@ const constants = {
|
|
|
57680
57693
|
export { AbstractChart, CellErrorType, 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 };
|
|
57681
57694
|
|
|
57682
57695
|
|
|
57683
|
-
__info__.version = "17.1.
|
|
57684
|
-
__info__.date = "2024-
|
|
57685
|
-
__info__.hash = "
|
|
57696
|
+
__info__.version = "17.1.15";
|
|
57697
|
+
__info__.date = "2024-05-15T09:22:23.258Z";
|
|
57698
|
+
__info__.hash = "fc959fe";
|