@odoo/o-spreadsheet 19.0.47 → 19.0.49
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.0.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.0.49
|
|
6
|
+
* @date 2026-09-04T07:28:56.108Z
|
|
7
|
+
* @hash 3926688
|
|
8
8
|
*/
|
|
9
9
|
/* Originates from src/components/top_bar/top_bar.scss */
|
|
10
10
|
@media (max-width: 1200px) {
|
|
@@ -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.0.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.0.49
|
|
6
|
+
* @date 2026-09-04T07:28:54.520Z
|
|
7
|
+
* @hash 3926688
|
|
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, xml } from "@odoo/owl";
|
|
@@ -19422,10 +19422,10 @@ const chartShowValuesPlugin = {
|
|
|
19422
19422
|
case "bar":
|
|
19423
19423
|
case "line":
|
|
19424
19424
|
case "radar":
|
|
19425
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
19425
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
19426
19426
|
break;
|
|
19427
19427
|
case "funnel":
|
|
19428
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
19428
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
19429
19429
|
break;
|
|
19430
19430
|
}
|
|
19431
19431
|
ctx.restore();
|
|
@@ -19466,7 +19466,7 @@ function drawLineOrBarOrRadarChartValues(chart, options, ctx) {
|
|
|
19466
19466
|
}
|
|
19467
19467
|
}
|
|
19468
19468
|
}
|
|
19469
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
19469
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
19470
19470
|
const textsPositions = {};
|
|
19471
19471
|
for (const dataset of chart._metasets) {
|
|
19472
19472
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -19481,7 +19481,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
19481
19481
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
19482
19482
|
const PADDING = 3;
|
|
19483
19483
|
let xPosition;
|
|
19484
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
19484
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
19485
19485
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
19486
19486
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
19487
19487
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -19717,6 +19717,7 @@ function getRadarChartDatasets(definition, args) {
|
|
|
19717
19717
|
hidden,
|
|
19718
19718
|
borderColor,
|
|
19719
19719
|
backgroundColor: borderColor,
|
|
19720
|
+
pointBackgroundColor: borderColor,
|
|
19720
19721
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
19721
19722
|
};
|
|
19722
19723
|
if (fill) {
|
|
@@ -29571,9 +29572,10 @@ var Composer = class extends Component {
|
|
|
29571
29572
|
compositionActive = false;
|
|
29572
29573
|
spreadsheetRect = useSpreadsheetRect();
|
|
29573
29574
|
lastHoveredTokenIndex = void 0;
|
|
29574
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
29575
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
29575
29576
|
const selection = this.contentHelper.getCurrentSelection();
|
|
29576
|
-
|
|
29577
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
29578
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
29577
29579
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
29578
29580
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
29579
29581
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -29890,7 +29892,8 @@ var Composer = class extends Component {
|
|
|
29890
29892
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
29891
29893
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
29892
29894
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
29893
|
-
this.
|
|
29895
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
29896
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
29894
29897
|
}
|
|
29895
29898
|
}
|
|
29896
29899
|
/**
|
|
@@ -31495,6 +31498,42 @@ var ColorPicker = class extends Component {
|
|
|
31495
31498
|
}
|
|
31496
31499
|
};
|
|
31497
31500
|
|
|
31501
|
+
//#endregion
|
|
31502
|
+
//#region src/components/icons/raw_svgs.ts
|
|
31503
|
+
/**
|
|
31504
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
31505
|
+
*
|
|
31506
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
31507
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
31508
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
31509
|
+
* because it relies on regular expressions.
|
|
31510
|
+
*
|
|
31511
|
+
* Do not inline these constants.
|
|
31512
|
+
*/
|
|
31513
|
+
const CHECK_SVG = `
|
|
31514
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
31515
|
+
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
31516
|
+
</svg>
|
|
31517
|
+
`;
|
|
31518
|
+
const CIRCLE_SVG = `
|
|
31519
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
31520
|
+
<circle r="2" fill="#FFF"/>
|
|
31521
|
+
</svg>
|
|
31522
|
+
`;
|
|
31523
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
31524
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31525
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31526
|
+
</svg>
|
|
31527
|
+
`;
|
|
31528
|
+
const CURSOR_SVG = `
|
|
31529
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
31530
|
+
`;
|
|
31531
|
+
const CARET_DOWN_SVG = `
|
|
31532
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
31533
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
31534
|
+
</svg>
|
|
31535
|
+
`;
|
|
31536
|
+
|
|
31498
31537
|
//#endregion
|
|
31499
31538
|
//#region src/components/side_panel/components/section/section.ts
|
|
31500
31539
|
var Section = class extends Component {
|
|
@@ -31521,11 +31560,7 @@ css`
|
|
|
31521
31560
|
cursor: pointer;
|
|
31522
31561
|
border: 1px solid ${GRAY_300};
|
|
31523
31562
|
background-position: 1px 1px;
|
|
31524
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
31525
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31526
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31527
|
-
</svg>
|
|
31528
|
-
`)}");
|
|
31563
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
31529
31564
|
}
|
|
31530
31565
|
`;
|
|
31531
31566
|
var RoundColorPicker = class extends Component {
|
|
@@ -32786,11 +32821,6 @@ var FilterMenuCriterion = class extends Component {
|
|
|
32786
32821
|
|
|
32787
32822
|
//#endregion
|
|
32788
32823
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
32789
|
-
const CHECK_SVG = `
|
|
32790
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
32791
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
32792
|
-
</svg>
|
|
32793
|
-
`;
|
|
32794
32824
|
const CHECKBOX_WIDTH = 14;
|
|
32795
32825
|
css`
|
|
32796
32826
|
label.o-checkbox {
|
|
@@ -45022,9 +45052,7 @@ var HoveredIconStore = class extends SpreadsheetStore {
|
|
|
45022
45052
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
45023
45053
|
css`
|
|
45024
45054
|
.o-paint-format-cursor {
|
|
45025
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
45026
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
45027
|
-
`)}"), auto;
|
|
45055
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
45028
45056
|
}
|
|
45029
45057
|
`;
|
|
45030
45058
|
function useCellHovered(env, gridRef) {
|
|
@@ -48655,14 +48683,16 @@ css`
|
|
|
48655
48683
|
border-radius: 8px;
|
|
48656
48684
|
|
|
48657
48685
|
&:checked {
|
|
48658
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
48659
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
48660
|
-
<circle r="2" fill="#FFF"/>
|
|
48661
|
-
</svg>
|
|
48662
|
-
`)}");
|
|
48686
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
48663
48687
|
background-color: ${ACTION_COLOR};
|
|
48664
48688
|
border-color: ${ACTION_COLOR};
|
|
48665
48689
|
}
|
|
48690
|
+
|
|
48691
|
+
&:focus {
|
|
48692
|
+
outline: none;
|
|
48693
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
48694
|
+
border-color: ${ACTION_COLOR};
|
|
48695
|
+
}
|
|
48666
48696
|
}
|
|
48667
48697
|
}
|
|
48668
48698
|
`;
|
|
@@ -53382,7 +53412,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
53382
53412
|
}
|
|
53383
53413
|
onSelectionChanged(ranges) {
|
|
53384
53414
|
this.state.rangeHasChanged = true;
|
|
53385
|
-
|
|
53415
|
+
if (ranges.length === 0) {
|
|
53416
|
+
this.state.range = void 0;
|
|
53417
|
+
return;
|
|
53418
|
+
}
|
|
53419
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
53420
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
53421
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
53386
53422
|
}
|
|
53387
53423
|
onSelectionConfirmed() {
|
|
53388
53424
|
if (this.state.range) {
|
|
@@ -59763,6 +59799,7 @@ var CarouselPlugin = class extends CorePlugin {
|
|
|
59763
59799
|
return "Success";
|
|
59764
59800
|
case "UPDATE_CAROUSEL":
|
|
59765
59801
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
59802
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
59766
59803
|
return "Success";
|
|
59767
59804
|
}
|
|
59768
59805
|
return "Success";
|
|
@@ -61357,14 +61394,16 @@ var FormulaDependencyGraph = class {
|
|
|
61357
61394
|
*/
|
|
61358
61395
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
61359
61396
|
visited = visited.copy();
|
|
61397
|
+
let initialRangesToRemove = visited.copy();
|
|
61360
61398
|
const queue = Array.from(ranges).reverse();
|
|
61361
61399
|
while (queue.length > 0) {
|
|
61362
61400
|
const range = queue.pop();
|
|
61363
61401
|
visited.add(range);
|
|
61364
61402
|
const impactedRanges = this.rTree.search(range);
|
|
61365
61403
|
queue.push(...impactedRanges.difference(visited));
|
|
61404
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
61366
61405
|
}
|
|
61367
|
-
for (const range of
|
|
61406
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
61368
61407
|
return visited;
|
|
61369
61408
|
}
|
|
61370
61409
|
};
|
|
@@ -72914,6 +72953,9 @@ css`
|
|
|
72914
72953
|
position: absolute;
|
|
72915
72954
|
cursor: pointer;
|
|
72916
72955
|
}
|
|
72956
|
+
.o-grid.o-dashboard-grid {
|
|
72957
|
+
background: #ffffff;
|
|
72958
|
+
}
|
|
72917
72959
|
`;
|
|
72918
72960
|
var SpreadsheetDashboard = class extends Component {
|
|
72919
72961
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -74866,11 +74908,7 @@ css`
|
|
|
74866
74908
|
appearance: none;
|
|
74867
74909
|
-webkit-appearance: none;
|
|
74868
74910
|
-moz-appearance: none;
|
|
74869
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
74870
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
74871
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
74872
|
-
</svg>
|
|
74873
|
-
`)}")
|
|
74911
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
74874
74912
|
no-repeat right center;
|
|
74875
74913
|
text-overflow: ellipsis;
|
|
74876
74914
|
|
|
@@ -79454,6 +79492,6 @@ const chartHelpers = {
|
|
|
79454
79492
|
//#endregion
|
|
79455
79493
|
export { AbstractCellClipboardHandler, AbstractChart, AbstractFigureClipboardHandler, CellErrorType, ClientDisconnectedError, CommandResult, CorePlugin, CoreViewPlugin, DispatchResult, EvaluationError, LocalTransportService, Model, PivotRuntimeDefinition, Registry, Revision, SPREADSHEET_DIMENSIONS, Spreadsheet, SpreadsheetPivotTable, UIPlugin, __info__, addFunction, addRenderingLayer, astToFormula, chartHelpers, compile, compileTokens, components, constants, convertAstNodes, coreTypes, findCellInNewZone, functionCache, getCaretDownSvg, getCaretUpSvg, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
79456
79494
|
|
|
79457
|
-
__info__.version = "19.0.
|
|
79458
|
-
__info__.date = "2026-
|
|
79459
|
-
__info__.hash = "
|
|
79495
|
+
__info__.version = "19.0.49";
|
|
79496
|
+
__info__.date = "2026-09-04T07:28:54.520Z";
|
|
79497
|
+
__info__.hash = "3926688";
|
|
@@ -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.0.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 19.0.49
|
|
6
|
+
* @date 2026-09-04T07:28:54.520Z
|
|
7
|
+
* @hash 3926688
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -19424,10 +19424,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
19424
19424
|
case "bar":
|
|
19425
19425
|
case "line":
|
|
19426
19426
|
case "radar":
|
|
19427
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
19427
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
19428
19428
|
break;
|
|
19429
19429
|
case "funnel":
|
|
19430
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
19430
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
19431
19431
|
break;
|
|
19432
19432
|
}
|
|
19433
19433
|
ctx.restore();
|
|
@@ -19468,7 +19468,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
19468
19468
|
}
|
|
19469
19469
|
}
|
|
19470
19470
|
}
|
|
19471
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
19471
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
19472
19472
|
const textsPositions = {};
|
|
19473
19473
|
for (const dataset of chart._metasets) {
|
|
19474
19474
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -19483,7 +19483,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
19483
19483
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
19484
19484
|
const PADDING = 3;
|
|
19485
19485
|
let xPosition;
|
|
19486
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
19486
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
19487
19487
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
19488
19488
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
19489
19489
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -19719,6 +19719,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
19719
19719
|
hidden,
|
|
19720
19720
|
borderColor,
|
|
19721
19721
|
backgroundColor: borderColor,
|
|
19722
|
+
pointBackgroundColor: borderColor,
|
|
19722
19723
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
19723
19724
|
};
|
|
19724
19725
|
if (fill) {
|
|
@@ -29573,9 +29574,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29573
29574
|
compositionActive = false;
|
|
29574
29575
|
spreadsheetRect = useSpreadsheetRect();
|
|
29575
29576
|
lastHoveredTokenIndex = void 0;
|
|
29576
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
29577
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
29577
29578
|
const selection = this.contentHelper.getCurrentSelection();
|
|
29578
|
-
|
|
29579
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
29580
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
29579
29581
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
29580
29582
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
29581
29583
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -29892,7 +29894,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29892
29894
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
29893
29895
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
29894
29896
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
29895
|
-
this.
|
|
29897
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
29898
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
29896
29899
|
}
|
|
29897
29900
|
}
|
|
29898
29901
|
/**
|
|
@@ -31497,6 +31500,42 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31497
31500
|
}
|
|
31498
31501
|
};
|
|
31499
31502
|
|
|
31503
|
+
//#endregion
|
|
31504
|
+
//#region src/components/icons/raw_svgs.ts
|
|
31505
|
+
/**
|
|
31506
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
31507
|
+
*
|
|
31508
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
31509
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
31510
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
31511
|
+
* because it relies on regular expressions.
|
|
31512
|
+
*
|
|
31513
|
+
* Do not inline these constants.
|
|
31514
|
+
*/
|
|
31515
|
+
const CHECK_SVG = `
|
|
31516
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
31517
|
+
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
31518
|
+
</svg>
|
|
31519
|
+
`;
|
|
31520
|
+
const CIRCLE_SVG = `
|
|
31521
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
31522
|
+
<circle r="2" fill="#FFF"/>
|
|
31523
|
+
</svg>
|
|
31524
|
+
`;
|
|
31525
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
31526
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31527
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31528
|
+
</svg>
|
|
31529
|
+
`;
|
|
31530
|
+
const CURSOR_SVG = `
|
|
31531
|
+
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
31532
|
+
`;
|
|
31533
|
+
const CARET_DOWN_SVG = `
|
|
31534
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
31535
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
31536
|
+
</svg>
|
|
31537
|
+
`;
|
|
31538
|
+
|
|
31500
31539
|
//#endregion
|
|
31501
31540
|
//#region src/components/side_panel/components/section/section.ts
|
|
31502
31541
|
var Section = class extends _odoo_owl.Component {
|
|
@@ -31523,11 +31562,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
31523
31562
|
cursor: pointer;
|
|
31524
31563
|
border: 1px solid ${GRAY_300};
|
|
31525
31564
|
background-position: 1px 1px;
|
|
31526
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
31527
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
31528
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
31529
|
-
</svg>
|
|
31530
|
-
`)}");
|
|
31565
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
31531
31566
|
}
|
|
31532
31567
|
`;
|
|
31533
31568
|
var RoundColorPicker = class extends _odoo_owl.Component {
|
|
@@ -32788,11 +32823,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
32788
32823
|
|
|
32789
32824
|
//#endregion
|
|
32790
32825
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
32791
|
-
const CHECK_SVG = `
|
|
32792
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
32793
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
32794
|
-
</svg>
|
|
32795
|
-
`;
|
|
32796
32826
|
const CHECKBOX_WIDTH = 14;
|
|
32797
32827
|
css`
|
|
32798
32828
|
label.o-checkbox {
|
|
@@ -45024,9 +45054,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
45024
45054
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
45025
45055
|
css`
|
|
45026
45056
|
.o-paint-format-cursor {
|
|
45027
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
45028
|
-
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="14" height="16"><path d="M6.5.4c1.3-.8 2.9-.1 3.8 1.4l2.9 5.1c.2.4.9 1.6-.4 2.3l-1.6.9 1.8 3.1c.2.4.1 1-.2 1.2l-1.6 1c-.3.1-.9 0-1.1-.4l-1.8-3.1-1.6 1c-.6.4-1.7 0-2.2-.8L0 4.3"/><path fill="#fff" d="M9.1 2a1.4 1.1 60 0 0-1.7-.6L5.5 2.5l.9 1.6-1 .6-.9-1.6-.6.4 1.8 3.1-1.3.7-1.8-3.1-1 .6 3.8 6.6 6.8-3.98M3.9 8.8 10.82 5l.795 1.4-6.81 3.96"/></svg>
|
|
45029
|
-
`)}"), auto;
|
|
45057
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
45030
45058
|
}
|
|
45031
45059
|
`;
|
|
45032
45060
|
function useCellHovered(env, gridRef) {
|
|
@@ -48657,14 +48685,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
48657
48685
|
border-radius: 8px;
|
|
48658
48686
|
|
|
48659
48687
|
&:checked {
|
|
48660
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
48661
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
48662
|
-
<circle r="2" fill="#FFF"/>
|
|
48663
|
-
</svg>
|
|
48664
|
-
`)}");
|
|
48688
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
48665
48689
|
background-color: ${ACTION_COLOR};
|
|
48666
48690
|
border-color: ${ACTION_COLOR};
|
|
48667
48691
|
}
|
|
48692
|
+
|
|
48693
|
+
&:focus {
|
|
48694
|
+
outline: none;
|
|
48695
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
48696
|
+
border-color: ${ACTION_COLOR};
|
|
48697
|
+
}
|
|
48668
48698
|
}
|
|
48669
48699
|
}
|
|
48670
48700
|
`;
|
|
@@ -53384,7 +53414,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
53384
53414
|
}
|
|
53385
53415
|
onSelectionChanged(ranges) {
|
|
53386
53416
|
this.state.rangeHasChanged = true;
|
|
53387
|
-
|
|
53417
|
+
if (ranges.length === 0) {
|
|
53418
|
+
this.state.range = void 0;
|
|
53419
|
+
return;
|
|
53420
|
+
}
|
|
53421
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
53422
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
53423
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
53388
53424
|
}
|
|
53389
53425
|
onSelectionConfirmed() {
|
|
53390
53426
|
if (this.state.range) {
|
|
@@ -59765,6 +59801,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
59765
59801
|
return "Success";
|
|
59766
59802
|
case "UPDATE_CAROUSEL":
|
|
59767
59803
|
if (!this.carousels[cmd.sheetId]?.[cmd.figureId]) return "InvalidFigureId";
|
|
59804
|
+
for (const item of cmd.definition.items) if (item.type === "chart" && !this.getters.getChart(item.chartId)) return "ChartDoesNotExist";
|
|
59768
59805
|
return "Success";
|
|
59769
59806
|
}
|
|
59770
59807
|
return "Success";
|
|
@@ -61359,14 +61396,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
61359
61396
|
*/
|
|
61360
61397
|
getCellsDependingOn(ranges, visited = new RangeSet()) {
|
|
61361
61398
|
visited = visited.copy();
|
|
61399
|
+
let initialRangesToRemove = visited.copy();
|
|
61362
61400
|
const queue = Array.from(ranges).reverse();
|
|
61363
61401
|
while (queue.length > 0) {
|
|
61364
61402
|
const range = queue.pop();
|
|
61365
61403
|
visited.add(range);
|
|
61366
61404
|
const impactedRanges = this.rTree.search(range);
|
|
61367
61405
|
queue.push(...impactedRanges.difference(visited));
|
|
61406
|
+
initialRangesToRemove = initialRangesToRemove.difference(impactedRanges);
|
|
61368
61407
|
}
|
|
61369
|
-
for (const range of
|
|
61408
|
+
for (const range of initialRangesToRemove) visited.delete(range);
|
|
61370
61409
|
return visited;
|
|
61371
61410
|
}
|
|
61372
61411
|
};
|
|
@@ -72916,6 +72955,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
72916
72955
|
position: absolute;
|
|
72917
72956
|
cursor: pointer;
|
|
72918
72957
|
}
|
|
72958
|
+
.o-grid.o-dashboard-grid {
|
|
72959
|
+
background: #ffffff;
|
|
72960
|
+
}
|
|
72919
72961
|
`;
|
|
72920
72962
|
var SpreadsheetDashboard = class extends _odoo_owl.Component {
|
|
72921
72963
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -74868,11 +74910,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
74868
74910
|
appearance: none;
|
|
74869
74911
|
-webkit-appearance: none;
|
|
74870
74912
|
-moz-appearance: none;
|
|
74871
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
74872
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
74873
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
74874
|
-
</svg>
|
|
74875
|
-
`)}")
|
|
74913
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
74876
74914
|
no-repeat right center;
|
|
74877
74915
|
text-overflow: ellipsis;
|
|
74878
74916
|
|
|
@@ -79507,8 +79545,8 @@ exports.stores = stores;
|
|
|
79507
79545
|
exports.tokenColors = tokenColors;
|
|
79508
79546
|
exports.tokenize = tokenize;
|
|
79509
79547
|
|
|
79510
|
-
__info__.version = "19.0.
|
|
79511
|
-
__info__.date = "2026-
|
|
79512
|
-
__info__.hash = "
|
|
79548
|
+
__info__.version = "19.0.49";
|
|
79549
|
+
__info__.date = "2026-09-04T07:28:54.520Z";
|
|
79550
|
+
__info__.hash = "3926688";
|
|
79513
79551
|
|
|
79514
79552
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|