@odoo/o-spreadsheet 18.4.53 → 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;
|
|
@@ -28508,9 +28508,10 @@ var Composer = class extends Component {
|
|
|
28508
28508
|
compositionActive = false;
|
|
28509
28509
|
spreadsheetRect = useSpreadsheetRect();
|
|
28510
28510
|
lastHoveredTokenIndex = void 0;
|
|
28511
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
28511
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
28512
28512
|
const selection = this.contentHelper.getCurrentSelection();
|
|
28513
|
-
|
|
28513
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
28514
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
28514
28515
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
28515
28516
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
28516
28517
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -28826,7 +28827,8 @@ var Composer = class extends Component {
|
|
|
28826
28827
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
28827
28828
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
28828
28829
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
28829
|
-
this.
|
|
28830
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
28831
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
28830
28832
|
}
|
|
28831
28833
|
}
|
|
28832
28834
|
/**
|
|
@@ -29602,6 +29604,42 @@ var ColorPicker = class extends Component {
|
|
|
29602
29604
|
}
|
|
29603
29605
|
};
|
|
29604
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
|
+
|
|
29605
29643
|
//#endregion
|
|
29606
29644
|
//#region src/components/side_panel/components/section/section.ts
|
|
29607
29645
|
var Section = class extends Component {
|
|
@@ -29628,11 +29666,7 @@ css`
|
|
|
29628
29666
|
cursor: pointer;
|
|
29629
29667
|
border: 1px solid ${GRAY_300};
|
|
29630
29668
|
background-position: 1px 1px;
|
|
29631
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
29632
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29633
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29634
|
-
</svg>
|
|
29635
|
-
`)}");
|
|
29669
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
29636
29670
|
}
|
|
29637
29671
|
`;
|
|
29638
29672
|
var RoundColorPicker = class extends Component {
|
|
@@ -30890,11 +30924,6 @@ var FilterMenuCriterion = class extends Component {
|
|
|
30890
30924
|
|
|
30891
30925
|
//#endregion
|
|
30892
30926
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
30893
|
-
const CHECK_SVG = `
|
|
30894
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
30895
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
30896
|
-
</svg>
|
|
30897
|
-
`;
|
|
30898
30927
|
const CHECKBOX_WIDTH = 14;
|
|
30899
30928
|
css`
|
|
30900
30929
|
label.o-checkbox {
|
|
@@ -41017,9 +41046,7 @@ var HoveredIconStore = class extends SpreadsheetStore {
|
|
|
41017
41046
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
41018
41047
|
css`
|
|
41019
41048
|
.o-paint-format-cursor {
|
|
41020
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
41021
|
-
<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>
|
|
41022
|
-
`)}"), auto;
|
|
41049
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
41023
41050
|
}
|
|
41024
41051
|
`;
|
|
41025
41052
|
function useCellHovered(env, gridRef) {
|
|
@@ -44318,11 +44345,7 @@ css`
|
|
|
44318
44345
|
border-radius: 8px;
|
|
44319
44346
|
|
|
44320
44347
|
&:checked {
|
|
44321
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
44322
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
44323
|
-
<circle r="2" fill="#FFF"/>
|
|
44324
|
-
</svg>
|
|
44325
|
-
`)}");
|
|
44348
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
44326
44349
|
background-color: ${ACTION_COLOR};
|
|
44327
44350
|
border-color: ${ACTION_COLOR};
|
|
44328
44351
|
}
|
|
@@ -50180,7 +50203,13 @@ var PivotSpreadsheetSidePanel = class extends Component {
|
|
|
50180
50203
|
}
|
|
50181
50204
|
onSelectionChanged(ranges) {
|
|
50182
50205
|
this.state.rangeHasChanged = true;
|
|
50183
|
-
|
|
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 });
|
|
50184
50213
|
}
|
|
50185
50214
|
onSelectionConfirmed() {
|
|
50186
50215
|
if (this.state.range) {
|
|
@@ -57792,6 +57821,16 @@ var FormulaDependencyGraph = class {
|
|
|
57792
57821
|
getCellsDependingOn(ranges, ignore) {
|
|
57793
57822
|
const visited = this.createEmptyPositionSet();
|
|
57794
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
|
+
}
|
|
57795
57834
|
while (queue.length > 0) {
|
|
57796
57835
|
const range = queue.pop();
|
|
57797
57836
|
const zone = range.zone;
|
|
@@ -57803,9 +57842,13 @@ var FormulaDependencyGraph = class {
|
|
|
57803
57842
|
});
|
|
57804
57843
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
57805
57844
|
const nextInQueue = {};
|
|
57806
|
-
for (const position of impactedPositions)
|
|
57807
|
-
if (
|
|
57808
|
-
|
|
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
|
+
}
|
|
57809
57852
|
}
|
|
57810
57853
|
for (const sheetId in nextInQueue) {
|
|
57811
57854
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -57815,15 +57858,7 @@ var FormulaDependencyGraph = class {
|
|
|
57815
57858
|
})));
|
|
57816
57859
|
}
|
|
57817
57860
|
}
|
|
57818
|
-
for (const
|
|
57819
|
-
const zone = range.zone;
|
|
57820
|
-
const sheetId = range.sheetId;
|
|
57821
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
57822
|
-
sheetId,
|
|
57823
|
-
col,
|
|
57824
|
-
row
|
|
57825
|
-
});
|
|
57826
|
-
}
|
|
57861
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
57827
57862
|
return visited;
|
|
57828
57863
|
}
|
|
57829
57864
|
};
|
|
@@ -70990,11 +71025,7 @@ css`
|
|
|
70990
71025
|
appearance: none;
|
|
70991
71026
|
-webkit-appearance: none;
|
|
70992
71027
|
-moz-appearance: none;
|
|
70993
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
70994
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
70995
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
70996
|
-
</svg>
|
|
70997
|
-
`)}")
|
|
71028
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
70998
71029
|
no-repeat right center;
|
|
70999
71030
|
text-overflow: ellipsis;
|
|
71000
71031
|
|
|
@@ -75446,6 +75477,6 @@ const chartHelpers = {
|
|
|
75446
75477
|
//#endregion
|
|
75447
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 };
|
|
75448
75479
|
|
|
75449
|
-
__info__.version = "18.4.
|
|
75450
|
-
__info__.date = "2026-
|
|
75451
|
-
__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;
|
|
@@ -28510,9 +28510,10 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28510
28510
|
compositionActive = false;
|
|
28511
28511
|
spreadsheetRect = useSpreadsheetRect();
|
|
28512
28512
|
lastHoveredTokenIndex = void 0;
|
|
28513
|
-
debouncedHover = debounce((tokenIndex, hoveredRect) => {
|
|
28513
|
+
debouncedHover = debounce((tokenIndex, composerContent, hoveredRect) => {
|
|
28514
28514
|
const selection = this.contentHelper.getCurrentSelection();
|
|
28515
|
-
|
|
28515
|
+
const currentContent = this.props.composerStore.currentContent;
|
|
28516
|
+
if (selection.start !== selection.end || currentContent !== composerContent) return;
|
|
28516
28517
|
const currentHoveredContext = this.props.composerStore.hoveredTokens;
|
|
28517
28518
|
this.props.composerStore.hoverToken(tokenIndex);
|
|
28518
28519
|
if (!deepEquals(currentHoveredContext, this.props.composerStore.hoveredTokens)) this.composerState.hoveredRect = hoveredRect;
|
|
@@ -28828,7 +28829,8 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
28828
28829
|
onTokenHover(tokenIndex, hoveredRect) {
|
|
28829
28830
|
if (this.lastHoveredTokenIndex !== tokenIndex) {
|
|
28830
28831
|
this.lastHoveredTokenIndex = tokenIndex;
|
|
28831
|
-
this.
|
|
28832
|
+
const composerContent = this.props.composerStore.currentContent;
|
|
28833
|
+
this.debouncedHover(tokenIndex, composerContent, hoveredRect);
|
|
28832
28834
|
}
|
|
28833
28835
|
}
|
|
28834
28836
|
/**
|
|
@@ -29604,6 +29606,42 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29604
29606
|
}
|
|
29605
29607
|
};
|
|
29606
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
|
+
|
|
29607
29645
|
//#endregion
|
|
29608
29646
|
//#region src/components/side_panel/components/section/section.ts
|
|
29609
29647
|
var Section = class extends _odoo_owl.Component {
|
|
@@ -29630,11 +29668,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
29630
29668
|
cursor: pointer;
|
|
29631
29669
|
border: 1px solid ${GRAY_300};
|
|
29632
29670
|
background-position: 1px 1px;
|
|
29633
|
-
background-image: url("data:image/svg+xml,${encodeURIComponent(
|
|
29634
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="10">
|
|
29635
|
-
<path fill="#d9d9d9" d="M5 5h5v5H5zH0V0h5"/>
|
|
29636
|
-
</svg>
|
|
29637
|
-
`)}");
|
|
29671
|
+
background-image: url("data:image/svg+xml,${encodeURIComponent(TRANSPARENT_BACKGROUND_SVG)}");
|
|
29638
29672
|
}
|
|
29639
29673
|
`;
|
|
29640
29674
|
var RoundColorPicker = class extends _odoo_owl.Component {
|
|
@@ -30892,11 +30926,6 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
30892
30926
|
|
|
30893
30927
|
//#endregion
|
|
30894
30928
|
//#region src/components/side_panel/components/checkbox/checkbox.ts
|
|
30895
|
-
const CHECK_SVG = `
|
|
30896
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'>
|
|
30897
|
-
<path fill='none' stroke='#FFF' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/>
|
|
30898
|
-
</svg>
|
|
30899
|
-
`;
|
|
30900
30929
|
const CHECKBOX_WIDTH = 14;
|
|
30901
30930
|
css`
|
|
30902
30931
|
label.o-checkbox {
|
|
@@ -41019,9 +41048,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
41019
41048
|
//#region src/components/grid_overlay/grid_overlay.ts
|
|
41020
41049
|
css`
|
|
41021
41050
|
.o-paint-format-cursor {
|
|
41022
|
-
cursor: url("data:image/svg+xml,${encodeURIComponent(
|
|
41023
|
-
<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>
|
|
41024
|
-
`)}"), auto;
|
|
41051
|
+
cursor: url("data:image/svg+xml,${encodeURIComponent(CURSOR_SVG)}"), auto;
|
|
41025
41052
|
}
|
|
41026
41053
|
`;
|
|
41027
41054
|
function useCellHovered(env, gridRef) {
|
|
@@ -44320,11 +44347,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
44320
44347
|
border-radius: 8px;
|
|
44321
44348
|
|
|
44322
44349
|
&:checked {
|
|
44323
|
-
background: url("data:image/svg+xml,${encodeURIComponent(
|
|
44324
|
-
<svg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'>
|
|
44325
|
-
<circle r="2" fill="#FFF"/>
|
|
44326
|
-
</svg>
|
|
44327
|
-
`)}");
|
|
44350
|
+
background: url("data:image/svg+xml,${encodeURIComponent(CIRCLE_SVG)}");
|
|
44328
44351
|
background-color: ${ACTION_COLOR};
|
|
44329
44352
|
border-color: ${ACTION_COLOR};
|
|
44330
44353
|
}
|
|
@@ -50182,7 +50205,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
50182
50205
|
}
|
|
50183
50206
|
onSelectionChanged(ranges) {
|
|
50184
50207
|
this.state.rangeHasChanged = true;
|
|
50185
|
-
|
|
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 });
|
|
50186
50215
|
}
|
|
50187
50216
|
onSelectionConfirmed() {
|
|
50188
50217
|
if (this.state.range) {
|
|
@@ -57794,6 +57823,16 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57794
57823
|
getCellsDependingOn(ranges, ignore) {
|
|
57795
57824
|
const visited = this.createEmptyPositionSet();
|
|
57796
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
|
+
}
|
|
57797
57836
|
while (queue.length > 0) {
|
|
57798
57837
|
const range = queue.pop();
|
|
57799
57838
|
const zone = range.zone;
|
|
@@ -57805,9 +57844,13 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57805
57844
|
});
|
|
57806
57845
|
const impactedPositions = this.rTree.search(range).map((dep) => dep.data);
|
|
57807
57846
|
const nextInQueue = {};
|
|
57808
|
-
for (const position of impactedPositions)
|
|
57809
|
-
if (
|
|
57810
|
-
|
|
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
|
+
}
|
|
57811
57854
|
}
|
|
57812
57855
|
for (const sheetId in nextInQueue) {
|
|
57813
57856
|
const zones = recomputeZones(nextInQueue[sheetId], []);
|
|
@@ -57817,15 +57860,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
57817
57860
|
})));
|
|
57818
57861
|
}
|
|
57819
57862
|
}
|
|
57820
|
-
for (const
|
|
57821
|
-
const zone = range.zone;
|
|
57822
|
-
const sheetId = range.sheetId;
|
|
57823
|
-
for (let col = zone.left; col <= zone.right; col++) for (let row = zone.top; row <= zone.bottom; row++) visited.delete({
|
|
57824
|
-
sheetId,
|
|
57825
|
-
col,
|
|
57826
|
-
row
|
|
57827
|
-
});
|
|
57828
|
-
}
|
|
57863
|
+
for (const position of initialPositionsToRemove) visited.delete(position);
|
|
57829
57864
|
return visited;
|
|
57830
57865
|
}
|
|
57831
57866
|
};
|
|
@@ -70992,11 +71027,7 @@ stores.inject(MyMetaStore, storeInstance);
|
|
|
70992
71027
|
appearance: none;
|
|
70993
71028
|
-webkit-appearance: none;
|
|
70994
71029
|
-moz-appearance: none;
|
|
70995
|
-
background: transparent url("data:image/svg+xml,${encodeURIComponent(
|
|
70996
|
-
<svg xmlns='http://www.w3.org/2000/svg' width='7' height='4' viewBox='0 0 7 4'>
|
|
70997
|
-
<polygon fill='%23374151' points='3.5 4 7 0 0 0'/>
|
|
70998
|
-
</svg>
|
|
70999
|
-
`)}")
|
|
71030
|
+
background: transparent url("data:image/svg+xml,${encodeURIComponent(CARET_DOWN_SVG)}")
|
|
71000
71031
|
no-repeat right center;
|
|
71001
71032
|
text-overflow: ellipsis;
|
|
71002
71033
|
|
|
@@ -75497,8 +75528,8 @@ exports.stores = stores;
|
|
|
75497
75528
|
exports.tokenColors = tokenColors;
|
|
75498
75529
|
exports.tokenize = tokenize;
|
|
75499
75530
|
|
|
75500
|
-
__info__.version = "18.4.
|
|
75501
|
-
__info__.date = "2026-
|
|
75502
|
-
__info__.hash = "
|
|
75531
|
+
__info__.version = "18.4.54";
|
|
75532
|
+
__info__.date = "2026-09-04T07:09:41.203Z";
|
|
75533
|
+
__info__.hash = "303fa73";
|
|
75503
75534
|
|
|
75504
75535
|
})(this.o_spreadsheet = this.o_spreadsheet || {}, owl);
|