@odoo/o-spreadsheet 19.2.27 → 19.2.28
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.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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:57.749Z
|
|
7
|
+
* @hash 102af11
|
|
8
8
|
*/
|
|
9
9
|
:root {
|
|
10
10
|
--os-gray-100: light-dark(#f9fafb, #1b1d26);
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
--os-black: light-dark(#000000, #ffffff);
|
|
22
22
|
--os-white-bg: light-dark(#ffffff, var(--os-gray-200));
|
|
23
23
|
|
|
24
|
-
--os-default-font: "Roboto", "Arial";
|
|
24
|
+
--os-default-font: "Roboto", "Arial", "Liberation Sans";
|
|
25
25
|
--os-default-font-size: 10px;
|
|
26
26
|
--os-link-color: light-dark(#017e84, #02c7b5);
|
|
27
27
|
--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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:56.173Z
|
|
7
|
+
* @hash 102af11
|
|
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";
|
|
@@ -8339,16 +8339,16 @@ const chartShowValuesPlugin = {
|
|
|
8339
8339
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8340
8340
|
break;
|
|
8341
8341
|
case "bar":
|
|
8342
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8342
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8343
8343
|
break;
|
|
8344
8344
|
case "pyramid":
|
|
8345
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8345
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8346
8346
|
break;
|
|
8347
8347
|
case "calendar":
|
|
8348
8348
|
drawBarChartValues(chart, options, ctx);
|
|
8349
8349
|
break;
|
|
8350
8350
|
case "funnel":
|
|
8351
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8351
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8352
8352
|
break;
|
|
8353
8353
|
}
|
|
8354
8354
|
ctx.restore();
|
|
@@ -8418,7 +8418,7 @@ function drawBarChartValues(chart, options, ctx) {
|
|
|
8418
8418
|
}
|
|
8419
8419
|
}
|
|
8420
8420
|
}
|
|
8421
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8421
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8422
8422
|
const textsPositions = {};
|
|
8423
8423
|
for (const dataset of chart._metasets) {
|
|
8424
8424
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8433,7 +8433,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
8433
8433
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8434
8434
|
const PADDING = 3;
|
|
8435
8435
|
let xPosition;
|
|
8436
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8436
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8437
8437
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8438
8438
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8439
8439
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -32335,9 +32335,10 @@ var Composer = class extends Component {
|
|
|
32335
32335
|
compositionActive = false;
|
|
32336
32336
|
spreadsheetRect = useSpreadsheetRect();
|
|
32337
32337
|
lastHoveredTokenIndex = void 0;
|
|
32338
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
32338
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
32339
32339
|
const selection = this.contentHelper.getCurrentSelection();
|
|
32340
|
-
|
|
32340
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
32341
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
32341
32342
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
32342
32343
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
32343
32344
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -32655,7 +32656,8 @@ var Composer = class extends Component {
|
|
|
32655
32656
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
32656
32657
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
32657
32658
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
32658
|
-
this.
|
|
32659
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
32660
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
32659
32661
|
}
|
|
32660
32662
|
}
|
|
32661
32663
|
/**
|
|
@@ -46228,7 +46230,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
46228
46230
|
}
|
|
46229
46231
|
onSelectionChanged(ranges) {
|
|
46230
46232
|
this.state.rangeHasChanged = true;
|
|
46231
|
-
|
|
46233
|
+
if (ranges.length === 0) {
|
|
46234
|
+
this.state.range = void 0;
|
|
46235
|
+
return;
|
|
46236
|
+
}
|
|
46237
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
46238
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
46239
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
46232
46240
|
}
|
|
46233
46241
|
onSelectionConfirmed() {
|
|
46234
46242
|
if (this.state.range) {
|
|
@@ -55773,6 +55781,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
55773
55781
|
return "Success";
|
|
55774
55782
|
case "UPDATE_CAROUSEL":
|
|
55775
55783
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
55784
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
55776
55785
|
return "Success";
|
|
55777
55786
|
}
|
|
55778
55787
|
return "Success";
|
|
@@ -60985,14 +60994,16 @@ var FormulaDependencyGraph = class {
|
|
|
60985
60994
|
*/
|
|
60986
60995
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
60987
60996
|
visited = visited.copy();
|
|
60997
|
+
let initialRangesToRemove = visited.copy();
|
|
60988
60998
|
const queue = Array.from(ranges).reverse();
|
|
60989
60999
|
while (queue.length > 0) {
|
|
60990
61000
|
const range = queue.pop();
|
|
60991
61001
|
visited.add(range);
|
|
60992
61002
|
const impactedRanges = this.rTree.search(range);
|
|
60993
61003
|
queue.push(...impactedRanges.difference(visited));
|
|
61004
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
60994
61005
|
}
|
|
60995
|
-
for (const range of
|
|
61006
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
60996
61007
|
return visited;
|
|
60997
61008
|
}
|
|
60998
61009
|
};
|
|
@@ -81825,6 +81836,6 @@ const chartHelpers = {
|
|
|
81825
81836
|
//#endregion
|
|
81826
81837
|
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 };
|
|
81827
81838
|
|
|
81828
|
-
__info__.version = "19.2.
|
|
81829
|
-
__info__.date = "2026-
|
|
81830
|
-
__info__.hash = "
|
|
81839
|
+
__info__.version = "19.2.28";
|
|
81840
|
+
__info__.date = "2026-09-04T07:33:56.173Z";
|
|
81841
|
+
__info__.hash = "102af11";
|
|
@@ -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.2.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.2.28
|
|
6
|
+
* @date 2026-09-04T07:33:56.173Z
|
|
7
|
+
* @hash 102af11
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -8341,16 +8341,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8341
8341
|
drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8342
8342
|
break;
|
|
8343
8343
|
case "bar":
|
|
8344
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8344
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
8345
8345
|
break;
|
|
8346
8346
|
case "pyramid":
|
|
8347
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8347
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true });
|
|
8348
8348
|
break;
|
|
8349
8349
|
case "calendar":
|
|
8350
8350
|
drawBarChartValues(chart, options, ctx);
|
|
8351
8351
|
break;
|
|
8352
8352
|
case "funnel":
|
|
8353
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
8353
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
8354
8354
|
break;
|
|
8355
8355
|
}
|
|
8356
8356
|
ctx.restore();
|
|
@@ -8420,7 +8420,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8420
8420
|
}
|
|
8421
8421
|
}
|
|
8422
8422
|
}
|
|
8423
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
8423
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
8424
8424
|
const textsPositions = {};
|
|
8425
8425
|
for (const dataset of chart._metasets) {
|
|
8426
8426
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -8435,7 +8435,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
8435
8435
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
8436
8436
|
const PADDING = 3;
|
|
8437
8437
|
let xPosition;
|
|
8438
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8438
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
8439
8439
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
8440
8440
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
8441
8441
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -32337,9 +32337,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32337
32337
|
compositionActive = false;
|
|
32338
32338
|
spreadsheetRect = useSpreadsheetRect();
|
|
32339
32339
|
lastHoveredTokenIndex = void 0;
|
|
32340
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
32340
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
32341
32341
|
const selection = this.contentHelper.getCurrentSelection();
|
|
32342
|
-
|
|
32342
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
32343
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
32343
32344
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
32344
32345
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
32345
32346
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -32657,7 +32658,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32657
32658
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
32658
32659
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
32659
32660
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
32660
|
-
this.
|
|
32661
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
32662
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
32661
32663
|
}
|
|
32662
32664
|
}
|
|
32663
32665
|
/**
|
|
@@ -46230,7 +46232,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
46230
46232
|
}
|
|
46231
46233
|
onSelectionChanged(ranges) {
|
|
46232
46234
|
this.state.rangeHasChanged = true;
|
|
46233
|
-
|
|
46235
|
+
if (ranges.length === 0) {
|
|
46236
|
+
this.state.range = void 0;
|
|
46237
|
+
return;
|
|
46238
|
+
}
|
|
46239
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
46240
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
46241
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
46234
46242
|
}
|
|
46235
46243
|
onSelectionConfirmed() {
|
|
46236
46244
|
if (this.state.range) {
|
|
@@ -55775,6 +55783,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
55775
55783
|
return "Success";
|
|
55776
55784
|
case "UPDATE_CAROUSEL":
|
|
55777
55785
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
55786
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
55778
55787
|
return "Success";
|
|
55779
55788
|
}
|
|
55780
55789
|
return "Success";
|
|
@@ -60987,14 +60996,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
60987
60996
|
*/
|
|
60988
60997
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
60989
60998
|
visited = visited.copy();
|
|
60999
|
+
let initialRangesToRemove = visited.copy();
|
|
60990
61000
|
const queue = Array.from(ranges).reverse();
|
|
60991
61001
|
while (queue.length > 0) {
|
|
60992
61002
|
const range = queue.pop();
|
|
60993
61003
|
visited.add(range);
|
|
60994
61004
|
const impactedRanges = this.rTree.search(range);
|
|
60995
61005
|
queue.push(...impactedRanges.difference(visited));
|
|
61006
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
60996
61007
|
}
|
|
60997
|
-
for (const range of
|
|
61008
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
60998
61009
|
return visited;
|
|
60999
61010
|
}
|
|
61000
61011
|
};
|
|
@@ -81885,8 +81896,8 @@ exports.stores = stores;
|
|
|
81885
81896
|
exports.tokenColors = tokenColors;
|
|
81886
81897
|
exports.tokenize = tokenize;
|
|
81887
81898
|
|
|
81888
|
-
__info__.version = "19.2.
|
|
81889
|
-
__info__.date = "2026-
|
|
81890
|
-
__info__.hash = "
|
|
81899
|
+
__info__.version = "19.2.28";
|
|
81900
|
+
__info__.date = "2026-09-04T07:33:56.173Z";
|
|
81901
|
+
__info__.hash = "102af11";
|
|
81891
81902
|
|
|
81892
81903
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|