@odoo/o-spreadsheet 18.4.52 → 18.4.54
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 18.4.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.4.54
|
|
6
|
+
* @date 2026-09-04T07:09:42.871Z
|
|
7
|
+
* @hash 303fa73
|
|
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 18.4.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.4.54
|
|
6
|
+
* @date 2026-09-04T07:09:41.203Z
|
|
7
|
+
* @hash 303fa73
|
|
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";
|
|
@@ -18030,10 +18030,10 @@ const chartShowValuesPlugin = {
|
|
|
18030
18030
|
case "bar":
|
|
18031
18031
|
case "line":
|
|
18032
18032
|
case "radar":
|
|
18033
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
18033
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
18034
18034
|
break;
|
|
18035
18035
|
case "funnel":
|
|
18036
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
18036
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
18037
18037
|
break;
|
|
18038
18038
|
}
|
|
18039
18039
|
ctx.restore();
|
|
@@ -18074,7 +18074,7 @@ function drawLineOrBarOrRadarChartValues(chart, options, ctx) {
|
|
|
18074
18074
|
}
|
|
18075
18075
|
}
|
|
18076
18076
|
}
|
|
18077
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
18077
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
18078
18078
|
const textsPositions = {};
|
|
18079
18079
|
for (const dataset of chart._metasets) {
|
|
18080
18080
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -18089,7 +18089,7 @@ function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
|
18089
18089
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
18090
18090
|
const PADDING = 3;
|
|
18091
18091
|
let xPosition;
|
|
18092
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
18092
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
18093
18093
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
18094
18094
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
18095
18095
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -18325,6 +18325,7 @@ function getRadarChartDatasets(definition, args) {
|
|
|
18325
18325
|
hidden,
|
|
18326
18326
|
borderColor,
|
|
18327
18327
|
backgroundColor: borderColor,
|
|
18328
|
+
pointBackgroundColor: borderColor,
|
|
18328
18329
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
18329
18330
|
};
|
|
18330
18331
|
if (fill) {
|
|
@@ -28507,9 +28508,10 @@ var Composer = class extends Component {
|
|
|
28507
28508
|
compositionActive = false;
|
|
28508
28509
|
spreadsheetRect = useSpreadsheetRect();
|
|
28509
28510
|
lastHoveredTokenIndex = void 0;
|
|
28510
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
28511
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
28511
28512
|
const selection = this.contentHelper.getCurrentSelection();
|
|
28512
|
-
|
|
28513
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
28514
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
28513
28515
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
28514
28516
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
28515
28517
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -28825,7 +28827,8 @@ var Composer = class extends Component {
|
|
|
28825
28827
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
28826
28828
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
28827
28829
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
28828
|
-
this.
|
|
28830
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
28831
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
28829
28832
|
}
|
|
28830
28833
|
}
|
|
28831
28834
|
/**
|
|
@@ -29601,6 +29604,42 @@ var ColorPicker = class extends Component {
|
|
|
29601
29604
|
}
|
|
29602
29605
|
};
|
|
29603
29606
|
|
|
29607
|
+
//#endregion
|
|
29608
|
+
//#region src/components/icons/raw_svgs.ts
|
|
29609
|
+
/**
|
|
29610
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
29611
|
+
*
|
|
29612
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
29613
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
29614
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
29615
|
+
* because it relies on regular expressions.
|
|
29616
|
+
*
|
|
29617
|
+
* Do not inline these constants.
|
|
29618
|
+
*/
|
|
29619
|
+
const CHECK_SVG = `
|
|
29620
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
29621
|
+
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
29622
|
+
</svg>
|
|
29623
|
+
`;
|
|
29624
|
+
const CIRCLE_SVG = `
|
|
29625
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
29626
|
+
<circle r="2" fill="#FFF"/>
|
|
29627
|
+
</svg>
|
|
29628
|
+
`;
|
|
29629
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
29630
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29631
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29632
|
+
</svg>
|
|
29633
|
+
`;
|
|
29634
|
+
const CURSOR_SVG = `
|
|
29635
|
+
<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>
|
|
29636
|
+
`;
|
|
29637
|
+
const CARET_DOWN_SVG = `
|
|
29638
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
29639
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
29640
|
+
</svg>
|
|
29641
|
+
`;
|
|
29642
|
+
|
|
29604
29643
|
//#endregion
|
|
29605
29644
|
//#region src/components/side_panel/components/section/section.ts
|
|
29606
29645
|
var Section = class extends Component {
|
|
@@ -29627,11 +29666,7 @@ css`
|
|
|
29627
29666
|
cursor: pointer;
|
|
29628
29667
|
border: 1px solid ${GRAY_300};
|
|
29629
29668
|
background-position: 1px 1px;
|
|
29630
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
29631
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29632
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29633
|
-
</svg>
|
|
29634
|
-
`)}");
|
|
29669
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
29635
29670
|
}
|
|
29636
29671
|
`;
|
|
29637
29672
|
var RoundColorPicker = class extends Component {
|
|
@@ -30889,11 +30924,6 @@ var FilterMenuCriterion = class extends Component {
|
|
|
30889
30924
|
|
|
30890
30925
|
//#endregion
|
|
30891
30926
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
30892
|
-
const CHECK_SVG = `
|
|
30893
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
30894
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
30895
|
-
</svg>
|
|
30896
|
-
`;
|
|
30897
30927
|
const CHECKBOX_WIDTH = 14;
|
|
30898
30928
|
css`
|
|
30899
30929
|
label.o-checkbox {
|
|
@@ -41016,9 +41046,7 @@ var HoveredIconStore = class extends SpreadsheetStore {
|
|
|
41016
41046
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
41017
41047
|
css`
|
|
41018
41048
|
.o-paint-format-cursor {
|
|
41019
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
41020
|
-
<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>
|
|
41021
|
-
`)}"), auto;
|
|
41049
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
41022
41050
|
}
|
|
41023
41051
|
`;
|
|
41024
41052
|
function useCellHovered(env, gridRef) {
|
|
@@ -44317,14 +44345,16 @@ css`
|
|
|
44317
44345
|
border-radius: 8px;
|
|
44318
44346
|
|
|
44319
44347
|
&:checked {
|
|
44320
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
44321
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
44322
|
-
<circle r="2" fill="#FFF"/>
|
|
44323
|
-
</svg>
|
|
44324
|
-
`)}");
|
|
44348
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
44325
44349
|
background-color: ${ACTION_COLOR};
|
|
44326
44350
|
border-color: ${ACTION_COLOR};
|
|
44327
44351
|
}
|
|
44352
|
+
|
|
44353
|
+
&:focus {
|
|
44354
|
+
outline: none;
|
|
44355
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
44356
|
+
border-color: ${ACTION_COLOR};
|
|
44357
|
+
}
|
|
44328
44358
|
}
|
|
44329
44359
|
}
|
|
44330
44360
|
`;
|
|
@@ -50173,7 +50203,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
50173
50203
|
}
|
|
50174
50204
|
onSelectionChanged(ranges) {
|
|
50175
50205
|
this.state.rangeHasChanged = true;
|
|
50176
|
-
|
|
50206
|
+
if (ranges.length === 0) {
|
|
50207
|
+
this.state.range = void 0;
|
|
50208
|
+
return;
|
|
50209
|
+
}
|
|
50210
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
50211
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
50212
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
50177
50213
|
}
|
|
50178
50214
|
onSelectionConfirmed() {
|
|
50179
50215
|
if (this.state.range) {
|
|
@@ -57785,6 +57821,16 @@ var FormulaDependencyGraph = class {
|
|
|
57785
57821
|
getCellsDependingOn(ranges, ignore) {
|
|
57786
57822
|
const visited = this.createEmptyPositionSet();
|
|
57787
57823
|
const queue = Array.from(ranges).reverse();
|
|
57824
|
+
const initialPositionsToRemove = this.createEmptyPositionSet();
|
|
57825
|
+
for (const range of ranges) {
|
|
57826
|
+
const zone = range.zone;
|
|
57827
|
+
const sheetId = range.sheetId;
|
|
57828
|
+
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) initialPositionsToRemove.add({
|
|
57829
|
+
sheetId,
|
|
57830
|
+
col,
|
|
57831
|
+
row
|
|
57832
|
+
});
|
|
57833
|
+
}
|
|
57788
57834
|
while (queue.length > 0) {
|
|
57789
57835
|
const range = queue.pop();
|
|
57790
57836
|
const zone = range.zone;
|
|
@@ -57796,9 +57842,13 @@ var FormulaDependencyGraph = class {
|
|
|
57796
57842
|
});
|
|
57797
57843
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
57798
57844
|
const nextInQueue = {};
|
|
57799
|
-
for (const position of impactedPositions)
|
|
57800
|
-
if (
|
|
57801
|
-
|
|
57845
|
+
for (const position of impactedPositions) {
|
|
57846
|
+
if (ignore.has(position)) continue;
|
|
57847
|
+
initialPositionsToRemove.delete(position);
|
|
57848
|
+
if (!visited.has(position)) {
|
|
57849
|
+
if (!nextInQueue[position.sheetId]) nextInQueue[position.sheetId] = [];
|
|
57850
|
+
nextInQueue[position.sheetId].push(positionToZone(position));
|
|
57851
|
+
}
|
|
57802
57852
|
}
|
|
57803
57853
|
for (const sheetId in nextInQueue) {
|
|
57804
57854
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -57808,15 +57858,7 @@ var FormulaDependencyGraph = class {
|
|
|
57808
57858
|
})));
|
|
57809
57859
|
}
|
|
57810
57860
|
}
|
|
57811
|
-
for (const
|
|
57812
|
-
const zone = range.zone;
|
|
57813
|
-
const sheetId = range.sheetId;
|
|
57814
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
57815
|
-
sheetId,
|
|
57816
|
-
col,
|
|
57817
|
-
row
|
|
57818
|
-
});
|
|
57819
|
-
}
|
|
57861
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
57820
57862
|
return visited;
|
|
57821
57863
|
}
|
|
57822
57864
|
};
|
|
@@ -69031,6 +69073,9 @@ css`
|
|
|
69031
69073
|
position: absolute;
|
|
69032
69074
|
cursor: pointer;
|
|
69033
69075
|
}
|
|
69076
|
+
.o-grid.o-dashboard-grid {
|
|
69077
|
+
background: #ffffff;
|
|
69078
|
+
}
|
|
69034
69079
|
`;
|
|
69035
69080
|
var SpreadsheetDashboard = class extends Component {
|
|
69036
69081
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -70980,11 +71025,7 @@ css`
|
|
|
70980
71025
|
appearance: none;
|
|
70981
71026
|
-webkit-appearance: none;
|
|
70982
71027
|
-moz-appearance: none;
|
|
70983
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
70984
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
70985
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
70986
|
-
</svg>
|
|
70987
|
-
`)}")
|
|
71028
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
70988
71029
|
no-repeat right center;
|
|
70989
71030
|
text-overflow: ellipsis;
|
|
70990
71031
|
|
|
@@ -75436,6 +75477,6 @@ const chartHelpers = {
|
|
|
75436
75477
|
//#endregion
|
|
75437
75478
|
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, helpers, hooks, invalidateCFEvaluationCommands, invalidateChartEvaluationCommands, invalidateDependenciesCommands, invalidateEvaluationCommands, iterateAstNodes, links, load, parse, parseTokens, readonlyAllowedCommands, registries, setDefaultSheetViewSize, setTranslationMethod, stores, tokenColors, tokenize };
|
|
75438
75479
|
|
|
75439
|
-
__info__.version = "18.4.
|
|
75440
|
-
__info__.date = "2026-
|
|
75441
|
-
__info__.hash = "
|
|
75480
|
+
__info__.version = "18.4.54";
|
|
75481
|
+
__info__.date = "2026-09-04T07:09:41.203Z";
|
|
75482
|
+
__info__.hash = "303fa73";
|
|
@@ -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 18.4.
|
|
6
|
-
* @date 2026-
|
|
7
|
-
* @hash
|
|
5
|
+
* @version 18.4.54
|
|
6
|
+
* @date 2026-09-04T07:09:41.203Z
|
|
7
|
+
* @hash 303fa73
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
(function(exports, _odoo_owl) {
|
|
@@ -18032,10 +18032,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
18032
18032
|
case "bar":
|
|
18033
18033
|
case "line":
|
|
18034
18034
|
case "radar":
|
|
18035
|
-
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
18035
|
+
options.horizontal ? drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: true }) : drawLineOrBarOrRadarChartValues(chart, options, ctx);
|
|
18036
18036
|
break;
|
|
18037
18037
|
case "funnel":
|
|
18038
|
-
drawHorizontalBarChartValues(chart, options, ctx);
|
|
18038
|
+
drawHorizontalBarChartValues(chart, options, ctx, { offsetFromAxisOrigin: false });
|
|
18039
18039
|
break;
|
|
18040
18040
|
}
|
|
18041
18041
|
ctx.restore();
|
|
@@ -18076,7 +18076,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
18076
18076
|
}
|
|
18077
18077
|
}
|
|
18078
18078
|
}
|
|
18079
|
-
function drawHorizontalBarChartValues(chart, options, ctx) {
|
|
18079
|
+
function drawHorizontalBarChartValues(chart, options, ctx, args) {
|
|
18080
18080
|
const textsPositions = {};
|
|
18081
18081
|
for (const dataset of chart._metasets) {
|
|
18082
18082
|
if (isTrendLineAxis(dataset.xAxisID)) return;
|
|
@@ -18091,7 +18091,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
18091
18091
|
const distanceFromAxisOrigin = Math.abs(point.x - xZeroLine);
|
|
18092
18092
|
const PADDING = 3;
|
|
18093
18093
|
let xPosition;
|
|
18094
|
-
if (distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
18094
|
+
if (args.offsetFromAxisOrigin && distanceFromAxisOrigin < textWidth) xPosition = value < 0 ? xZeroLine - textWidth / 2 - PADDING : xZeroLine + textWidth / 2 + PADDING;
|
|
18095
18095
|
else xPosition = value < 0 ? point.x + point.width / 2 : point.x - point.width / 2;
|
|
18096
18096
|
if (!textsPositions[yPosition]) textsPositions[yPosition] = [];
|
|
18097
18097
|
for (const otherPosition of textsPositions[yPosition]) if (Math.abs(otherPosition - xPosition) < textWidth) xPosition = value < 0 ? otherPosition - textWidth - PADDING : otherPosition + textWidth + PADDING;
|
|
@@ -18327,6 +18327,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
18327
18327
|
hidden,
|
|
18328
18328
|
borderColor,
|
|
18329
18329
|
backgroundColor: borderColor,
|
|
18330
|
+
pointBackgroundColor: borderColor,
|
|
18330
18331
|
pointRadius: definition.hideDataMarkers ? 0 : 3
|
|
18331
18332
|
};
|
|
18332
18333
|
if (fill) {
|
|
@@ -28509,9 +28510,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28509
28510
|
compositionActive = false;
|
|
28510
28511
|
spreadsheetRect = useSpreadsheetRect();
|
|
28511
28512
|
lastHoveredTokenIndex = void 0;
|
|
28512
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
28513
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
28513
28514
|
const selection = this.contentHelper.getCurrentSelection();
|
|
28514
|
-
|
|
28515
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
28516
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
28515
28517
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
28516
28518
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
28517
28519
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -28827,7 +28829,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28827
28829
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
28828
28830
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
28829
28831
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
28830
|
-
this.
|
|
28832
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
28833
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
28831
28834
|
}
|
|
28832
28835
|
}
|
|
28833
28836
|
/**
|
|
@@ -29603,6 +29606,42 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29603
29606
|
}
|
|
29604
29607
|
};
|
|
29605
29608
|
|
|
29609
|
+
//#endregion
|
|
29610
|
+
//#region src/components/icons/raw_svgs.ts
|
|
29611
|
+
/**
|
|
29612
|
+
* SVG markup used in `css` tagged templates as `data:image/svg+xml` URIs.
|
|
29613
|
+
*
|
|
29614
|
+
* Keep these values in a separate module so Rolldown references them instead
|
|
29615
|
+
* of inlining them into template literals. Inlining produces nested template
|
|
29616
|
+
* literals, which the downstream `rjsmin` minifier cannot parse correctly
|
|
29617
|
+
* because it relies on regular expressions.
|
|
29618
|
+
*
|
|
29619
|
+
* Do not inline these constants.
|
|
29620
|
+
*/
|
|
29621
|
+
const CHECK_SVG = `
|
|
29622
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
29623
|
+
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
29624
|
+
</svg>
|
|
29625
|
+
`;
|
|
29626
|
+
const CIRCLE_SVG = `
|
|
29627
|
+
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
29628
|
+
<circle r="2" fill="#FFF"/>
|
|
29629
|
+
</svg>
|
|
29630
|
+
`;
|
|
29631
|
+
const TRANSPARENT_BACKGROUND_SVG = `
|
|
29632
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29633
|
+
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29634
|
+
</svg>
|
|
29635
|
+
`;
|
|
29636
|
+
const CURSOR_SVG = `
|
|
29637
|
+
<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>
|
|
29638
|
+
`;
|
|
29639
|
+
const CARET_DOWN_SVG = `
|
|
29640
|
+
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
29641
|
+
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
29642
|
+
</svg>
|
|
29643
|
+
`;
|
|
29644
|
+
|
|
29606
29645
|
//#endregion
|
|
29607
29646
|
//#region src/components/side_panel/components/section/section.ts
|
|
29608
29647
|
var Section = class extends _odoo_owl.Component {
|
|
@@ -29629,11 +29668,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29629
29668
|
cursor: pointer;
|
|
29630
29669
|
border: 1px solid ${GRAY_300};
|
|
29631
29670
|
background-position: 1px 1px;
|
|
29632
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
29633
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29634
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29635
|
-
</svg>
|
|
29636
|
-
`)}");
|
|
29671
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
29637
29672
|
}
|
|
29638
29673
|
`;
|
|
29639
29674
|
var RoundColorPicker = class extends _odoo_owl.Component {
|
|
@@ -30891,11 +30926,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
30891
30926
|
|
|
30892
30927
|
//#endregion
|
|
30893
30928
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
30894
|
-
const CHECK_SVG = `
|
|
30895
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
30896
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
30897
|
-
</svg>
|
|
30898
|
-
`;
|
|
30899
30929
|
const CHECKBOX_WIDTH = 14;
|
|
30900
30930
|
css`
|
|
30901
30931
|
label.o-checkbox {
|
|
@@ -41018,9 +41048,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
41018
41048
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
41019
41049
|
css`
|
|
41020
41050
|
.o-paint-format-cursor {
|
|
41021
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
41022
|
-
<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>
|
|
41023
|
-
`)}"), auto;
|
|
41051
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
41024
41052
|
}
|
|
41025
41053
|
`;
|
|
41026
41054
|
function useCellHovered(env, gridRef) {
|
|
@@ -44319,14 +44347,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44319
44347
|
border-radius: 8px;
|
|
44320
44348
|
|
|
44321
44349
|
&:checked {
|
|
44322
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
44323
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
44324
|
-
<circle r="2" fill="#FFF"/>
|
|
44325
|
-
</svg>
|
|
44326
|
-
`)}");
|
|
44350
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
44327
44351
|
background-color: ${ACTION_COLOR};
|
|
44328
44352
|
border-color: ${ACTION_COLOR};
|
|
44329
44353
|
}
|
|
44354
|
+
|
|
44355
|
+
&:focus {
|
|
44356
|
+
outline: none;
|
|
44357
|
+
box-shadow: 0 0 0 0.25rem rgba(113, 75, 103, 0.25);
|
|
44358
|
+
border-color: ${ACTION_COLOR};
|
|
44359
|
+
}
|
|
44330
44360
|
}
|
|
44331
44361
|
}
|
|
44332
44362
|
`;
|
|
@@ -50175,7 +50205,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50175
50205
|
}
|
|
50176
50206
|
onSelectionChanged(ranges) {
|
|
50177
50207
|
this.state.rangeHasChanged = true;
|
|
50178
|
-
|
|
50208
|
+
if (ranges.length === 0) {
|
|
50209
|
+
this.state.range = void 0;
|
|
50210
|
+
return;
|
|
50211
|
+
}
|
|
50212
|
+
const sheetId = this.env.model.getters.getActiveSheetId();
|
|
50213
|
+
const range = this.env.model.getters.getRangeFromSheetXC(sheetId, ranges[0]);
|
|
50214
|
+
this.state.range = this.env.model.getters.getRangeString(range, "forceSheetReference", { useBoundedReference: true });
|
|
50179
50215
|
}
|
|
50180
50216
|
onSelectionConfirmed() {
|
|
50181
50217
|
if (this.state.range) {
|
|
@@ -57787,6 +57823,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57787
57823
|
getCellsDependingOn(ranges, ignore) {
|
|
57788
57824
|
const visited = this.createEmptyPositionSet();
|
|
57789
57825
|
const queue = Array.from(ranges).reverse();
|
|
57826
|
+
const initialPositionsToRemove = this.createEmptyPositionSet();
|
|
57827
|
+
for (const range of ranges) {
|
|
57828
|
+
const zone = range.zone;
|
|
57829
|
+
const sheetId = range.sheetId;
|
|
57830
|
+
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) initialPositionsToRemove.add({
|
|
57831
|
+
sheetId,
|
|
57832
|
+
col,
|
|
57833
|
+
row
|
|
57834
|
+
});
|
|
57835
|
+
}
|
|
57790
57836
|
while (queue.length > 0) {
|
|
57791
57837
|
const range = queue.pop();
|
|
57792
57838
|
const zone = range.zone;
|
|
@@ -57798,9 +57844,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57798
57844
|
});
|
|
57799
57845
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
57800
57846
|
const nextInQueue = {};
|
|
57801
|
-
for (const position of impactedPositions)
|
|
57802
|
-
if (
|
|
57803
|
-
|
|
57847
|
+
for (const position of impactedPositions) {
|
|
57848
|
+
if (ignore.has(position)) continue;
|
|
57849
|
+
initialPositionsToRemove.delete(position);
|
|
57850
|
+
if (!visited.has(position)) {
|
|
57851
|
+
if (!nextInQueue[position.sheetId]) nextInQueue[position.sheetId] = [];
|
|
57852
|
+
nextInQueue[position.sheetId].push(positionToZone(position));
|
|
57853
|
+
}
|
|
57804
57854
|
}
|
|
57805
57855
|
for (const sheetId in nextInQueue) {
|
|
57806
57856
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -57810,15 +57860,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57810
57860
|
})));
|
|
57811
57861
|
}
|
|
57812
57862
|
}
|
|
57813
|
-
for (const
|
|
57814
|
-
const zone = range.zone;
|
|
57815
|
-
const sheetId = range.sheetId;
|
|
57816
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
57817
|
-
sheetId,
|
|
57818
|
-
col,
|
|
57819
|
-
row
|
|
57820
|
-
});
|
|
57821
|
-
}
|
|
57863
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
57822
57864
|
return visited;
|
|
57823
57865
|
}
|
|
57824
57866
|
};
|
|
@@ -69033,6 +69075,9 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
69033
69075
|
position: absolute;
|
|
69034
69076
|
cursor: pointer;
|
|
69035
69077
|
}
|
|
69078
|
+
.o-grid.o-dashboard-grid {
|
|
69079
|
+
background: #ffffff;
|
|
69080
|
+
}
|
|
69036
69081
|
`;
|
|
69037
69082
|
var SpreadsheetDashboard = class extends _odoo_owl.Component {
|
|
69038
69083
|
static template = "o-spreadsheet-SpreadsheetDashboard";
|
|
@@ -70982,11 +71027,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
70982
71027
|
appearance: none;
|
|
70983
71028
|
-webkit-appearance: none;
|
|
70984
71029
|
-moz-appearance: none;
|
|
70985
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
70986
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
70987
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
70988
|
-
</svg>
|
|
70989
|
-
`)}")
|
|
71030
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
70990
71031
|
no-repeat right center;
|
|
70991
71032
|
text-overflow: ellipsis;
|
|
70992
71033
|
|
|
@@ -75487,8 +75528,8 @@ exports.stores = stores;
|
|
|
75487
75528
|
exports.tokenColors = tokenColors;
|
|
75488
75529
|
exports.tokenize = tokenize;
|
|
75489
75530
|
|
|
75490
|
-
__info__.version = "18.4.
|
|
75491
|
-
__info__.date = "2026-
|
|
75492
|
-
__info__.hash = "
|
|
75531
|
+
__info__.version = "18.4.54";
|
|
75532
|
+
__info__.date = "2026-09-04T07:09:41.203Z";
|
|
75533
|
+
__info__.hash = "303fa73";
|
|
75493
75534
|
|
|
75494
75535
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|