@odoo/o-spreadsheet 19.3.18 → 19.3.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 +28 -17
- package/dist/o_spreadsheet.css +4 -4
- package/dist/o_spreadsheet.esm.js +28 -17
- package/dist/o_spreadsheet.iife.js +28 -17
- package/dist/o_spreadsheet.min.iife.js +7 -7
- package/dist/o_spreadsheet.xml +3 -3
- package/dist/types/plugins/core/carousel.d.ts +1 -1
- package/package.json +1 -1
package/dist/o_spreadsheet.cjs
CHANGED
|
@@ -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 19.3.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.19
|
|
6
|
+
* @date 2026-09-04T07:38:14.356Z
|
|
7
|
+
* @hash c8c526d
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
@@ -9593,16 +9593,16 @@ const chartShowValuesPlugin = {
|
|
|
9593
9593
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9594
9594
|
break;
|
|
9595
9595
|
case "bar":
|
|
9596
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9596
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9597
9597
|
break;
|
|
9598
9598
|
case "pyramid":
|
|
9599
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9599
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
9600
9600
|
break;
|
|
9601
9601
|
case "calendar":
|
|
9602
9602
|
drawBarChartValues(chart, options, ctx);
|
|
9603
9603
|
break;
|
|
9604
9604
|
case "funnel":
|
|
9605
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9605
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
9606
9606
|
break;
|
|
9607
9607
|
}
|
|
9608
9608
|
ctx.restore();
|
|
@@ -9672,7 +9672,7 @@ function drawBarChartValues(chart, options, ctx) {
|
|
|
9672
9672
|
}
|
|
9673
9673
|
}
|
|
9674
9674
|
}
|
|
9675
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
9675
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
9676
9676
|
const textsPositions = {};
|
|
9677
9677
|
for (const dataset of chart._metasets) {
|
|
9678
9678
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -9687,7 +9687,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
9687
9687
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
9688
9688
|
const PADDING = 3;
|
|
9689
9689
|
let xPosition;
|
|
9690
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9690
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9691
9691
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
9692
9692
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
9693
9693
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -25446,9 +25446,10 @@ var Composer = class extends _odoo_owl.Component {
|
|
|
25446
25446
|
compositionActive = false;
|
|
25447
25447
|
spreadsheetRect = useSpreadsheetRect();
|
|
25448
25448
|
lastHoveredTokenIndex = void 0;
|
|
25449
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
25449
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
25450
25450
|
const selection = this.contentHelper.getCurrentSelection();
|
|
25451
|
-
|
|
25451
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
25452
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
25452
25453
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
25453
25454
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
25454
25455
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -25766,7 +25767,8 @@ var Composer = class extends _odoo_owl.Component {
|
|
|
25766
25767
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
25767
25768
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
25768
25769
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
25769
|
-
this.
|
|
25770
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
25771
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
25770
25772
|
}
|
|
25771
25773
|
}
|
|
25772
25774
|
/**
|
|
@@ -40077,7 +40079,13 @@ var PivotSpreadsheetSidePanel = class extends _odoo_owl.Component {
|
|
|
40077
40079
|
}
|
|
40078
40080
|
onSelectionChanged(ranges) {
|
|
40079
40081
|
this.state.rangeHasChanged = true;
|
|
40080
|
-
|
|
40082
|
+
if (ranges.length === 0) {
|
|
40083
|
+
this.state.range = void 0;
|
|
40084
|
+
return;
|
|
40085
|
+
}
|
|
40086
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
40087
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
40088
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
40081
40089
|
}
|
|
40082
40090
|
onSelectionConfirmed() {
|
|
40083
40091
|
if (this.state.range) {
|
|
@@ -49736,6 +49744,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
49736
49744
|
return "Success";
|
|
49737
49745
|
case "UPDATE_CAROUSEL":
|
|
49738
49746
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
49747
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
49739
49748
|
return "Success";
|
|
49740
49749
|
}
|
|
49741
49750
|
return "Success";
|
|
@@ -54914,6 +54923,7 @@ var FormulaDependencyGraph = class {
|
|
|
54914
54923
|
}
|
|
54915
54924
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
54916
54925
|
visited = visited.copy();
|
|
54926
|
+
let initialRangesToRemove = visited.copy();
|
|
54917
54927
|
const queue = Array.from(ranges).reverse();
|
|
54918
54928
|
while (queue.length > 0) {
|
|
54919
54929
|
const range = queue.pop();
|
|
@@ -54929,8 +54939,9 @@ var FormulaDependencyGraph = class {
|
|
|
54929
54939
|
for (const interval of overlappingIntervals) impactedRanges.add(interval.dependents);
|
|
54930
54940
|
}
|
|
54931
54941
|
queue.push(...impactedRanges.difference(visited));
|
|
54942
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
54932
54943
|
}
|
|
54933
|
-
for (const range of
|
|
54944
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
54934
54945
|
return visited;
|
|
54935
54946
|
}
|
|
54936
54947
|
getOrCreateIntervalTree(sheetId, col) {
|
|
@@ -68987,7 +68998,7 @@ var FigureRendererStore = class extends DisposableStore {
|
|
|
68987
68998
|
if (!this.getters.isDashboard()) {
|
|
68988
68999
|
ctx.strokeStyle = GRAY_400;
|
|
68989
69000
|
ctx.lineWidth = 1;
|
|
68990
|
-
ctx.strokeRect(x, y, figure.width, figure.height);
|
|
69001
|
+
ctx.strokeRect(x + .5, y + .5, figure.width - 1, figure.height - 1);
|
|
68991
69002
|
}
|
|
68992
69003
|
}
|
|
68993
69004
|
}
|
|
@@ -85002,6 +85013,6 @@ exports.stores = stores;
|
|
|
85002
85013
|
exports.tokenColors = tokenColors;
|
|
85003
85014
|
exports.tokenize = tokenize;
|
|
85004
85015
|
|
|
85005
|
-
__info__.version = "19.3.
|
|
85006
|
-
__info__.date = "2026-
|
|
85007
|
-
__info__.hash = "
|
|
85016
|
+
__info__.version = "19.3.19";
|
|
85017
|
+
__info__.date = "2026-09-04T07:38:14.356Z";
|
|
85018
|
+
__info__.hash = "c8c526d";
|
package/dist/o_spreadsheet.css
CHANGED
|
@@ -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 19.3.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.19
|
|
6
|
+
* @date 2026-09-04T07:38:15.963Z
|
|
7
|
+
* @hash c8c526d
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
--os-white-bg: light-dark(#ffffff, var(--os-gray-200));
|
|
23
23
|
--os-popover-bg: light-dark(#ffffff, var(--os-gray-300));
|
|
24
24
|
|
|
25
|
-
--os-default-font: "Roboto", "Arial";
|
|
25
|
+
--os-default-font: "Roboto", "Arial", "Liberation Sans";
|
|
26
26
|
--os-default-font-size: 10px;
|
|
27
27
|
--os-link-color: light-dark(#017e84, #02c7b5);
|
|
28
28
|
--os-link-hover-color: light-dark(#01585c, #4ed8cb);
|
|
@@ -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 19.3.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.19
|
|
6
|
+
* @date 2026-09-04T07:38:14.356Z
|
|
7
|
+
* @hash c8c526d
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { App, Component, blockDom, markRaw, onMounted, onPatched, onWillPatch, onWillStart, onWillUnmount, onWillUpdateProps, status, toRaw, useChildSubEnv, useComponent, useEffect, useEnv, useExternalListener, useRef, useState, useSubEnv, whenReady, xml } from "@odoo/owl";
|
|
@@ -9592,16 +9592,16 @@ const chartShowValuesPlugin = {
|
|
|
9592
9592
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9593
9593
|
break;
|
|
9594
9594
|
case "bar":
|
|
9595
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9595
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9596
9596
|
break;
|
|
9597
9597
|
case "pyramid":
|
|
9598
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9598
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
9599
9599
|
break;
|
|
9600
9600
|
case "calendar":
|
|
9601
9601
|
drawBarChartValues(chart, options, ctx);
|
|
9602
9602
|
break;
|
|
9603
9603
|
case "funnel":
|
|
9604
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9604
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
9605
9605
|
break;
|
|
9606
9606
|
}
|
|
9607
9607
|
ctx.restore();
|
|
@@ -9671,7 +9671,7 @@ function drawBarChartValues(chart, options, ctx) {
|
|
|
9671
9671
|
}
|
|
9672
9672
|
}
|
|
9673
9673
|
}
|
|
9674
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
9674
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
9675
9675
|
const textsPositions = {};
|
|
9676
9676
|
for (const dataset of chart._metasets) {
|
|
9677
9677
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -9686,7 +9686,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
9686
9686
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
9687
9687
|
const PADDING = 3;
|
|
9688
9688
|
let xPosition;
|
|
9689
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9689
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9690
9690
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
9691
9691
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
9692
9692
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -25445,9 +25445,10 @@ var Composer = class extends Component {
|
|
|
25445
25445
|
compositionActive = false;
|
|
25446
25446
|
spreadsheetRect = useSpreadsheetRect();
|
|
25447
25447
|
lastHoveredTokenIndex = void 0;
|
|
25448
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
25448
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
25449
25449
|
const selection = this.contentHelper.getCurrentSelection();
|
|
25450
|
-
|
|
25450
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
25451
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
25451
25452
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
25452
25453
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
25453
25454
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -25765,7 +25766,8 @@ var Composer = class extends Component {
|
|
|
25765
25766
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
25766
25767
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
25767
25768
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
25768
|
-
this.
|
|
25769
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
25770
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
25769
25771
|
}
|
|
25770
25772
|
}
|
|
25771
25773
|
/**
|
|
@@ -40076,7 +40078,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
40076
40078
|
}
|
|
40077
40079
|
onSelectionChanged(ranges) {
|
|
40078
40080
|
this.state.rangeHasChanged = true;
|
|
40079
|
-
|
|
40081
|
+
if (ranges.length === 0) {
|
|
40082
|
+
this.state.range = void 0;
|
|
40083
|
+
return;
|
|
40084
|
+
}
|
|
40085
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
40086
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
40087
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
40080
40088
|
}
|
|
40081
40089
|
onSelectionConfirmed() {
|
|
40082
40090
|
if (this.state.range) {
|
|
@@ -49735,6 +49743,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
49735
49743
|
return "Success";
|
|
49736
49744
|
case "UPDATE_CAROUSEL":
|
|
49737
49745
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
49746
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
49738
49747
|
return "Success";
|
|
49739
49748
|
}
|
|
49740
49749
|
return "Success";
|
|
@@ -54913,6 +54922,7 @@ var FormulaDependencyGraph = class {
|
|
|
54913
54922
|
}
|
|
54914
54923
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
54915
54924
|
visited = visited.copy();
|
|
54925
|
+
let initialRangesToRemove = visited.copy();
|
|
54916
54926
|
const queue = Array.from(ranges).reverse();
|
|
54917
54927
|
while (queue.length > 0) {
|
|
54918
54928
|
const range = queue.pop();
|
|
@@ -54928,8 +54938,9 @@ var FormulaDependencyGraph = class {
|
|
|
54928
54938
|
for (const interval of overlappingIntervals) impactedRanges.add(interval.dependents);
|
|
54929
54939
|
}
|
|
54930
54940
|
queue.push(...impactedRanges.difference(visited));
|
|
54941
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
54931
54942
|
}
|
|
54932
|
-
for (const range of
|
|
54943
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
54933
54944
|
return visited;
|
|
54934
54945
|
}
|
|
54935
54946
|
getOrCreateIntervalTree(sheetId, col) {
|
|
@@ -68802,7 +68813,7 @@ var FigureRendererStore = class extends DisposableStore {
|
|
|
68802
68813
|
if (!this.getters.isDashboard()) {
|
|
68803
68814
|
ctx.strokeStyle = GRAY_400;
|
|
68804
68815
|
ctx.lineWidth = 1;
|
|
68805
|
-
ctx.strokeRect(x, y, figure.width, figure.height);
|
|
68816
|
+
ctx.strokeRect(x + .5, y + .5, figure.width - 1, figure.height - 1);
|
|
68806
68817
|
}
|
|
68807
68818
|
}
|
|
68808
68819
|
}
|
|
@@ -84759,6 +84770,6 @@ const chartHelpers = {
|
|
|
84759
84770
|
//#endregion
|
|
84760
84771
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CompiledFormula, CorePlugin, CoreViewPlugin, DEFAULT_LOCALE, DEFAULT_LOCALES, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, canExecuteInReadonly, categories, chartHelpers, components, constants, convertAstNodes, coreTypes, createAutocompleteArgumentsProvider, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, isCoreCommand, isSheetDependent, iterateAstNodes, links, load, lockedSheetAllowedCommands, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
84761
84772
|
|
|
84762
|
-
__info__.version = "19.3.
|
|
84763
|
-
__info__.date = "2026-
|
|
84764
|
-
__info__.hash = "
|
|
84773
|
+
__info__.version = "19.3.19";
|
|
84774
|
+
__info__.date = "2026-09-04T07:38:14.356Z";
|
|
84775
|
+
__info__.hash = "c8c526d";
|
|
@@ -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 19.3.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.3.19
|
|
6
|
+
* @date 2026-09-04T07:38:14.356Z
|
|
7
|
+
* @hash c8c526d
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -9594,16 +9594,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
9594
9594
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9595
9595
|
break;
|
|
9596
9596
|
case "bar":
|
|
9597
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9597
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
9598
9598
|
break;
|
|
9599
9599
|
case "pyramid":
|
|
9600
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9600
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
9601
9601
|
break;
|
|
9602
9602
|
case "calendar":
|
|
9603
9603
|
drawBarChartValues(chart, options, ctx);
|
|
9604
9604
|
break;
|
|
9605
9605
|
case "funnel":
|
|
9606
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
9606
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
9607
9607
|
break;
|
|
9608
9608
|
}
|
|
9609
9609
|
ctx.restore();
|
|
@@ -9673,7 +9673,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
9673
9673
|
}
|
|
9674
9674
|
}
|
|
9675
9675
|
}
|
|
9676
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
9676
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
9677
9677
|
const textsPositions = {};
|
|
9678
9678
|
for (const dataset of chart._metasets) {
|
|
9679
9679
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -9688,7 +9688,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
9688
9688
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
9689
9689
|
const PADDING = 3;
|
|
9690
9690
|
let xPosition;
|
|
9691
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9691
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
9692
9692
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
9693
9693
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
9694
9694
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -25447,9 +25447,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
25447
25447
|
compositionActive = false;
|
|
25448
25448
|
spreadsheetRect = useSpreadsheetRect();
|
|
25449
25449
|
lastHoveredTokenIndex = void 0;
|
|
25450
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
25450
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
25451
25451
|
const selection = this.contentHelper.getCurrentSelection();
|
|
25452
|
-
|
|
25452
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
25453
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
25453
25454
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
25454
25455
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
25455
25456
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -25767,7 +25768,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
25767
25768
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
25768
25769
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
25769
25770
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
25770
|
-
this.
|
|
25771
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
25772
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
25771
25773
|
}
|
|
25772
25774
|
}
|
|
25773
25775
|
/**
|
|
@@ -40078,7 +40080,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
40078
40080
|
}
|
|
40079
40081
|
onSelectionChanged(ranges) {
|
|
40080
40082
|
this.state.rangeHasChanged = true;
|
|
40081
|
-
|
|
40083
|
+
if (ranges.length === 0) {
|
|
40084
|
+
this.state.range = void 0;
|
|
40085
|
+
return;
|
|
40086
|
+
}
|
|
40087
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
40088
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
40089
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
40082
40090
|
}
|
|
40083
40091
|
onSelectionConfirmed() {
|
|
40084
40092
|
if (this.state.range) {
|
|
@@ -49737,6 +49745,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
49737
49745
|
return "Success";
|
|
49738
49746
|
case "UPDATE_CAROUSEL":
|
|
49739
49747
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
49748
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
49740
49749
|
return "Success";
|
|
49741
49750
|
}
|
|
49742
49751
|
return "Success";
|
|
@@ -54915,6 +54924,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
54915
54924
|
}
|
|
54916
54925
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
54917
54926
|
visited = visited.copy();
|
|
54927
|
+
let initialRangesToRemove = visited.copy();
|
|
54918
54928
|
const queue = Array.from(ranges).reverse();
|
|
54919
54929
|
while (queue.length > 0) {
|
|
54920
54930
|
const range = queue.pop();
|
|
@@ -54930,8 +54940,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
54930
54940
|
for (const interval of overlappingIntervals) impactedRanges.add(interval.dependents);
|
|
54931
54941
|
}
|
|
54932
54942
|
queue.push(...impactedRanges.difference(visited));
|
|
54943
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
54933
54944
|
}
|
|
54934
|
-
for (const range of
|
|
54945
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
54935
54946
|
return visited;
|
|
54936
54947
|
}
|
|
54937
54948
|
getOrCreateIntervalTree(sheetId, col) {
|
|
@@ -68804,7 +68815,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
68804
68815
|
if (!this.getters.isDashboard()) {
|
|
68805
68816
|
ctx.strokeStyle = GRAY_400;
|
|
68806
68817
|
ctx.lineWidth = 1;
|
|
68807
|
-
ctx.strokeRect(x, y, figure.width, figure.height);
|
|
68818
|
+
ctx.strokeRect(x + .5, y + .5, figure.width - 1, figure.height - 1);
|
|
68808
68819
|
}
|
|
68809
68820
|
}
|
|
68810
68821
|
}
|
|
@@ -84819,8 +84830,8 @@ exports.stores = stores;
|
|
|
84819
84830
|
exports.tokenColors = tokenColors;
|
|
84820
84831
|
exports.tokenize = tokenize;
|
|
84821
84832
|
|
|
84822
|
-
__info__.version = "19.3.
|
|
84823
|
-
__info__.date = "2026-
|
|
84824
|
-
__info__.hash = "
|
|
84833
|
+
__info__.version = "19.3.19";
|
|
84834
|
+
__info__.date = "2026-09-04T07:38:14.356Z";
|
|
84835
|
+
__info__.hash = "c8c526d";
|
|
84825
84836
|
|
|
84826
84837
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|